欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

xzj 518 二分答案

时间:2024-05-18 12:25 作者:admin 点击:
#include iostream using namespace std; int L,N,M; int d[50050]={0}; bool pd(int mid){ int cnt=0; int s=0; for(int i=1;i=N+1;i++){ if(d[i]-smid)cnt++; else s=d[i]; } return cnt=M; } int main() { cinLNM; for(int i=1;i=N;i++) cind[i]; d[N+1]=L

#include <iostream>

using namespace std;

int L,N,M;

int d[50050]={0};

bool pd(int mid){

int cnt=0;

int s=0;

for(int i=1;i<=N+1;i++){

if(d[i]-s<mid)cnt++;

else s=d[i];

}

return cnt<=M;

}

int main()

{

   cin>>L>>N>>M;

for(int i=1;i<=N;i++) cin>>d[i];

d[N+1]=L;

int l=1,r=L;

while(l<r){

int mid=(l+r+1)/2;

if(pd(mid)) l=mid;

else r=mid-1;

}

cout<<l;

   return 0;

}

二分法:二分查找、二分答案

注意:

1、写代码时,主函数中的变量需要初始化。

2、写数组时,数组的范围不要使用变量,要根据题目设置的最大范围创建数组。

3、声明变量名时,算法结构的变量名尽量保持一致,养成习惯。

作业:1244,1912








(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%