Day3-Q-修补木桶 HihoCoder1362
一只木桶能盛多少水,并不取决于桶壁上最高的那块木板,而恰恰取决于桶壁上最短的那块。
已知一个木桶的桶壁由N块木板组成,第i块木板的长度为Ai。
现在小Hi有一个快捷修补工具,每次可以使用修补工具将连续的不超过L块木板提高至任意高度。
已知修补工具一共可以使用M次(M*L<N),如何修补才能使最短的那块木板最高呢?
注意: 木板是环形排列的,第N-1块、第N块和第1块也被视为连续的。
Input
第1行:3个正整数,N, M, L。分别表示木板数量,修补工具使用次数,修补工具每次可以同时修补的木板数。 1≤N≤1,000,1≤L≤20,M*L<N
第2行:N个正整数,依次表示每一块木板的高度Ai,1≤Ai≤100,000,000
Output
第1行:1个整数。表示使用修补工具后,最短木块的所能达到的最高高度
Sample Input
8 2 3
8 1 9 2 3 4 7 5
Sample Output
7
Hint
第一个修补工具覆盖[2 3 4]
第二个修补工具覆盖[5 8 1]
思路:可贪心验证+答案单调性,二分答案,验证时枚举起点即可,代码如下:
const int maxm = ;
const int INF = 0x7fffffff; int buf[maxm], N, M, L; bool check(int d) {
int start = , sum;
while(start < N) {
sum = ;
for(int i = start; i < start + N;) {
if(buf[i % N] < d) {
i += L;
sum++;
} else
i++;
}
if(sum <= M)
return true;
start++;
}
return false;
} int main() {
scanf("%d%d%d", &N, &M, &L);
int l = INF, r = -INF, mid;
for(int i = ; i < N; ++i) {
scanf("%d",&buf[i]);
l = min(l, buf[i]), r = max(r, buf[i]);
}
while(l <= r) {
mid = (l + r) >> ;
if(check(mid))
l = mid + ;
else
r = mid - ;
}
printf("%d\n", r);
return ;
}
Day3-Q-修补木桶 HihoCoder1362的更多相关文章
- IGS_学习笔记03_Integrated SOA Gateway设定配置(案例)
20150506 Created By BaoXinjian
- 三种root的修补方式
三种root的修补方式 system/core/adb/abd.c adbd漏洞,请看abd.c的第917行/* then switch user and group to "shell&q ...
- 纪中2018暑假培训day3提高a组改题记录(混有部分b组)
day3 模拟赛,看了看a组题,发现是博弈论,非常开心(因为好玩),于是做的a组.结果差点爆零,死命纠结t1的sg函数,但其实只是一个dp,不用扯到sg函数的那种. t1: Description 被 ...
- 8.6 正睿暑期集训营 Day3
目录 2018.8.6 正睿暑期集训营 Day3 A 亵渎(DP) B 绕口令(KMP) C 最远点(LCT) 考试代码 A B C 2018.8.6 正睿暑期集训营 Day3 时间:5h(实际) 期 ...
- python2.0 s12 day3
s12 day3 视频每节的内容 03 python s12 day3 本节内容概要 第三天的主要内容 上节没讲完的: 6.集合 7.collections 1)计数器 2)有序字典 3)默认字典 4 ...
- CDQZ Day3
模拟题 day3出题人: liu_runda题目名称 摆渡 摆车 背包源程序文件名 boat.cpp ju.cpp pack.cpp输入文件名 boat.in ju.in pack.in输出文件名 b ...
- 让最新的 Android Q Beta 3 强制重启的 Project Mainline,到底是什么?
一. 序 最新的 Android 版本 Q,已经发布了 Android Q Beta 3,虽然没有正式发布,但是不少用户已经加入了测试计划,抢先体验 Android Q 的新功能. 近期不少体验用户反 ...
- 【寒假集训系列DAY3】
DAY2的坑之后会补上 DAY3 今天暴力分拿的还是不错的...60+30+25=115,但还是太弱了呀,每题都只会暴力(话说第3题直接输-1给了15分,本以为只会给5分,然后打了半个小时的爆搜... ...
- 2019暑期金华集训 Day3 图论
自闭集训 Day3 图论 NOI2019 D2T1 没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\). 也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集 ...
随机推荐
- ASA防火墙忘记密码之后的恢复步骤
ASA的密码恢复方法与路由器相似,修改配置寄存器的值,启动时绕过startup-config配置文件,重新配置密码. 密码恢复的步骤如下: (1)重新插拔电源线,重启ASA (2)按ESC键或Ctrl ...
- Cisco AP-了解AP镜像
Understanding Access Point OS Images IntroductionAll Cisco Aironet 802.11a/b/g/n and 11ac Wave 1 wir ...
- Leetcode 12,452,455-贪心算法
Leetcode第12题,整数转罗马数字,难度中等 整个题目比较好理解,难度也不大,就算不过脑子,用一串if也基本上可以解决问题,比如 /** 执行用时:6ms,在所有 Java 提交中击败了52.6 ...
- vue.js 强行赋值、刷新数组或者对象 方法之 $.set()
实际开发过程中,数据交互的的时候需要赋值,刷新,但是不可能每次赋值之后都刷新整个页面,所以就要用到 vue.js方法 $.set(),能实现赋值对象的局部刷新 语法:Vue.set(object, k ...
- MavenProfile简介
在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产使用(product)时,需要不停 ...
- 一种ui app写法
方法一: $(function(){ // 定义一个对象 var qx={}; qx.ui={}; qx.ui.getleft=function(){ alert('qx.ui.getleft'); ...
- Python实现图片识别加翻译【高薪必学】
Python使用百度AI接口实现图片识别加翻译 另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python交流.裙 :一久武其而而流一思(数字 ...
- TCP通讯代码
服务端代码: import socket server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 使用固定端口 server_ ...
- CentOS7.3下载地址
CentOS 7.3,是CentOS-7系列的第四个发行版本,官方版本号为7.3.1611.该版本的安装映像只有 64 位,具体的安装映像有以下几种: DVD版 推荐(迅雷下载):http://arc ...
- LeetCode 680. Valid Palindrome II(双指针)
题意:给定一个字符串,可以最多去掉一个字符,判断是否可以使该字符串成为一个回文串. 分析:head和tail双指针分别指向字符串首尾,如果s[head] != s[tail],则要么去掉s[head] ...