zoj 1508 Intervals 差分约束系统

来源:互联网 发布:h5 吊起淘宝app 编辑:程序博客网 时间:2024/05/16 05:27

题目大意:输入n个区间,每个区间有3个值,ai,bi,ci代表在区间[ai,bi]上至少要有ci个整数点,现在要满足所有区间的自身条件,问最少选多少个点。

类似zoj 2770可以建模成一个差分约束系统.

 

 

#include <stdio.h>#include <string.h>int n,dist[50010];struct e{int u,v,w;}edges[50010];int mn,mx;bool bellman(){int i,t;int f=1;while(f){f=0;for(i=0;i<n;i++){t=dist[edges[i].u]+edges[i].w;if(dist[edges[i].v]>t){dist[edges[i].v]=t;f=1;}}for(i=mn;i<=mx;i++){t=dist[i-1]+1;if(dist[i]>t){dist[i]=t;f=1;}}for(i=mx;i>=mn;i--){t=dist[i];if(dist[i-1]>t){dist[i-1]=t;f=1;}}}return true;}int main(){int i,u,v,w;while(scanf("%d",&n)!=EOF){memset(dist,0,sizeof(dist));mx=1;mn=99999;for(i=0;i<n;i++){scanf("%d%d%d",&u,&v,&w);edges[i].u=v;edges[i].v=u-1;edges[i].w=-w;if(mn>u)mn=u;if(mx<v)mx=v;}bellman();printf("%d\n",dist[mx]-dist[mn-1]);}return 0;}


 

 

 

原创粉丝点击