POJ 1201 Intervals
2013-10-14 11:29
337 查看
这是POJ 1716 升级版。
意思是差不多的,但这三个限制条件是:
1、对于区间,必定有num[start]>=num[end]-这区间内至少有的点的个数;
2、对于整数点,必有num[i]<=num[i+1];
3、对于整数点,必有num[i+1]<=num[i]+1;
下面是代码:
意思是差不多的,但这三个限制条件是:
1、对于区间,必定有num[start]>=num[end]-这区间内至少有的点的个数;
2、对于整数点,必有num[i]<=num[i+1];
3、对于整数点,必有num[i+1]<=num[i]+1;
下面是代码:
#include <stdio.h> #include <string.h> struct node { int x,y,w; } qu[50006]; int num[50006]; int main() { int n; while(scanf("%d",&n)!=EOF) { int i,s=1<<30,e=0; for(i=0; i<n; i++) { scanf("%d%d%d",&qu[i].x,&qu[i].y,&qu[i].w); qu[i].y++; if(qu[i].x<s) { s=qu[i].x; } if(qu[i].y>e) { e=qu[i].y; } } bool flat=true; while(flat) { flat=false; for(i=0; i<n; i++) { if(num[qu[i].x]>num[qu[i].y]-qu[i].w) { num[qu[i].x]=num[qu[i].y]-qu[i].w; flat=true; } } for(i=s; i<e; i++) { if(num[i+1]>num[i]+1) { num[i+1]=num[i]+1; flat=true; } } for(i=e-1; i>=s; i--) { if(num[i]>num[i+1]) { num[i] = num[i+1]; flat = true; } } } printf("%d\n",num[e]-num[s]); } return 0; }
相关文章推荐
- POJ 1201 Intervals (区间差分约束)
- POJ 1201 Intervals
- poj-1201 Intervals
- POJ1201-Intervals(差分约束)
- POJ_1201_Intervals
- poj 1201 Intervals
- POJ1201-Intervals(差动限制)
- poj 1201 Intervals
- POJ 1201 Intervals 差分约束
- poj 1201 Intervals 差分约束
- poj 1201 Intervals
- HDU 1384 && POJ 1201--Intervals 【基础差分约束】
- 【差分约束系统】POJ 1201--Intervals
- POJ 1201 Intervals (差分约束#4)
- |poj 1201|差分约束|Intervals
- poj&nbsp;1201&nbsp;Intervals&nbsp;(差分约束)
- POJ 1201 && HDU 1384 Intervals(差分约束系统)
- POJ 1201 Intervals
- POJ 1201 Intervals (差分约束系统)
- poj1201 Intervals