题干:

链接:https://ac.nowcoder.com/acm/contest/82/B
来源:牛客网

给你一个长为n的序列a和一个常数k

有m次询问,每次查询一个区间[l,r]内所有数最少分成多少个连续段,使得每段的和都 <= k

如果这一次查询无解,输出"Chtholly"

输入描述:

第一行三个数n,m,k
第二行n个数表示这个序列a
之后m行,每行给出两个数l r表示一次询问

输出描述:

输出m行,每行一个整数,表示答案

示例1

输入

复制

5 5 7
2 3 2 3 4
3 3
4 4
5 5
1 5
2 4

输出

复制

1
1
1
2
2

备注:

对于100%的数据,1 <= n , m <= 1000000 , 1 <= ai , k <= 1000000000

解题报告:
首先发现可以贪心,这样是O( nm )的
由于k固定,考虑数组中每个位置i向最大的j+1使得a[i..j]的和<=k连边。这个连边的结构是个森林,每次查询即查询树的一条链,可以倍增维护。O( nlogn + mlogn )

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define FF first
#define SS second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 1e6 + 5;
int n,m;
ll K,a[MAX],sum[MAX];
int f[MAX][22];
int main()
{cin>>n>>m>>K;for(int i = 1; i<=n; i++) scanf("%lld",a+i),sum[i] = sum[i-1] + a[i];for(int i = 1; i<=n; i++) {int pos = upper_bound(sum+i,sum+n+1,sum[i-1]+K) - sum;f[i][0] = pos; }for(int j = 0   ; j<=21; j++) f[n+1][j] = n+1;for(int j = 1; j<=21; j++) {for(int i = 1; i<=n; i++)f[i][j] = f[f[i][j-1]][j-1];}while(m--) {int l,r;scanf("%d%d",&l,&r);int ans = 0;for(int j = 21; j>=0; j--) {if(f[l][j] <= r) ans += (1<<j),l = f[l][j];}if(f[l][0] > r) {printf("%d\n",ans+1);}else printf("Chtholly\n");}return 0 ;
}

【牛客 - 82B】区间的连续段(贪心,建图,倍增)相关推荐

  1. 【牛客NOIP模拟】路径难题【建图】【最短路证明】

    题意:一张 nnn 个点 mmm 条边的无向图,边带距离,可以坐出租车,花费为距离除以常数 rrr 向上取整:也可以坐公交车,每路车行驶路线给定,无论坐多少站花费都为 cic_ici​ (每路车可能不 ...

  2. 小小粉刷匠 牛客(区间dp)

    链接:https://ac.nowcoder.com/acm/problem/16129 来源:牛客网 题目描述 "lalala,我是一个快乐的粉刷匠",小名一边快活地唱着歌,一边 ...

  3. 牛客 华华听月月唱歌 贪心

    https://ac.nowcoder.com/acm/contest/392/A 链接:https://ac.nowcoder.com/acm/contest/392/A 来源:牛客网 题目描述 月 ...

  4. 牛客每日一题3.31 城市网络 树上倍增

    牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 有一个树状的城市网络(即 n 个城 ...

  5. 【牛客 - 370B】Rinne Loves Graph(分层图最短路 或 最短路dp)

    题干: Island 发生了一场暴乱!现在 Rinne 要和 Setsuna 立马到地上世界去. 众所周知:Island 是有一些奇怪的城镇和道路构成的(题目需要,游戏党勿喷),有些城镇之间用双向道路 ...

  6. 牛客 - 骚区间(线段树+思维)

    题目链接:点击查看 题目大意:给出一个 1 ~ n 的排列 a ,现在规定骚区间当且仅当 a[ l ] 是 [ l , r ] 这段区间内的次小值,同时 a[ r ] 是 [ l , r ] 这段区间 ...

  7. 牛客 - umi和弓道(几何+贪心)

    题目链接:点击查看 题目大意:在一个二维平面上,给出一个初始点 P ,接下来给出 n 个点当做靶子,现在初始节点会射击每个靶子,我们可以进行的操作是在 x 轴或 y 轴上建造一段连续长度的木板,使得初 ...

  8. 【Nowcoder】牛客小白月赛26 H 保卫家园 | 贪心、扫描线

    emmm-考试周一天一套小白月赛保持手感- 别问为什么,怕被太难的题卡的挂科- 本来不想写什么题解,不过这题确实有妙处,就记录一下吧 题目大意: 为了抵御深渊的蔓延,被深渊毁掉家园的人们组建法兰不死队 ...

  9. 2021牛客多校10 - Train Wreck(贪心)

    题目链接:点击查看 题目大意:给出一个合法的括号序列,再给出 nnn 个数字,括号序列对应着入栈和出栈,问是否存在一个合法的顺序,使得 nnn 个数字按照括号序列操作后,每次入栈后,栈中的序列都是不同 ...

最新文章

  1. 导师:学AI的不懂计算机视觉,那你别学了
  2. Vue入门三、过滤器filter
  3. 推荐11个构建和测试API的顶级工具
  4. boost::make_recursive_variant相关的测试程序
  5. python高级特性:迭代器与生成器
  6. 冠榕智能灯光控制协议分析(controller-node)
  7. php 取整函数 ceil floor round intval 随笔
  8. Linux /proc目录详解
  9. 最全下载jar包的网站
  10. [AIR] 获取U盘,打开U盘
  11. linux定时任务的设置 crontab 配置指南
  12. Spring Boot干货系列:(十二)Spring Boot使用单元测试
  13. php进度条实例,JavaScript_一个简单的jquery进度条示例,用jQuery实现的最简单的进度条 - phpStudy...
  14. dev、test和prod是什么意思?
  15. 将坐标系统保存为一个文件.prj
  16. Windows Server 2008 R2中Windows Server Backup功能之备份、恢复
  17. 最具创新价值人工智能产品 Imagination PowerVR NNA再获殊荣
  18. Java程序员面试宝典——重要习题整理
  19. php 代码加密运行,php加密后可以直接运行吗
  20. 夺宝答题王小程序完整源码(含前端/后端以及数据库脚本)

热门文章

  1. java 数据库连接池 开源_开源自己开发的一个JAVA数据库连接池,效果还算可以。...
  2. linux配置服务器超时退出,Linux下实现不活动用户登录超时后自动登出
  3. B. Trouble Sort Codeforces Round #648 (Div. 2)
  4. DAC8563芯片参考手册重要内容总结
  5. spring webflow : 上传单个文件实例
  6. maya怎么贴膜_maya怎么渲染成白膜?
  7. html5 php idea,五个HTML5新特性
  8. 在UE中自由绘制基本图元的几种方法
  9. a5d27 emmc启动 修改2
  10. python中的ix是啥_详谈Pandas中iloc和loc以及ix的区别