开始以为是贪心,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. Python模块Ⅰ

    Python模块Ⅰ part1 模块的定义/取别名 自定义模块 什么是模块:模块的本质就是.py文件,封装语句的最小单位 模块中出现的变量,for循环,if结构,函数定义...称为模块成员 模块的运行 ...

  2. Redis中的原子操作(2)-redis中使用Lua脚本保证命令原子性

    Redis 如何应对并发访问 使用 Lua 脚本 Redis 中如何使用 Lua 脚本 EVAL EVALSHA SCRIPT 命令 SCRIPT LOAD SCRIPT EXISTS SCRIPT ...

  3. 【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD登录并获取AccessToken -- cca.acquireTokenByCode(tokenRequest)

    问题描述 在上一篇博文 "[Azure 应用服务]NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤"中, ...

  4. 物联网lora无线数传模块应用案例:LoRawan网关通信技术

    什么是LoRa LoRa(Long Range) 无线通信技术是 Semtech 在2012年开发出来的一款适合物联网使用的射频IC.其设计理念为低功耗.长距离.低成本.网路简单.易于扩展的无线数传技 ...

  5. JuiceFS V1.0 RC1 发布,大幅优化 dump/load 命令性能, 深度用户不容错过

    各位社区的伙伴, JuiceFS v1.0 RC1 今天正式发布了!这个版本中,最值得关注的是对元数据迁移备份工具 dump/load 的优化. 这个优化需求来自于某个社区重度用户,这个用户在将亿级数 ...

  6. 关于一次Web线下面试的思考

    前言: 今天面试一家Web前端的公司,由于跟初筛的面试官关系挺好,按理来说我在第一次线上面试就应该被淘汰了(呜呜呜),接下来是线下面试,不出意外的话,我凉了.但是这些天的面试经验并非全无收获.我的线下 ...

  7. Vue回炉重造之如何使用props、emit实现自定义双向绑定

    下面我将使用Vue自带的属性实现简单的双向绑定. 下面的例子就是利用了父组件传给子组件(在子组件定义props属性,在父组件的子组件上绑定属性),子组件传给父组件(在子组件使用$emit()属性定义一 ...

  8. easyexcel注解

    1.@ExcelProperty 必要的一个注解,注解中有三个参数value,index分别代表列明,列序号 1.value 通过标题文本对应2.index 通过文本行号对应 2.@ColumnWit ...

  9. Microsoft Office Visio Professional 之包图

    1 包的概念 1.1 包的定义 包(Package): 是UML用来组织模型元素的模型元素. 包中可以包含类.接口.构件.用例.结点.活动.状态.包等其他模型元素. 包是对软件模型进行分解.组织的有效 ...

  10. 一个月后,我们又从 MySQL 双主切换成了主 - 从!

    这是悟空的第 157 篇原创文章 官网:www.passjava.cn 你好,我是悟空. 一.遇到的坑 一个月前,我们在测试环境部署了一套 MySQL 高可用架构,也就是 MySQL 双主 + Kee ...