随笔-38  评论-23  文章-0  trackbacks-0

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

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

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

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

12node r[300];
13int dp[300][300];
14int 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}

posted on 2009-05-25 15:35 米游 阅读(619) 评论(0)  编辑 收藏 引用 所属分类: ACM

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理