开始以为是贪心,10分;想了个DP估计会超时,一翻题解各路初中神仙,背包都有。

\(n^2\)很好想,考虑单调性用二分优化出log

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <cmath>
  6. #define R(a,b,c) for(register int a = (b); a <= (c); ++ a)
  7. #define nR(a,b,c) for(register int a = (b); a >= (c); -- a)
  8. #define Max(a,b) ((a) > (b) ? (a) : (b))
  9. #define Min(a,b) ((a) < (b) ? (a) : (b))
  10. #define Fill(a,b) memset(a, b, sizeof(a))
  11. #define Abs(a) ((a) < 0 ? -(a) : (a))
  12. #define Swap(a,b) a^=b^=a^=b
  13. #define ll long long
  14. #define ON_DEBUG
  15. #ifdef ON_DEBUG
  16. #define D_e_Line printf("\n\n----------\n\n")
  17. #define D_e(x) cout << #x << " = " << x << endl
  18. #define Pause() system("pause")
  19. #define FileOpen() freopen("in.txt","r",stdin);
  20. #else
  21. #define D_e_Line ;
  22. #define D_e(x) ;
  23. #define Pause() ;
  24. #define FileOpen() ;
  25. #endif
  26. struct ios{
  27. template<typename ATP>ios& operator >> (ATP &x){
  28. x = 0; int f = 1; char c;
  29. for(c = getchar(); c < '0' || c > '9'; c = getchar()) if(c == '-') f = -1;
  30. while(c >= '0' && c <= '9') x = x * 10 + (c ^ '0'), c = getchar();
  31. x*= f;
  32. return *this;
  33. }
  34. }io;
  35. using namespace std;
  36. const int N = 150007;
  37. struct Field{
  38. int l, r, w;
  39. bool operator < (const Field &com) const{
  40. if(r != com.r) return r < com.r;
  41. return l < com.l;
  42. }
  43. }a[N];
  44. int f[N];
  45. inline int Find(int x){
  46. int l = 1, r = x;
  47. int ans = -1;
  48. while(l <= r){
  49. int mid = (l + r) >> 1;
  50. if(a[mid].r < a[x].l){
  51. l = mid + 1;
  52. ans = mid;
  53. }
  54. else{
  55. r = mid - 1;
  56. }
  57. }
  58. return ans;
  59. }
  60. int main(){
  61. //FileOpen();
  62. int n;
  63. io >> n;
  64. R(i,1,n){
  65. io >> a[i].l >> a[i].r;
  66. a[i].w = a[i].r - a[i].l + 1;
  67. }
  68. sort(a + 1, a + n + 1);
  69. f[1] = a[1].r - a[1].l + 1;
  70. R(i,2,n){
  71. int j = Find(i);
  72. if(j != -1)
  73. f[i] = Max(f[i - 1], f[j] + a[i].w);
  74. else
  75. f[i] = Max(f[i - 1], a[i].w);
  76. }
  77. printf("%d\n",f[n]);
  78. return 0;
  79. }

Luogu1868 饥饿的奶牛 (动态规划)的更多相关文章

  1. [LUOGU1868] 饥饿的奶牛 - dp二分

    题目描述 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有N个区间,每个区间x,y表示提供的x~y共y-x+1堆优质牧草.你可以选择任意区间但不能有 ...

  2. BZOJ1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛

    1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 665  Solved: 419 ...

  3. BZOJ 1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛( LIS )

    裸的LIS ----------------------------------------------------------------- #include<cstdio> #incl ...

  4. dp进阶——饥饿的奶牛

    饥饿的奶牛oj上n只有1000,过于水,O(n^2)的算法很容易水过,洛谷上这是一道提高加的题,很难啊,所以要好好拿来练习今天写博客再次复习一下,oi最怕遗忘了. 这道题呢实质是一个区间覆盖的dp,首 ...

  5. 题解 P1868 【饥饿的奶牛】

    题目链接:P1868 饥饿的奶牛 题面 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有N个区间,每个区间x,y表示提供的x~y共y-x+1堆优质牧 ...

  6. codevs 1345 饥饿的奶牛

    1345 饥饿的奶牛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description John养了若干奶牛,每天晚上奶牛都要进食.由于条件比较 ...

  7. 洛谷P1868 饥饿的奶牛

    P1868 饥饿的奶牛 题目描述 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有N个区间,每个区间x,y表示提供的x~y共y-x+1堆优质牧草.你 ...

  8. 【动态规划】bzoj1669 [Usaco2006 Oct]Hungry Cows饥饿的奶牛

    #include<cstdio> #include<algorithm> using namespace std; int n,a[5001],b[5001],en; int ...

  9. Bzoj 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 动态规划

    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1006  Solved: ...

随机推荐

  1. C++primer第一章

    第一章 : 开始 1.1 编写一个简单的C++程序 要点:每个函数有且只能拥有一个main函数,且main的默认返回是一个int类型. 函数定义:返回类型,函数名,形参列表,函数体 1.1.1编译 运 ...

  2. salesforce零基础学习(一百一十五)记一个有趣的bug

    本篇参考:https://help.salesforce.com/s/articleView?language=en_US&type=1&id=000319486 page layou ...

  3. 变量作用域——JavaSE基础

    变量作用域 局部变量.成员变量.静态变量的区别 类型 声明位置 从属于 生命周期 局部变量 方法或语句块内部 方法/语句块 从声明位置开始,直到方法或语句块执行完毕,局部变量消失 成员变量 (实例变量 ...

  4. Prometheus 四种metric类型

    Prometheus的4种metrics(指标)类型: Counter Gauge Histogram Summary 四种指标类型的数据对象都是数字,如果要监控文本类的信息只能通过指标名称或者 la ...

  5. python基础学习5

    Python的基础学习5 内容概要 流程控制理论 if判断 while循环 内容详情 流程控制理论 # 流程控制:即控制事物执行的流程 # 执行流程的分类 1.顺序结构 从上往下按顺序依次执行 2.分 ...

  6. script标签crossorigin属性及同源策略和跨域方法

    首先介绍(同源策略) 同源策略是浏览器最核心且基本的安全约定,要求协议.域名.端口都相同为同源,如果非同源时请求数据浏览器会在控制台抛出跨域异常错误,同源策略是浏览器的行为,即使客户端请求发送了,服务 ...

  7. JVM学习笔记-从底层了解程序运行(一)

    1:JVM基础知识 什么是JVM 1. java虚拟机,跨语言的平台,实现java跨平台 2. 可以实现多种语言跨平台,只要该语言可以编译成.class文件 3. 解释执行.class文件 java是 ...

  8. 【Azure 应用服务】App Service 开启了私有终结点(Private Endpoint)模式后,如何来实现公网Git部署呢?

    问题描述 因为中国区的App Service对外(公网访问)需要进行ICP备案,所以很多情况下,Web应用部署到App Service后,都是通过Application Gateway(应用程序网关) ...

  9. 前端学习 linux —— shell 编程

    前端学习 linux - shell 编程 shell 原意是"外壳",与 kernel(内核)相对应,比喻内核外的一层,是用户和内核沟通的桥梁.shell 有很多种,国内通常使用 ...

  10. git stash 的一次惊心动魄的误删操作

    git stash 的一次惊心动魄的误删操作 简介:行走在互联网最低端的小熊 问题--源起: 小熊和所有混迹在互联网中的开发一样,公司里面用git来管理项目,由于可能经常有几个问题要开发,要频繁在多分 ...