codefoces 417D Cunning Gena 状压DP
题目链接:cf 417D
一个人有m道题要做,他自己不会做,有n个人可以让他选来帮他做,给出每个人可做的题,让他做题至少需要的显示器数目,以及雇他做题的代价,每个显示器需要花费b的代价,问做完所有题的代价最小是多少。
m的范围最大只有20,因此假如不考虑显示器的代价,这道题就是标准的状压DP了
多了个显示器的条件,只需要把人按显示器的需要量从小到大排序,然后做标准的状压DP,DP时不要考虑显示器的代价,求出当前的可行解,然后加上当前人的显示器的需要量的代价即可。
/******************************************************* File Name: 417d.cpp* Author: kojimai* Creater Time:2014年08月25日 星期一 10时02分00秒
******************************************************/#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
using namespace std;
long long dp[1<<20];//表示做出当前状态下所有题的最小雇佣代价
struct node
{int x;//雇佣代价int k;//所要的显示器的数目int state;//二进制表示出可做题的状态
}fr[105];
bool cmp(node a,node b)
{return a.k<b.k;
}
int main()
{int n,m,num;int b;cin>>n>>m>>b;for(int i=0;i<n;i++){cin>>fr[i].x>>fr[i].k>>num;//scanf("%d%d%d",&fr[i].x,&fr[i].k,&num);fr[i].state=0;int y;while(num--){scanf("%d",&y);fr[i].state+=(1<<(y-1));}}memset(dp,-1,sizeof(dp));sort(fr,fr+n,cmp);int all=(1<<m);long long ans=-1,tmp;dp[0]=0;for(int i=0;i<n;i++){for(int j=0;j<all;j++){if(dp[j]==-1)continue;int st=fr[i].state|j;if(dp[st]==-1)dp[st]=dp[j]+fr[i].x;elsedp[st]=min(dp[st],dp[j]+fr[i].x);}if(dp[all-1]!=-1){tmp=((long long)fr[i].k)*b+dp[all-1];if(ans==-1)ans=tmp;elseans=min(tmp,ans);}//cout<<"i="<<i<<" dp[all-1]="<<dp[all-1]<<endl;}cout<<ans<<endl;return 0;
}
codefoces 417D Cunning Gena 状压DP相关推荐
- POJ 1038 Bugs Integrated Inc (复杂的状压DP)
\(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...
- codeforces 8C. Looking for Order 状压dp
题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...
- UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)
整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...
- POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)
poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...
- 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★
昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激. P1879 [USACO06NOV]Corn Fields G 题目链接 输入 2 3 1 1 1 0 1 0 输出 9 一道简单的状压D ...
- hdu 4778 Gems Fight! 状压dp
转自wdd :http://blog.csdn.net/u010535824/article/details/38540835 题目链接:hdu 4778 状压DP 用DP[i]表示从i状态选到结束得 ...
- 【洛谷 P1896】[SCOI2005]互不侵犯(状压dp)
题目链接 题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 这是道状压\(DP\)好题啊.. ...
- P2340 奶牛会展(状压dp)
P2340 奶牛会展 题目背景 奶牛想证明它们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N 头奶牛进行 了面试,确定了每头奶牛的智商和情商. 题目描述 贝西有权选择让哪些奶牛参加展览.由 ...
- UVa 11825 (状压DP) Hackers' Crackdown
这是我做状压DP的第一道题,状压里面都是用位运算来完成的,只要耐下心来弄明白每次位运算的含义,还是容易理解的. 题意: 有编号为0~n-1的n台服务器,每台都运行着n中服务,每台服务器还和若干台其他服 ...
- bzoj1402 Ticket to Ride 斯坦纳树 + 状压dp
给定\(n\)个点,\(m\)条边的带权无向图 选出一些边,使得\(4\)对点之间可达,询问权值最小为多少 \(n \leqslant 30, m \leqslant 1000\) 首先看数据范围,\ ...
最新文章
- 离开页面前显示确认提示对话框(兼容IE,firefox) = how to Catch Win...
- YOLOv3: 训练自己的数据(绝对经典版本1)
- Approximate Nearest Neighbors.接近最近邻搜索
- c语言阶乘分解成素因子,阶乘的素因子分解 51nod 1189
- java将图片变成圆角_android图片处理之让图片变成圆形
- 操作系统源代码_国产操作系统“之光”?Windows XP绝密源代码泄露,BT种子已在网上疯传...
- 次短路 Yen氏算法 凸包
- ROS笔记(23) Move_base
- Unix domain socket IPC
- Empire C:Basic 4
- DSP应用技术(第一章)
- 人物-IT-张朝阳:张朝阳
- hash碰撞解决方法
- 几款常见接口管理平台对比
- 数据库 SQL 语句学习
- 计算机有多种技术指标其主频是,计算机有多种技术指标,其中主频是指( )。
- 开发者实践:为了“网课”不痛苦,在校生做出了自己在线教育系统
- Spring Cloud Gateway 整合 knife4j 聚合接口文档
- Flutter For Web入门
- Distributed Deep Learning at the Edge-A Novel Proactive and Cooperative Caching Framework for Mobile