博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
csu 1984: LXX的能力值
阅读量:6925 次
发布时间:2019-06-27

本文共 1429 字,大约阅读时间需要 4 分钟。

      Time Limit: 3 Sec     Memory Limit: 128 Mb     Submitted: 17     Solved: 6    


Description

LXX学习了N种算法知识,并且对于不同的算法知识掌握的程度不一样。为了能够在比赛中取得更好的成绩,他需要把自己的弱项填补。 就像木桶一样,能盛多少水,并不取决于桶壁上最高的那块木板,而恰恰取决于桶壁上最短的那块。已知LXX对第i种算法知识的能力值为Ai。LXX去向好心的上帝求救,上帝送给了他一个修补工具,但是最多只能使用M(M*L<N)次,且只能使连续的不超过L种知识的能力值提高至任意数值。现在问如何修补才能使能力值最小的最大呢?能力值的序列可以看成跟木桶类似的环状。

Input

第1行包含3个正整数,N, M, L。1≤N≤1000,1≤L≤20

第2行包含N个正整数,A1...Ai...An,1≤Ai≤1000000000

Output

每行输出结果。

Sample Input

8 2 38 1 9 2 3 4 7 5

Sample Output

7

Hint

我们要使最终能力值的最小值尽可能大,求这个最大的最小能力值。

这是一个环状木桶,最好的办法是,我们修补{8,1,2}和{4,5,6}这两组位置(即把他们的值提高到很大很大),还剩下两个数没被提升,第3个数9和第7个数7,最小值是7。

Source

2017年暑期集训校队选拔

Author

廖璇璇

 
 
题解:
二分能力值最大  的最小能力值      
再遍历一次数组   检查可以达到这个最大的最小能力值不   就可以得到答案
队友问过我一个问题    :   我二分的那个能力值  要是数组中没有那个值怎么办
其实这个是可以不用去管的     这么说  数组中没有m这个值但是有m+1,m+2    
那么我们二分的时候  如果m可以得话   m+1肯定也是可以得  
所以二分求出来的  一定会是数组中有的元素
 
 
 
#include 
#include
#include
#include
#include
using namespace std;long long int a[2020];long long int n,m,l;bool zs(long long int y,long long int x){ long long int mm=m; for(long long int i=0; i
a[i])mi=a[i]; } while(mi<=ma) { mid=(mi+ma)>>1; if(jug(mid)) { mi=mid+1; } else ma=mid-1; } // printf("%d\n",mid); if(jug(mid)) { while(jug(mid)) { mid++; } printf("%lld\n",mid-1); } else { while(!jug(mid)) { mid--; } printf("%lld\n",mid); } } return 0;}

 

转载于:https://www.cnblogs.com/52why/p/7460161.html

你可能感兴趣的文章
mongodb的资料
查看>>
分享平时工作中那些给力的shell命令
查看>>
我的友情链接
查看>>
cpp命名空间
查看>>
自然语言处理之:搭建基于HanLP的开发环境(转)
查看>>
截图留存
查看>>
web复习day03:request
查看>>
LVS负载均衡
查看>>
RabbitMQ使用
查看>>
电子签名助力电子处方合规高效,实现医院管理全程电子化
查看>>
contentType
查看>>
Python3网络爬虫(十一):爬虫黑科技之让你的爬虫程序更像人类用户的行为(代理IP池等)...
查看>>
好程序员web前端分享CSS元素类型
查看>>
成都大数据语言培训:改变人们的生活的大数据趋势
查看>>
tomcat6-7配置管理用户
查看>>
意法半导体 STM32F030F4 芯片解密 工业控制
查看>>
ansible基本介绍
查看>>
我的友情链接
查看>>
[Java] 字符串
查看>>
URL编码
查看>>