Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
第一次自己推方程AC,顺便说说自己的思路。留名纪念。 设b[i]=a[i]+a[i+1]+a[i+m-1],即按照题意把m个车厢合为一个。 即当m==2时。 b[1]=a[1]+a[2],b[2]=a[2]+a[3]........以此类推。 所以就将此问题转换为01背包,也就是每个b[i]放于不放的问题。 由题可知背包大小为3,所以设DP[50001][3]; 方程为 dp[i][j]=max(dp[i-1][j],dp[k][j-1]+b[i]); if(i-m<0) k=0; else k=i-m; i表示第几组b[i],j表示背包大小。 最后输出dp[n-m+1][3]即可。 Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator