POJ 1201 Intervals
题意:有n个区间[a,b],每个区间有一个值c。找一个集合中的元素使得每个区间至少有c个元素在这个集合中,问最小的集合大小。
思路:设d[i+1]表示0到i有多少个数在这个集合中,显然对于每个区间,d[b+1]-d[a]>=c,才能符合题目的要求。但是这样并不能使得所有集合都联系起来。继续挖掘条件,根据d[]的定义可得,0<=d[i+1]-d[i]<=1。
由此可得三个不等式:
d[b+1]-d[a]>=c
d[i+1]-d[i]>=0
d[i]-d[i+1]>=-1
很明显这是一个差分约束系统,只不过求得是最长路。建好图后找到最小值到最大值的最长路就是答案。
- #include<stdio.h>
- #include<string.h>
- const int N=+,M=,INF=0x3f3f3f3f;
- struct node{
- int v,w,next;
- }e[M];
- int head[N],p[N],d[N];
- int q[M<<],l,r,js;
- void add(int u,int v,int w)
- {
- e[js].v=v,e[js].w=w;
- e[js].next=head[u],head[u]=js++;
- }
- void spfa(int s,int t)
- {
- l=r=;int u,v,w,i;
- for(i=s;i<=t;i++) d[i]=-INF;
- memset(p,,sizeof(p));
- q[++r]=s;d[s]=;
- while(l<r)
- {
- p[u=q[++l]]=;
- for(i=head[u];i!=-;i=e[i].next)
- {
- v=e[i].v,w=e[i].w;
- if(d[v]<d[u]+w)
- {
- d[v]=d[u]+w;
- if(!p[v])
- {
- p[v]=;
- q[++r]=v;
- }
- }
- }
- }
- printf("%d\n",d[t]);
- }
- int main()
- {
- int n,u,v,w,i,ma,mi;
- while(scanf("%d",&n)!=EOF)
- {
- memset(head,-,sizeof(head));
- js=ma=;mi=INF;
- while(n--)
- {
- scanf("%d%d%d",&u,&v,&w);
- add(u,v+,w);
- if(u<mi) mi=u;
- if(v+>ma) ma=v+;
- }
- for(i=mi;i<ma;i++)
- {
- add(i,i+,);
- add(i+,i,-);
- }
- spfa(mi,ma);
- }
- return ;
- }
POJ 1201 Intervals的更多相关文章
- poj 1201 Intervals 解题报告
Intervals Time Limit: 2000MS Memory Limit: 65536KB 64bit IO Format: %lld & %llu Submit Statu ...
- POJ 1201 Intervals || POJ 1716 Integer Intervals 差分约束
POJ 1201 http://poj.org/problem?id=1201 题目大意: 有一个序列,题目用n个整数组合 [ai,bi,ci]来描述它,[ai,bi,ci]表示在该序列中处于[ai, ...
- poj 1201 Intervals(差分约束)
题目:http://poj.org/problem?id=1201 题意:给定n组数据,每组有ai,bi,ci,要求在区间[ai,bi]内至少找ci个数, 并使得找的数字组成的数组Z的长度最小. #i ...
- poj 1201 Intervals——差分约束裸题
题目:http://poj.org/problem?id=1201 差分约束裸套路:前缀和 本题可以不把源点向每个点连一条0的边,可以直接把0点作为源点.这样会快许多! 可能是因为 i-1 向 i 都 ...
- POJ 1201 Intervals【差分约束】
传送门:http://poj.org/problem?id=1201 题意: 有n个如下形式的条件:,表示在区间[, ]内至少要选择个整数点.问你满足以上所有条件,最少需要选多少个点? 思路:第一道差 ...
- POJ 1201 Intervals (差分约束系统)
题意 在区间[0,50000]上有一些整点,并且满足n个约束条件:在区间[ui, vi]上至少有ci个整点,问区间[0, 50000]上至少要有几个整点. 思路 差分约束求最小值.把不等式都转换为&g ...
- poj 1201 Intervals(差分约束)
做的第一道差分约束的题目,思考了一天,终于把差分约束弄懂了O(∩_∩)O哈哈~ 题意(略坑):三元组{ai,bi,ci},表示区间[ai,bi]上至少要有ci个数字相同,其实就是说,在区间[0,500 ...
- POJ 1201 Intervals(图论-差分约束)
Intervals Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 20779 Accepted: 7863 Descri ...
- 图论(差分约束系统):POJ 1201 Intervals
Intervals Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 24099 Accepted: 9159 Descri ...
- 【POJ 1201 Intervals】
Time Limit: 2000MSMeamory Limit: 65536K Total Submissions: 27949Accepted: 10764 Description You are ...
随机推荐
- CSS应用内容补充及小实例
一.clear 清除浮动 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- 求Mac 的adt插件!
搞了半天原来ADT Mac和win是通用的安装方法也相同! 自己配环境! 下载一个Eclipse,然后安装就行! dns:203.195.223.190 这个DNS可以连上谷歌的服务器(只限学习使用) ...
- 【GOF23设计模式】解释器模式 & 访问者模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_解释器模式.访问者模式.数学表达式动态解析库式 1.解释器模式Interpreter 2.访问者模式Visitor
- [WP8] Binding时,依照DataType选择DataTemplate
[WP8] Binding时,依照DataType选择DataTemplate 范例下载 范例程序代码:点此下载 问题情景 在开发WPF.WP8...这类应用程序的时候,透过Binding机制搭配Da ...
- 字母排序问题(c++实现)
描述:编写一个程序,当输入不超过60个字符组成的英文文字时,计算机将这个句子中的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度 相同.例如: 输入: THE PRICE OFB ...
- 解决SwipeRefreshLayout左右滑动事件冲突的问题
在使用SwipeRefreshLayout时我们注意到在SwipeRefreshLayout中左右滑动时可能也会触发下拉刷新的事件,这点让我们很不爽.追其原因是SwipeRefreshLayout对于 ...
- 微信公众平台SDK Python
微信公众平台SDK 项目背景 从2014年开始玩微信公众平台,试用过其中大多数的功能,如:消息回复.自定义菜单.公众号中的支付,页面授权等.之前的程序中都是直接调用公众平台的接口,这样复用功能无法实现 ...
- iOS9 HTTP 不能正常使用的解决办法
Google后查证,iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (ATS) 新特性要求App内访问的网络必须使用H ...
- 如何避免Activity 被杀死
我们都知道,在android系统中,内存不足的时候,系统是可以杀死任何暂停.停止或者销毁的Activity.这就意味着基本上没有在前台的Activity都会面临被关闭的可能. Android系统之所以 ...
- 配置JDK环境变量
•配置JDK环境变量<Windows系统下> 点击我的电脑右键----->属性------>高级------>环境变量-------> 新建(建议在系统变量中新建 ...