hiho1362 修补木桶
来源:互联网 发布:linux多线程服务端编程 编辑:程序博客网 时间:2024/06/10 05:43
/*
最小值最大用二分,枚举起点,二分答案,判断答案是否合法
因为L*M<N,每选L次起点,判断需要修补的最小值,如果比M小
答案可以更大一点,如果比M大,答案小一点
*/
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 100000000
int a[1010];
int L,M,N;
最小值最大用二分,枚举起点,二分答案,判断答案是否合法
因为L*M<N,每选L次起点,判断需要修补的最小值,如果比M小
答案可以更大一点,如果比M大,答案小一点
*/
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 100000000
int a[1010];
int L,M,N;
int bsol(int x)
{
int num=0;
for(int i=0;i<N;i++)
{
if(a[i]<x)
{
num++;
i+=(L-1);
}
}
return num;
}
{
int num=0;
for(int i=0;i<N;i++)
{
if(a[i]<x)
{
num++;
i+=(L-1);
}
}
return num;
}
int main()
{
cin>>N>>M>>L;
for(int i=0;i<N;i++)
cin>>a[i];
int l=0,r=maxn;
while(l<=r)
{
int mid=(l+r)>>1;
int num=100000;
for(int i=0;i<L;i++)
{
for(int j=0;j<N-1;j++)
swap(a[j],a[j+1]);//枚举起点
num=min(num,bsol(mid));
}
if(num<=M)
l=mid+1;
else
r=mid-1;
}
cout<<r<<endl;
}
{
cin>>N>>M>>L;
for(int i=0;i<N;i++)
cin>>a[i];
int l=0,r=maxn;
while(l<=r)
{
int mid=(l+r)>>1;
int num=100000;
for(int i=0;i<L;i++)
{
for(int j=0;j<N-1;j++)
swap(a[j],a[j+1]);//枚举起点
num=min(num,bsol(mid));
}
if(num<=M)
l=mid+1;
else
r=mid-1;
}
cout<<r<<endl;
}
0 0
- hiho1362 修补木桶
- hihocoder 1362 修补木桶
- HihoCoder]#1362 : 修补木桶
- 【二分枚举】修补木桶
- hihocoder 修补木桶
- Hihocoder #1362 : 修补木桶 (二分)
- hihocoder #1362 : 修补木桶(二分)
- hihocoder #1362 : 修补木桶(二分+dp)
- 木桶定律
- 木桶效应
- 再看木桶
- 木桶理论
- 木桶理论
- 【木桶理论】
- 木桶法则
- 木桶效应
- 木桶肥牛鸭肠
- 木桶理论
- windows删除node_modules[文件名或扩展名太长,目录层次超过无法删除的问题]
- BGRABitmap图像操作6:前面的长方形改成圆角
- CVTE面试总结
- 关于javaEE的web项目——WEB-INF
- 堆和栈的区别
- hiho1362 修补木桶
- 决策树
- Java中实现Comparable接口和Comparator接口的排序算法效率比较
- 腾讯Tencent
- 魔都一月记
- ios属性和实例变量
- codeforces 165C Another Problem on Strings 双指针
- [leetcode]Maximum Subarray
- UVa1583 - Digit Generator 生成元 (java版本)