Intervals poj1201(差分约束)
来源:互联网 发布:spss mac 23 教程 编辑:程序博客网 时间:2024/05/17 04:40
Intervals
Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 25756 Accepted: 9854
Description
You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn.
Write a program that:
reads the number of intervals, their end points and integers c1, ..., cn from the standard input,
computes the minimal size of a set Z of integers which has at least ci common elements with interval [ai, bi], for each i=1,2,...,n,
writes the answer to the standard output.
Write a program that:
reads the number of intervals, their end points and integers c1, ..., cn from the standard input,
computes the minimal size of a set Z of integers which has at least ci common elements with interval [ai, bi], for each i=1,2,...,n,
writes the answer to the standard output.
Input
The first line of the input contains an integer n (1 <= n <= 50000) -- the number of intervals. The following n lines describe the intervals. The (i+1)-th line of the input contains three integers ai, bi and ci separated by single spaces and such that 0 <= ai <= bi <= 50000 and 1 <= ci <= bi - ai+1.
Output
The output contains exactly one integer equal to the minimal size of set Z sharing at least ci elements with interval [ai, bi], for each i=1,2,...,n.
Sample Input
53 7 38 10 36 8 11 3 110 11 1
Sample Output
6
Source
Southwestern Europe 2002
注意!!!!原点是dis[max] 而且由于本例题s0-s11<=-M,既要求原点s11到s0的最短路径 长度为-M
假设最短路径求得各顶点到s11原点距离保存到dis[]里面 那么-M=dis[0]-dis[11],M=dis[11]-dis[0]
#include<stdio.h>#include<string.h>#include<queue>#define maxn 55000#define INF 0x3f3f3f3f#define max(a,b) a>b?a:b#define min(a,b) a>b?b:ausing namespace std;struct node{ int v,w,next;}e[maxn*3];int dis[maxn],vis[maxn],head[maxn];int cnt;void init(){ cnt=0; memset(head,-1,sizeof(head)); memset(vis,0,sizeof(vis));}void add(int u,int v,int w){ e[cnt].v=v; e[cnt].w=w; e[cnt].next=head[u]; head[u]=cnt++;}void spfa(int mi,int ma){ int i; for(i=mi;i<=ma;i++) { dis[i]=INF; } dis[ma]=0; vis[ma]=1; queue<int>q; q.push(ma); while(!q.empty()) { int u=q.front();q.pop(); vis[u]=0; for(int i=head[u];i!=-1;i=e[i].next) { int v=e[i].v; int w=e[i].w; if(dis[v]>dis[u]+w) { dis[v]=dis[u]+w; if(!vis[v]) { q.push(v); vis[v]=1; } } } }}int main(){ int n; int i,j; while(~scanf("%d",&n)) { int a,b,x; int MIN=INF; int MAX=-1; init(); for(i=1;i<=n;i++) { scanf("%d%d%d",&a,&b,&x); MIN=min(a,MIN); MAX=max(b+1,MAX); add(b+1,a,-x); } for(i=0;i<MAX;i++) { add(i+1,i,0); add(i,i+1,1); } spfa(MIN,MAX); printf("%d\n",dis[MAX]-dis[MIN]); }}
0 0
- POJ1201--差分约束--Intervals
- POJ1201-Intervals(差分约束)
- Intervals poj1201(差分约束)
- 【POJ1201】Intervals 差分约束系统
- poj1201 Intervals(差分约束)
- POJ1201:Intervals(差分约束系统)
- POJ1201 Intervals [差分约束系统 SPFA]
- 【差分约束系统】Intervals POJ1201
- POJ1201 Intervals 【差分约束系统】
- poj1201 Intervals,差分约束问题,spfa
- POJ1201 HDU1384 Intervals【SPFA】【差分约束】
- [POJ1201]Intervals(差分约束)
- poj1201 Intervals--单源最短路径&差分约束
- poj1201&&hdu1384 Intervals(差分约束)
- 【差分约束系统】POJ1201[Intervals]题解
- POJ1201-Intervals(差分约束)
- 【差分约束系统】POJ1201 Intervals
- POJ1201 Intervals <差分约束系统>
- Mybatis 高级结果映射Association Collection Cache-ref Discriminator Cache
- Java 运算符
- Dagger2 使用初步
- 库函数报错,解决方案
- 使用Glide加载、缓存图片、解决背景出现浅绿色
- Intervals poj1201(差分约束)
- Angular2中的数据绑定
- 使用Url Schemes打开本地程序
- 关于Java虚拟机中的字节码指令
- 面向对象葵花宝典:思想、技巧与实践(2) - 面向对象语言发展历史
- yii2 安装
- hdu1015-dfs
- supervise
- Dagger2 生成代码学习