显然看着就是二分,仔细看的话显然刷的题数随n增大单调不升. 挂了一发是因为无解输出一个-1而不是两个…… #include<cstdio> #include<algorithm> using std::max; typedef long long ll; ll l,r,s,m; int n,k,t,a[100000]; int foo(ll v){ for(int i=t=s=0; i!=n;++i) if((s=max( s+a[i],0ll))>=v) s=0,++t;…
二分答案,分别往尽量小的和尽量大的二分即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long #define N 100010 #define inf 100000000000000ll…