codeforces #267 C George and Job(DP)

2015-07-20 17:39:06 · 作者: · 浏览: 5

?

太弱了。。这题当时都没做出来。。思路是有的,但是自己出的几组数组总是过不去。。今天又重新写了一遍,才发现当时一个地方脑残了。。每次选的最大值应该是与更新后的位置的前一个比而不是当前所在的位置。

二维DP。

代码如下:

?

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include
           #include 
           
             #include 
            
              using namespace std; #define LL __int64 LL dp[5001][5001], a[6000], b[6000]; int main() { LL n, m, k, i, j, s; scanf(%I64d%I64d%I64d,&n,&m,&k); memset(dp,0,sizeof(dp)); memset(b,0,sizeof(b)); for(i=0;i
             
              =1;j--) { dp[i+m-1][j]=max(dp[i-1][j-1]+b[i],dp[i+m-2][j]); } } /*for(i=0;i
              
               

?