考虑每种c都是可以独立进行计算的,所以这题的答案等价于每种c的最优解之和

计算每种c的最优解:把问题转化成求出每种c的最大值,再转化成i个人分j张卡片的最大收益

dp[i,j]表示i个人分j张卡片的最大收益,由于h对于每种状态都是确定的,所以我们只要进行一次打表O(n*k*n*k),这个dp打表类似于给定n*k容量的背包,然后每次取体积不超过k的物品,取n次的价值最大

#include<bits/stdc++.h>
using namespace std;
#define maxn 100005 int dp[][],n,k,f[maxn],c[maxn],h[maxn]; void init(){//处理出i个人分j张卡的最大收益,类似背包
for(int i=;i<=n;i++)
for(int j=;j<=n*k;j++)
for(int l=;l<=min(j,k);l++)
dp[i][j]=max(dp[i][j],dp[i-][j-l]+h[l]);
} int main(){
cin>>n>>k;
for(int i=;i<=n*k;i++){
int x;cin>>x;
c[x]++;
}
for(int i=;i<=n;i++){
int x;cin>>x;
f[x]++;
}
for(int i=;i<=k;i++)cin>>h[i]; init(); int ans=;
for(int i=;i<=;i++)
if(f[i]!=)ans+=dp[f[i]][c[i]]; cout<<ans<<'\n';
}

背包dp+打表处理——cf999F的更多相关文章

  1. 背包dp整理

    01背包 动态规划是一种高效的算法.在数学和计算机科学中,是一种将复杂问题的分成多个简单的小问题思想 ---- 分而治之.因此我们使用动态规划的时候,原问题必须是重叠的子问题.运用动态规划设计的算法比 ...

  2. hdu 5534 Partial Tree 背包DP

    Partial Tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

  3. HDU 5501 The Highest Mark 背包dp

    The Highest Mark Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...

  4. Codeforces Codeforces Round #319 (Div. 2) B. Modulo Sum 背包dp

    B. Modulo Sum Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/577/problem/ ...

  5. noj [1479] How many (01背包||DP||DFS)

    http://ac.nbutoj.com/Problem/view.xhtml?id=1479 [1479] How many 时间限制: 1000 ms 内存限制: 65535 K 问题描述 The ...

  6. HDU 1011 树形背包(DP) Starship Troopers

    题目链接:  HDU 1011 树形背包(DP) Starship Troopers 题意:  地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...

  7. BZOJ 1004: [HNOI2008]Cards( 置换群 + burnside引理 + 背包dp + 乘法逆元 )

    题意保证了是一个置换群. 根据burnside引理, 答案为Σc(f) / (M+1). c(f)表示置换f的不动点数, 而题目限制了颜色的数量, 所以还得满足题目, 用背包dp来计算.dp(x,i, ...

  8. G - Surf Gym - 100819S -逆向背包DP

    G - Surf Gym - 100819S 思路 :有点类似 逆向背包DP , 因为这些事件发生后是对后面的时间有影响. 所以,我们 进行逆向DP,具体 见代码实现. #include<bit ...

  9. 树形DP和状压DP和背包DP

    树形DP和状压DP和背包DP 树形\(DP\)和状压\(DP\)虽然在\(NOIp\)中考的不多,但是仍然是一个比较常用的算法,因此学好这两个\(DP\)也是很重要的.而背包\(DP\)虽然以前考的次 ...

随机推荐

  1. http://localhost:8080 is requesting your username and password

    after you startup your tomcat,  you type a concrete request url  in broswer, the tomcat probably wil ...

  2. 使用sublime+platUML快速画流程图

    程序员难免要经常画流程图,状态图,时序图等.以前经常用 visio 画,经常为矩形画多大,摆放在哪等问题费脑筋.有时候修改文字后,为了较好的显示效果不得不再去修改图形.今天介绍的工具是如何使用 Sub ...

  3. angularJS select下拉框检测改变

    html:(已引入amazeUI) <div style="width:70px;display:inline-block;"> <form class=&quo ...

  4. IDA静态编译之sub

    int __thiscall sub_10009800(const wchar_t *this, int a2, int a3, HKEY hKey){ } 说明:__thiscall  dll内子函 ...

  5. d3创建多个svg元素

    当然也可以创建dom var svg = d3.select('#svg'); svg .slectAll('circle.bb')     //选中DOM中的所有circle.bb标签,当DOM中不 ...

  6. java web应用用户上传图片的存储地址

    原来工程的上传图片存储地址在web应用的目录下,并且是硬编码到其中的: 每次使用maven tomcat:redeploy以后,这个目录就没有了. 现在想要把上传图片的位置移动到tomcat的weba ...

  7. Shell脚本 全局变量、局部变量

    在不同的作用域中,同名的变量不会相互干涉,就好像 A 班有个叫小明的同学,B 班也有个叫小明的同学,虽然他们都叫小明(对应于变量名),但是由于所在的班级(对应于作用域)不同,所以不会造成混乱.但是如果 ...

  8. [原创] Java 流布局管理器 FlowLayout

    参数原型: public FlowLayout(int align, int hgap, int vgap) { this.hgap = hgap; this.vgap = vgap; setAlig ...

  9. JavaScript中的节流和防抖

    节流: 在规定时间内,多次触发事件,但是只执行一次 场景:输入框搜索,地图渲染 优化用户体验 /** * 节流 规定时间内不管触发多少次只执行一次 * @param {Function} fn 实际要 ...

  10. NX二次开发-UFUN创建工程图注释UF_DRF_create_note

    NX9+VS2012 #include <uf.h> #include <uf_drf.h> #include <NXOpen/Annotations_Note.hxx& ...