zoj 3211 Dream City

zoj 3211 Dream City

The 6th Zhejiang Provincial Collegiate Programming Contest  的J题 比赛的时候少考虑了一个排序..DP状态都出来了 居然还是少考虑一个情况..

6题与7题的差距是一个天一个地 哎....

dp[i][j] 表示 前i颗树第j天可达到的最大值

 1 #include < iostream >
 2 #include < algorithm >
 3 using   namespace  std;
 4 struct  node
 5 {
 6    int a,b;
 7}
;
 8 bool   operator < ( const  node &  d, const  node &  e)
 9 {
10    return d.b<e.b;
11}

12 node r[ 300 ];
13 int  dp[ 300 ][ 300 ];
14 int  main()
15 {
16    int n,m,t;
17    cin>>t;
18    while(t--)
19    {
20        cin>>n>>m;
21        for(int i=1;i<=n;i++)
22            cin>>r[i].a;
23        for(int i=1;i<=n;i++)
24            cin>>r[i].b;
25        sort(r+1,r+n+1);
26        memset(dp,0,sizeof(dp));
27        //dp[i][j] 表示前i个第j天的最大值
28        for(int i=1;i<=n;i++)
29            for(int j=1;j<=m;j++)
30            {
31                if(j>i)
32                    break;
33                dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]+r[i].a+r[i].b*(j-1));
34            }

35        cout<<dp[n][m]<<endl;
36    }

37}

你可能感兴趣的:(zoj 3211 Dream City)