
题目地址
题解
水$DP$,设$f(i)$为以$i$为某一组结尾的最大组数,那么
并且$sum[i]-sum[j]ge 0$,$f(j)$有意义。
被粗体字部分坑了一波。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
#include <cstdlib> #include <algorithm> #include <cstring> #include <cctype> #define INF 2000000000 using namespace std; typedef long long ll; int (){ int f=1,x=0;char c=getchar(); while(c<'0'||c>'9'){if(c=='-')f=-f;c=getchar();} while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar(); return f*x; } int n,a[1005],sum[1005]={0},dp[1005]={0}; void init(){ n=read(); for(int i=1;i<=n;i++)a[i]=read(),sum[i]=sum[i-1]+a[i],dp[i]=(sum[i]>=0); } void solve(){ if(sum[n]<0){ printf("Impossiblen"); return ; } for(int i=1;i<=n;i++) for(int j=0;j<i;j++) if(sum[i]-sum[j]>=0&&sum[j]>=0) dp[i]=max(dp[i],dp[j]+1); printf("%dn",dp[n]); } int main(){ init(); solve(); return 0; }
|
近期评论