P5119 [USACO18DEC] Convention S
答案具有“最大等待时间的最小值。” 单调性
二分-》 单调性
>>>模拟时1~n
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<bits/stdc++.h> #define ll long long #define ddd printf("--------------debug\n"); using namespace std; int a[100010],n,m,c; int pd_ok(int x) { int fir=a[1],car=1,peo=1; for(int i=2;i<=n;i++)// { if(car>m) return 0; if(++peo>c||a[i]-fir>x) fir=a[i],car++,peo=1; //if() fir=a[i],car++; //peo++; } //return 1; return car<=m;//i==n -> > } int main() { ios::sync_with_stdio(false);cin.tie(0); cin>>n>>m>>c; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+1+n); // for(int i=1;i<=n;i++) cout<<a[i]; int l=0,r=a[n]-a[1]; while(l<r) { int mid=l+r>>1; if(pd_ok(mid)) r=mid; else l=mid+1; } cout<<l<<'\n'; return 0; }

浙公网安备 33010602011771号