本文共 630 字,大约阅读时间需要 2 分钟。
#include#include #include #include #include using namespace std;long long a[1000010],f[1000010];long long n,r,c;bool check(int maxx){ for(int i=0; i<=c-1; i++) f[i]=0; for(int i=c; i<=n; i++) { f[i]=f[i-1]; //赋初值 if(a[i]-a[i-c+1]<=maxx) //当前差值 <最大差值才能保证枚举的这一行是合法的。 f[i]="f[i-c]+1;" } if(f[n]> =r) //满足行数要求 return 1; else return 0;}int main(){ cin>>n>>r>>c; for(int i=1; i<=n; i++) scanf("%lld",&a[i]); sort(a+1,a+1+n); int l=0,r=a[n]-a[1],mid; while(l >1; if(check(mid)) r=mid; else l=mid+1; } cout< 最大差值才能保证枚举的这一行是合法的。>
转载地址:http://atle.baihongyu.com/