码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 999F Cards and Joy 【dp】【性质】

时间:2018-06-25 22:53:50      阅读:604      评论:0      收藏:0      [点我收藏+]

标签:using   带来   class   namespace   ring   number   style   force   max   

 

 

 1 #include<iostream>
 2 #include<map>
 3 #include<cstring>
 4 using namespace std;
 5 
 6 
 7 //只需要考虑每个number带来的贡献,不是任何人favorite number的数没有贡献 
 8 int a[5005],h[15],favorite[505];//favorite[i]为第i个player的favorite number
 9 int vis[100005],ans;
10 map<int,int> m1,m2;
11 
12 int dp[505][5005];// dp[i][j]为i个人分j个favorite number的最大joy 
13 
14 int main(){
15     int n,k; cin>>n>>k;
16     for(int i=1;i<=n*k;i++) {
17         cin>>a[i];
18         m1[ a[i] ] ++;//这个number一共有多少个 
19     }
20     for(int i=1;i<=n;i++){
21         cin>>favorite[i];
22         m2[ favorite[i] ]++;//这个number是多少人的favorite 
23     }
24     for(int i=1;i<=k;i++) cin>>h[i];
25     
26     for(int i=1;i<=n;i++){
27         for(int j=0;j<=i*k;j++){
28             for(int c=0;c<=min(j,k);c++) dp[i][j] = max( dp[i][j],dp[i-1][j-c]+h[c] );//第i个人分c个favorite number 
29         }
30     }
31     
32     for(int i=1;i<=n;i++){
33         if( vis[ favorite[i] ] ) continue;
34         ans+=dp[ m2[favorite[i]] ][ min( m2[favorite[i]]*k, m1[ favorite[i]]  ) ];
35         vis[ favorite[i] ] = 1;
36     }
37     
38     cout<<ans;
39     
40     return 0;
41 }

 

Codeforces 999F Cards and Joy 【dp】【性质】

标签:using   带来   class   namespace   ring   number   style   force   max   

原文地址:https://www.cnblogs.com/ZhenghangHu/p/9226458.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!