CF1006C Three Parts of the Array
Posted ivanovcraft
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF1006C Three Parts of the Array相关的知识,希望对你有一定的参考价值。
二分查找水题
记$sum[i]$为$d[i]$的前缀和数组
枚举第一段区间的结尾$i$
然后二分出$lower$_$bound(sum[n]-sum[i])$的位置$x$,如果$sum[x]$与$sum[n]-sum[i]$相等,且$x$大于$i$,更新答案
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int maxn=2e5+10; int n; long long sum[maxn],ans; int main() { scanf("%d",&n); for(int x,i=1;i<=n;i++) { scanf("%d",&x); sum[i]=sum[i-1]+x; } for(int i=1;i<=n;i++) if(sum[i]<=sum[n]/2) { int x=lower_bound(sum+1,sum+n+1,sum[n]-sum[i])-sum; if(x>=i&&sum[x]==sum[n]-sum[i]) ans=sum[i]; } printf("%lld ",ans); return 0; }
以上是关于CF1006C Three Parts of the Array的主要内容,如果未能解决你的问题,请参考以下文章
[题解] CF622F The Sum of the k-th Powers
CF622F The Sum of the k-th Powers (拉格朗日插值)
「CF622F」The Sum of the k-th Powers「拉格朗日插值」
[贪心] leetcode 927 Three Equal Parts
LeetCode 1013. Partition Array Into Three Parts With Equal Sum