感觉动态规划很模糊,怎么办呢???
狂刷题吧!!!!!!!!!!!!!!!!!!!!!!!!!
1.POJ 2479 Maximum sum
首刷水题!!!!
双向统计最大和。
AC代码如下:
#include<iostream> #include<cstring> #include<cstdio> #define inf -1000000000 using namespace std; int main() { int t; scanf("%d",&t); while(t--) { int n; int i; scanf("%d",&n); int a[50005],dp[50005]; memset(dp,0,sizeof dp); for(i=1;i<=n;i++) scanf("%d",&a[i]); int sum=0; int maxx=inf;//需要取到负最小 for(i=1;i<n;i++) { sum+=a[i]; if(sum>maxx) maxx=sum; dp[i]=maxx; if(sum<0) sum=0; } int ans=inf;maxx=inf;sum=0; for(i=n;i>1;i--) { sum+=a[i]; if(sum>maxx) maxx=sum; ans=max(ans,maxx+dp[i-1]); if(sum<0) sum=0; } cout<<ans<<endl; } return 0; }
动态规划 is beginning。。。。。。。。。
时间: 2024-10-08 03:06:50