题意:有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

很明显这是一个差分约束系统,只不过求得是最长路。建好图后找到最小值到最大值的最长路就是答案。

  1. #include<stdio.h>
  2. #include<string.h>
  3. const int N=+,M=,INF=0x3f3f3f3f;
  4. struct node{
  5. int v,w,next;
  6. }e[M];
  7. int head[N],p[N],d[N];
  8. int q[M<<],l,r,js;
  9. void add(int u,int v,int w)
  10. {
  11. e[js].v=v,e[js].w=w;
  12. e[js].next=head[u],head[u]=js++;
  13. }
  14. void spfa(int s,int t)
  15. {
  16. l=r=;int u,v,w,i;
  17. for(i=s;i<=t;i++) d[i]=-INF;
  18. memset(p,,sizeof(p));
  19. q[++r]=s;d[s]=;
  20. while(l<r)
  21. {
  22. p[u=q[++l]]=;
  23. for(i=head[u];i!=-;i=e[i].next)
  24. {
  25. v=e[i].v,w=e[i].w;
  26. if(d[v]<d[u]+w)
  27. {
  28. d[v]=d[u]+w;
  29. if(!p[v])
  30. {
  31. p[v]=;
  32. q[++r]=v;
  33. }
  34. }
  35. }
  36. }
  37. printf("%d\n",d[t]);
  38. }
  39. int main()
  40. {
  41. int n,u,v,w,i,ma,mi;
  42. while(scanf("%d",&n)!=EOF)
  43. {
  44. memset(head,-,sizeof(head));
  45. js=ma=;mi=INF;
  46. while(n--)
  47. {
  48. scanf("%d%d%d",&u,&v,&w);
  49. add(u,v+,w);
  50. if(u<mi) mi=u;
  51. if(v+>ma) ma=v+;
  52. }
  53. for(i=mi;i<ma;i++)
  54. {
  55. add(i,i+,);
  56. add(i+,i,-);
  57. }
  58. spfa(mi,ma);
  59. }
  60. return ;
  61. }

POJ 1201 Intervals的更多相关文章

  1. poj 1201 Intervals 解题报告

    Intervals Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %lld & %llu Submit Statu ...

  2. POJ 1201 Intervals || POJ 1716 Integer Intervals 差分约束

    POJ 1201 http://poj.org/problem?id=1201 题目大意: 有一个序列,题目用n个整数组合 [ai,bi,ci]来描述它,[ai,bi,ci]表示在该序列中处于[ai, ...

  3. poj 1201 Intervals(差分约束)

    题目:http://poj.org/problem?id=1201 题意:给定n组数据,每组有ai,bi,ci,要求在区间[ai,bi]内至少找ci个数, 并使得找的数字组成的数组Z的长度最小. #i ...

  4. poj 1201 Intervals——差分约束裸题

    题目:http://poj.org/problem?id=1201 差分约束裸套路:前缀和 本题可以不把源点向每个点连一条0的边,可以直接把0点作为源点.这样会快许多! 可能是因为 i-1 向 i 都 ...

  5. POJ 1201 Intervals【差分约束】

    传送门:http://poj.org/problem?id=1201 题意: 有n个如下形式的条件:,表示在区间[, ]内至少要选择个整数点.问你满足以上所有条件,最少需要选多少个点? 思路:第一道差 ...

  6. POJ 1201 Intervals (差分约束系统)

    题意 在区间[0,50000]上有一些整点,并且满足n个约束条件:在区间[ui, vi]上至少有ci个整点,问区间[0, 50000]上至少要有几个整点. 思路 差分约束求最小值.把不等式都转换为&g ...

  7. poj 1201 Intervals(差分约束)

    做的第一道差分约束的题目,思考了一天,终于把差分约束弄懂了O(∩_∩)O哈哈~ 题意(略坑):三元组{ai,bi,ci},表示区间[ai,bi]上至少要有ci个数字相同,其实就是说,在区间[0,500 ...

  8. POJ 1201 Intervals(图论-差分约束)

    Intervals Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 20779   Accepted: 7863 Descri ...

  9. 图论(差分约束系统):POJ 1201 Intervals

    Intervals Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 24099   Accepted: 9159 Descri ...

  10. 【POJ 1201 Intervals】

    Time Limit: 2000MSMeamory Limit: 65536K Total Submissions: 27949Accepted: 10764 Description You are ...

随机推荐

  1. CSS应用内容补充及小实例

    一.clear 清除浮动 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  2. 求Mac 的adt插件!

    搞了半天原来ADT Mac和win是通用的安装方法也相同! 自己配环境! 下载一个Eclipse,然后安装就行! dns:203.195.223.190 这个DNS可以连上谷歌的服务器(只限学习使用) ...

  3. 【GOF23设计模式】解释器模式 & 访问者模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_解释器模式.访问者模式.数学表达式动态解析库式 1.解释器模式Interpreter  2.访问者模式Visitor 

  4. [WP8] Binding时,依照DataType选择DataTemplate

    [WP8] Binding时,依照DataType选择DataTemplate 范例下载 范例程序代码:点此下载 问题情景 在开发WPF.WP8...这类应用程序的时候,透过Binding机制搭配Da ...

  5. 字母排序问题(c++实现)

    描述:编写一个程序,当输入不超过60个字符组成的英文文字时,计算机将这个句子中的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度 相同.例如: 输入: THE PRICE OFB ...

  6. 解决SwipeRefreshLayout左右滑动事件冲突的问题

    在使用SwipeRefreshLayout时我们注意到在SwipeRefreshLayout中左右滑动时可能也会触发下拉刷新的事件,这点让我们很不爽.追其原因是SwipeRefreshLayout对于 ...

  7. 微信公众平台SDK Python

    微信公众平台SDK 项目背景 从2014年开始玩微信公众平台,试用过其中大多数的功能,如:消息回复.自定义菜单.公众号中的支付,页面授权等.之前的程序中都是直接调用公众平台的接口,这样复用功能无法实现 ...

  8. iOS9 HTTP 不能正常使用的解决办法

    Google后查证,iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (ATS) 新特性要求App内访问的网络必须使用H ...

  9. 如何避免Activity 被杀死

    我们都知道,在android系统中,内存不足的时候,系统是可以杀死任何暂停.停止或者销毁的Activity.这就意味着基本上没有在前台的Activity都会面临被关闭的可能. Android系统之所以 ...

  10. 配置JDK环境变量

    •配置JDK环境变量<Windows系统下> 点击我的电脑右键----->属性------>高级------>环境变量------->  新建(建议在系统变量中新建 ...