POJ 1201 Intervals(差分约束)
题目链接
第一个差分约束的题目。看了好多的博客,差分约束就是根据不等式建好图,然后求最短路或者最长路即可,很明显建图是关键。
这个题的题意是,给很多的区间,每个区间上至少ci个数,问最这些数最少有多少个。
这个题解讲的不错http://www.cnblogs.com/jiai/archive/2012/09/20/2696007.html
建图的的时候,不等式的方向要全部相同。s[i+1]表示这个集合在[1-i]的个数
s[bi+1] - s[ai] >= ci;//题目中给出
s[i+1] - s[i] >=0;//隐藏条件
s[i] - s[i+1] >= -1;
求s[maxz] - s[minz] >= ans;
建图就是求minz 到maxz的最长路。
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <cstring> 5 #include <queue> 6 using namespace std; 7 #define N 1000001 8 #define INF 0x7fffff 9 struct node 10 { 11 int u,v,next,w; 12 }edge[N]; 13 int first[N],t,maxz,minz; 14 int in[N],d[N]; 15 void CL() 16 { 17 t = 1; 18 memset(first,-1,sizeof(first)); 19 } 20 void add(int u,int v,int w) 21 { 22 edge[t].u = u; 23 edge[t].v = v; 24 edge[t].w = w; 25 edge[t].next = first[u]; 26 first[u] = t; 27 t ++; 28 } 29 void spfa(int str)//spfa模版 30 { 31 int i,v,u; 32 queue<int> que; 33 for(i = minz;i <= maxz;i ++) 34 { 35 in[i] = 0; 36 d[i] = -INF; 37 } 38 que.push(str); 39 in[str] = 1; 40 d[str] = 0; 41 while(!que.empty()) 42 { 43 u = que.front(); 44 in[u] = 0; 45 que.pop(); 46 for(i = first[u];i != -1;i = edge[i].next) 47 { 48 v = edge[i].v; 49 if(d[v] < d[u]+edge[i].w) 50 { 51 d[v] = d[u]+edge[i].w; 52 if(!in[v]) 53 { 54 in[v] = i; 55 que.push(v); 56 } 57 } 58 } 59 } 60 } 61 int main() 62 { 63 int n,i,sv,ev,w; 64 maxz = -1; 65 minz = 50001; 66 CL(); 67 scanf("%d",&n); 68 for(i = 1;i <= n;i ++) 69 { 70 scanf("%d%d%d",&sv,&ev,&w); 71 minz = min(sv,minz); 72 maxz = max(ev+1,maxz); 73 add(sv,ev+1,w);//建图 74 } 75 for(i = minz;i <= maxz;i ++) 76 { 77 add(i,i+1,0);//建图 78 add(i+1,i,-1); 79 } 80 spfa(minz); 81 printf("%d\n",d[maxz]); 82 return 0; 83 }
转载于:https://www.cnblogs.com/naix-x/archive/2013/02/21/2920257.html
POJ 1201 Intervals(差分约束)相关推荐
- poj 1201 Intervals 差分约束
真 .读题杀,英文题一脸懵逼,看来以后还要多读读英文题,不过读完了就能发现这其实是一道很裸的差分约束,按照题意建边即可,但还要注意的就是后一个要大于等于前一个,并且每个位置不能超过一个元素.求一边最大 ...
- POJ - 1201 Intervals(差分约束+最短路)
题目链接:点击查看 题目大意:给定n个闭区间[ai,bi]和n个整数ci,你需要构造一个整数集合Z,使得Z中满足所有的ai<=x<=bi的整数不少于ci个,求出这样的整数集合Z最少包含多少 ...
- [poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]
题意 有n个数的序列, 下标为[1.. N ], 限制条件为: 下标从 si 到 si+ni 的项求和 < 或 > ki. 一共有m个限制条件. 问是否存在满足条件的序列. 思路 转化为差 ...
- POJ 3159 Candies 差分约束dij
分析:设每个人的糖果数量是a[i] 最终就是求a[n]-a[1]的最大值 然后给出m个关系 u,v,c 表示a[u]+c>=a[v] 就是a[v]-a[u]<=c 所以对于这种情况,按照u ...
- POJ 1201 Intervals (差分约束)
POJ1716的变形,数据规模增大,用了循环数组. //9063355 NKHelloWorld 1201 Accepted 30788K 469MS C++ 1825B 2011-08-02 19: ...
- POJ 1716 Integer Intervals 差分约束
题目:http://poj.org/problem?id=1716 1 #include <stdio.h> 2 #include <string.h> 3 #include ...
- O - Layout POJ - 3169(差分约束)
O - Layout POJ - 3169 参考 思路: 限制条件 : 最大距离不超过w d[v] - d[u] <= w; 最小距离超过w d[v] - d[u] >= w; 移项得 d ...
- poj1201/zoj1508/hdu1384 Intervals(差分约束)
转载请注明出处: http://www.cnblogs.com/fraud/ --by fraud Intervals Time Limit: 10 Seconds Me ...
- poj-1201 Intervals(差分约束)
题目链接: Intervals Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 24379 Accepted: 9274 ...
- POJ 1932 XYZZY (差分约束+传递闭包)
题目链接 题意 有NNN个屋子,走进每个屋子血量都会发生改变,开始生命值100100100.问是否可以从111号屋子走到NNN号屋子中间血量保持大于000 思路 按照给定的顺序建图,因为要让血量尽可能 ...
最新文章
- 算法导论一个让人很不爽的地方
- 两层或以上的showModalDialog解决方法
- docker重启容器命令
- Python基础01-变量及数据类型
- 简易listview与adapter实现列表,ArrayAdapter和BaseAdapter
- Category 特性在 iOS 组件化中的应用与管控
- 26 Socket Addressing and Client Socket Programming
- Android Camera 编程从入门到精通
- java布类型的常量,java数据类型;常量与变量;
- 一、RabbitMQ安装
- JavaScript:加载请求本地资源工具StaticResourceUtil.js
- 《yes!产品经理》(上册)读书笔记(完结)
- java 的 表格控件_java最强大的表格控件
- 苦涩的 高考完了,有没有给自己一个目标
- 针对ABCmouse的Xadmin管理端使用探究手册
- 机器学习——DEAP数据集
- DEFCON 23即将展开物联网“大屠杀”
- hihocoder #1613 : 墨水滴 bfs+优先队列
- 什么是编程,学习编程的意义是?
- 河北大学计算机学院赵润,2010年河北省高招录取名单(7月20日)41
热门文章
- 控制pico—unity中双目摄像机的clearFlags问题
- 乞丐一句话感动12亿人
- 几年基础架构的经验之谈[42 things I learned from building a production database]
- 单目标跟踪(模板更新)(UpdateNet)《Learning the Model Update for Siamese Trackers》
- 为什么在Excel文档单元格中输入长段数字就变为公式?干货来啦!如何解决在excel单元格中输入数字变为公式的问题?
- 948-阿拉伯数字转换为汉语大写数字金额
- 学习笔记-WinRM
- 西安交大计算机研究生拟录取,西安交通大学2018硕士研究生拟录取名单公示
- 一文带你由浅入深Netty异步非阻塞世界
- 宝塔面板添加站点及运营商SSL免费证书的申请与使用