CSU 1956 數字和 二分 思維

2021-08-02 13:58:22 字數 763 閱讀 6479

題目鏈結

題意:

讓你選取三個位置,使得數列分成四部分,每部分的和都相等,問你能否成功.(ai>=0&&ai<=1e9,)

思路:這個題的話,由於字首和都是遞增的,所以的話我們可以開乙個雙指標,乙個從前往後,乙個從後往前,找到和相等的時候,就將中間剩下的部分二分,找到這個中間位置看是否滿足,同時維護字典序最小.

#includeusing namespace std;

const int maxn=1e5+10;

typedef long long ll;

int n;

ll a[maxn];

ll s[maxn];

int main()

int p1=1,p2=0,p3=n;

int c1=-1,c2=-1,c3=-1;

while(p1+1<=p3+1-4)

if(p1>p3-6)

break;

p2=lower_bound(s+p1+2,s+p3-1,s[p1]+s[p1+1])-s;

if(s[p1]==s[p3-2]-s[p2+1]&&p3-p2>=4)

if(c1p2||(c2==p2&&c3>p3))

}p3--;

}if(c1==-1)

printf("-1\n");

else

printf("%d %d %d\n",c1+1,c2+1,c3-1);

}return 0;

}

二分 差分 思維

二分 差分 思維 當猜了乙個數 x 總共有三種情況 裁判說數大了,那麼裁判說對的取值範圍是 x 裁判說數小了,那麼裁判說對的取值範圍是 x,裁判說數一樣,那麼裁判說對的取值範圍是 x,x 那麼我們只需要求最大有多少個區間重疊了就行了,問題就轉化成了區間的修改,單點查詢,可以考慮差分了。注意題目資料 ...

攀爬 二分, 思維

若存在乙個合法的攀爬序列,則其形式一定是 ak i 1 m ai bi la sum limits m a i b i geq l ak i 1 m ai bi l,於是考慮列舉 a ka k ak 設 di ai b id i a i b i di ai bi 按 d dd從大到小排序,然後 o ...

D Max Median 二分 思維

d.max median 二分 思維 題目大意 給你乙個長度為n的序列,乙個長度為 x 的中位數是 這個序列重新排序之後的 frac 向下取整的位置,讓你求長度至少為 k 的子串行的最大中位數是多少?題解 include using namespace std typedef long long l...