C、luogu P4085 [USACO17DEC]Haybale Feast

题目链接

直接开一个线段树维护即可。
注意开ll
线段树维护最大值。注意下标别写错了,比如tr[r]

#include<cstdio>
#include<algorithm>
#include<iostream>using namespace std;
typedef long long ll;
const int N = 500007, INF = 0x3f3f3f3f;int n;
ll m;
ll a[N], b[N];
struct node{int l, r;ll fun;
}tr[N * 4];
ll sum[N];void pushup(int p)
{tr[p].fun = max(tr[p << 1].fun, tr[p << 1 | 1].fun);
}void build(int p, int l, int r)
{tr[p] = {l, r};if(l == r){tr[p].fun = a[r];return ;}int mid = l + r >> 1;build(p << 1, l, mid);build(p << 1 | 1, mid + 1, r);pushup(p);
}ll query(int p, int l, int r)
{if(tr[p].l >= l && tr[p].r <= r)return tr[p].fun;int mid = tr[p].l + tr[p].r >> 1;ll res = 0;if(l <= mid)res = query(p << 1, l, r);if(r > mid)res = max(res, query(p << 1 | 1, l, r));return res;
}int main(){scanf("%d%lld", &n, &m);for(int i = 1;i <= n; ++ i)scanf("%lld%lld", &b[i], &a[i]);build(1, 1, n);for(int i = 1;i <= n; ++ i)sum[i] = sum[i - 1] + b[i];ll ans = INF;for(int l = 1, r = 1; l <= n; ++ l){for(; sum[r] - sum[l - 1] < m && r <= n; r ++ );if(sum[r] - sum[l - 1] < m)break;ans = min(ans, query(1, l, r));}printf("%lld\n", ans);return 0;
}

luogu P4085 [USACO17DEC]Haybale Feast(尺取法 + 线段树)相关推荐

  1. BZOJ4653 尺取法 + 线段树

    https://www.lydsy.com/JudgeOnline/problem.php?id=4653 首先很容易想到离散之后排序,用线段树或者树状数组去维护. 问题在于按照什么排序,如果按照左端 ...

  2. [USACO17DEC]Haybale Feast G

    题目链接:[USACO17DEC]Haybale Feast G 很显然s具有二分性,然后check每一个字段的和即可.因为s为正,所以全部加起来肯定是最优的. 不知道为什么没人写二分. AC代码: ...

  3. Luogu4085 [USACO17DEC]Haybale Feast (线段树,单调队列)

    \(10^18\)是要long long的. \(nlogn\)单调队列上维护\(logn\)线段树. #include <iostream> #include <cstdio> ...

  4. bzoj 4653: [Noi2016]区间(尺取+线段树)

    4653: [Noi2016]区间 Time Limit: 60 Sec  Memory Limit: 256 MB Submit: 934  Solved: 500 [Submit][Status] ...

  5. 【常用技巧精选】尺取法

    整理的算法模板合集: ACM模板 目录 1.反向扫描 1 找指定和的整数对 A.UVA1121 Subsequence B.POJ 3320 Jessica's Reading Problem C.l ...

  6. c++自带的可持久化平衡树?rope大法好!(超详细解答 + 5道例题讲解,可直接替代可持久化的线段树、并查集、平衡树!)

    整理的算法模板合集: ACM模板 目录 c++自带的可持久化平衡树?rope大法好! 1. 声明 2. 支持操作 char类型的rope int类型的rope 3. 具体的细节 4. "可持 ...

  7. P1712-[NOI2016]区间【线段树,尺取法】

    正题 题目链接:https://www.luogu.com.cn/problem/P1712 题目大意 nnn个区间,求出其中mmm个区间使得它们有覆盖同一个点且最长区间长度减去最短长度最小. 解题思 ...

  8. NOI2016区间bzoj4653(线段树,尺取法,区间离散化)

    题目描述 在数轴上有 \(N\) 个闭区间 \([l_1,r_1],[l_2,r_2],...,[l_n,r_n]\) .现在要从中选出 \(M\) 个区间,使得这 \(M\) 个区间共同包含至少一个 ...

  9. HRBUST 2388 - 千方残光剑(尺取法 + 权值线段树)

    Description 有n个怪物排成一排,他们的生命值各不相同,asuka有一个叫做"千方残光剑"的技能,可以先秒杀掉y个怪物,然后对任意个怪物造成总量小于等于x点的伤害,但是如 ...

最新文章

  1. Spring Boot注解大全,一键收藏了!
  2. 数据结构笔记 递推与迭代
  3. 想在小程序上“飙车”?特斯拉小程序做到了
  4. docker 删除容器_Docker (二) Windows10专业版安装教程
  5. j2me程序发布到手机
  6. SpringBoot v2.2.6 踩的坑 --- dubbo.scan.base_packages
  7. 纬度和日照时长的关系
  8. CentOS 7 更换 yum 源
  9. matlab plot subplot,Matlab使用subplot合并子图
  10. Vue3究竟好在哪里 等推荐
  11. 进一步了解 apt-get 的几个命令
  12. cs231n课程作业踩坑汇总
  13. (24)Verilog HDL条件语句:case语句
  14. iframe的onload在Chrome/Opera中执行两次Bug
  15. dbscan js 实现_DBSCAN在PySpark上的实现
  16. .net core在线考试系统源码
  17. Web版Excel制作过程分享
  18. 两种双绞线的线序568A与568B
  19. 查看世界编程语言排行榜
  20. 测试管理之--测试培训

热门文章

  1. hadoop思维导图
  2. 步步为营 .NET 设计模式学习笔记 六、Adapter(适配器模式)
  3. Ubuntu SVN安装使用命令
  4. Fork and Join: Java Can Excel at Painless Parallel Programming Too!---转
  5. Flask-uploads 简单使用
  6. 编译GCC4.8.2
  7. [转]ISTQB FL初级认证考试资料(中文)
  8. MySQL Profiling 的使用
  9. Ajax与JSON的一些总结(转)
  10. 【路径规划】Dijkstra算法——超详细原理图解