数 据 过 淼
查看原帖
数 据 过 淼
313716
EgLund楼主2021/1/14 23:16

我的 O(n2)O(n^2) 卡过了

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]);
}
2021/1/14 23:16
加载中...