NOIP2008 提高組 C - 傳紙條

來源:互聯網
上載者:User

   上周的隊內練習學弟選了這題來做~~當時糾結了很久也沒搞出來...一個紙條傳下去很好做~~但是兩個紙條我當時就是沒想通如何來避免後效性..

   這道題的DP思想關鍵就是找到能表示出來的唯一狀態...用一個三維數組就行了...因為紙條只能沿著斜線方向來傳遞..那麼用dp [ k ] [ i ] [ j ] 表示從(1,1)出發的兩個線路除起點沒有公用點到達了第k號斜線的i與j能取得的最大值...只要狀態找出來了..狀態轉移就簡單了..更新dp [ k ] [ i ] [ j ] 無非就是4種情況來更新找到存在的並且最大的一直做到下面去就可以了..

   剛還看了下Byvoid大牛的解題報告~~用的是高端洋氣的最小費用流~~慚愧的是我幾個月前就寫過最大流了卻一直沒去繼續深入~~~網路流還是很重要的~~要花時間來搞!

Program:

#include<iostream>using namespace std;int m,n,i,j,k,s[101][101],dp[101][101][101],ans;int main(){     freopen("input.txt","r",stdin);     freopen("P.out","w",stdout);     while (~scanf("%d%d",&m,&n))     {           for (i=1;i<=m;i++)              for (j=1;j<=n;j++) scanf("%d",&s[i][j]);                 memset(dp,0,sizeof(dp));            dp[3][1][2]=s[2][1]+s[1][2];           for (k=4;k<m+n;k++)           {                  for (i=1;i<k;i++)                   if (k-i<=m)                 {                        for (j=i+1;j<k;j++)                       if (k-j<=m)                       {                                    if (i!=1) dp[k][i][j]=max(dp[k][i][j],dp[k-1][i-1][j-1]);                              if (i!=1 && j!=k-1) dp[k][i][j]=max(dp[k][i][j],dp[k-1][i-1][j]);                              if (j-i!=1) dp[k][i][j]=max(dp[k][i][j],dp[k-1][i][j-1]);                              if (j!=k-1) dp[k][i][j]=max(dp[k][i][j],dp[k-1][i][j]);                               dp[k][i][j]+=s[k-i][i]+s[k-j][j];                       }                 }           }           if (m==1 || n==1) ans=0;           else ans=dp[m+n-1][n-1][n];           printf("%d\n",ans);      }      return 0;   }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.