我的 O(n2) 卡过了
Code:
#include<cstdio>
#define ri register int
using std::getchar;
using std::putchar;
bool isdigit(char c){return (c<='9')&&(c>='0');}
int n,a[114514],sum[114514],d[114514],dp[114514];
inline int qr() {
ri x = 0, f = 0, ch;
while(!isdigit(ch = getchar())) f |= ch == '-';
while(isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar();
return f ? -x : x;
}
inline void qw(int x)
{
printf("%d",x);
}
int main()
{
n=qr();
for(ri i=1;i<=n;i++)a[i]=qr();
for(ri i=n;i>0;i--)sum[i]=sum[i+1]+a[i];
for(ri i=n;i>0;i--)
{
for(ri j=i;j<=n;j++)
{
if(sum[i]-sum[j+1]<d[j+1])continue;
d[i]=sum[i]-sum[j+1];
dp[i]=dp[j+1]+1;
break;
}
}
qw(dp[1]);
}