uoj206 [APIO2016]最大差分
Posted poorpool
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uoj206 [APIO2016]最大差分相关的知识,希望对你有一定的参考价值。
#include "gap.h"
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
ll a[100005];
ll findGap(int T, int n){
if(T==1){
ll l=0, r=1000000000000000000ll, mn, mx;
int lcnt=1, rcnt=n;
while(lcnt<=rcnt && l<=r){
MinMax(l, r, &mn, &mx);
if(mn!=-1) a[lcnt++] = mn;
if(mx!=-1) a[rcnt--] = mx;
l = mn + 1;
r = mx - 1;
}
ll re=0;
for(int i=2; i<=n; i++)
re = max(re, a[i]-a[i-1]);
return re;
}
else{
ll mn, mx;
MinMax(0, 1000000000000000000ll, &mn, &mx);
if(n<=2) return mx-mn;
ll lst=mn, len=(mx-mn-1)/(n-2)+1, s=mn+1, t, ans=0, lim=mx;
for(int i=1; i<=n-2; i++){
t = s + len - 1;
if(t>=lim) t = lim - 1;
if(s>t) break;
MinMax(s, t, &mn, &mx);
if(mx!=-1){
ans = max(mn - lst, ans);
lst = mx;
}
s = t + 1;
}
ans = max(ans, lim-lst);
return ans;
}
}
以上是关于uoj206 [APIO2016]最大差分的主要内容,如果未能解决你的问题,请参考以下文章