相交区间选尽量少的点是可以贪心的,右端点排序以后,尽量往右边放可以得到可以使得点在区间尽可能多。

但是我只想到了O(n)的维护方法。(数据比较水,能过...

或者是前缀和可以写sum(bi) - sum(ai-1) ≥ ci

再加上前缀和的单调性 sum(i) - sum(i-1) ≥ 0

以及一个点只能选一次 sum(i-1) - sum(i) ≥ -1。

左边具有可加性的,根据对偶性:min ( sum(n) - sum(0) ) ≥ max( c )

右边就是求一个最长路了。

复杂度:O(VE)。

两种复杂度都爆了,还是能过,大力出奇迹。。。

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<string>
  4. #include<cstring>
  5. #include<queue>
  6. #include<vector>
  7. #include<stack>
  8. #include<vector>
  9. #include<map>
  10. #include<set>
  11. #include<algorithm>
  12. #include<cmath>
  13. #include<numeric>
  14. using namespace std;
  15.  
  16. typedef long long ll;
  17.  
  18. const int maxn = +;
  19. const int maxm = maxn*;
  20.  
  21. int dat[][maxn];
  22. int * const d = dat[]+;
  23.  
  24. int * const hd = dat[]+;
  25. int nx[maxm];
  26. int a[maxn], b[maxm], c[maxm];
  27. int ec;
  28.  
  29. void add_edge(int u, int v, int w)
  30. {
  31. c[ec] = w;
  32. b[ec] = v;
  33. nx[ec] = hd[u];
  34. hd[u] = ec++;
  35. }
  36.  
  37. int n;
  38.  
  39. int q[maxn];
  40. bool inq[maxn];
  41.  
  42. int spfa(int s, int t)
  43. {
  44. memset(d+s,0xff,sizeof(int)*(t-s+));
  45. int top = ;
  46. q[++top] = s; d[s] = ; inq[s] = true;
  47. while(top){
  48. int u = q[top--];
  49. inq[u] = false;
  50. for(int i = hd[u]; ~i; i = nx[i]){
  51. int v = b[i];
  52. if(d[v] < d[u] + c[i]){
  53. d[v] = d[u] + c[i];
  54. if(!inq[v]) {
  55. q[++top] = v;
  56. inq[v] = true;
  57. }
  58. }
  59. }
  60. }
  61. return d[t];
  62. }
  63.  
  64. void solve()
  65. {
  66. for(int i = ; i < n; i++){
  67. scanf("%d%d%d", a+i, b+i, c+i);
  68. }
  69. int s = *min_element(a,a+n)-, t = *max_element(b,b+n);
  70. memset(hd+s, 0xff, sizeof(int)*(t-s+));
  71. for(int i = ; i < n; i++){
  72. nx[i] = hd[--a[i]];
  73. hd[a[i]] = i;
  74. }
  75. ec = n;
  76. for(int i = s; i < t; i++){
  77. add_edge(i,i+,);
  78. add_edge(i+,i,-);
  79. }
  80.  
  81. printf("%d\n", spfa(s,t));
  82. }
  83.  
  84. //#define LOCAL
  85. int main()
  86. {
  87. #ifdef LOCAL
  88. freopen("in.txt","r",stdin);
  89. #endif
  90. while(~scanf("%d",&n)){
  91. solve();
  92. }
  93. return ;
  94. }

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 (差分约束,最短路)

    题意: 有一个集合Z,其元素都是整整数,但是数量未知.现有n个约束,形如 [a,b]=c 表示整数区间[a,b]中有c个元素在Z中出现.问集合Z最小可能含多少个元素? 思路: 对于所给的区间 cnt[ ...

  4. poj 1201 Intervals(差分约束)

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

  5. poj 1201 Intervals(差分约束)

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

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

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

  7. POJ 1201 Intervals【差分约束】

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

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

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

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

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

随机推荐

  1. select随笔

    粘贴下面代码 select 美化 <!doctype html> <html lang="en"> <head> <meta charse ...

  2. Python 错误总结

    1.以一种访问权限不允许的方式做了一个访问套接字的尝试. 解决方法:这个问题缘由是有端口被占用

  3. 匿名类与lambda区别

    第一种是继承Thread, 重写了Thread.run()    getClass()返回的是匿名类 java.long.Thread$1 第二种是lambda, 重写了Runnable.run()  ...

  4. JS时间控件 moment.js用法

    参考http://momentjs.cn/ 下载 moment.js moment.min.js 12.4k moment+多语言支持.js moment+多语言支持.min.js 45.4k 安装 ...

  5. Java 实践

    /** *宠物就是一个标准,包含多类宠物 *定义宠物标准接口Pet *定义Cat和Dog两个Pet接口的子类 *使用链表结构动态存储宠物信息 *定义商店类(工厂类),负责宠物的上架(链表添加).下架( ...

  6. 局部安装webpack时,使用webpack命令时提示webpack不是内部命令解决方法

    现在js发展太快了,根本看不懂啊.于是乎想做做功课,于是乎看到了这些“奇怪”的写法,原来好多都是遵循了 ECMASCRIPT6,好吧,在本地看看怎么用的吧.写在本地的环境下, 发现各种报错,根本不能用 ...

  7. Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined) F. Substrings in a String

    http://codeforces.com/contest/914/problem/F 以前做过一个类似的,但是查询的子串长度最多是10,这个时候就是用bit + hash做了.这是因为改变一个字符, ...

  8. PHP文件访问

    文件和目录处理函数 basename — 返回路径中的文件名部分 | Returns trailing name component of path | chgrp — 改变文件所属的组 | Chan ...

  9. [转]AngularJS 使用 UI Router 实现表单向导

    本文转自:http://www.oschina.net/translate/angularjs-multi-step-form-using-ui-router 今天我们将使用AngularJs和伟大的 ...

  10. Python 元组 (tuple)

    作者博文地址:https://www.cnblogs.com/liu-shuai/ Python的元组与列表类似,同样可通过索引访问,支持异构,任意嵌套.不同之处在于元组的元素不能修改.元组使用小括号 ...