题目链接: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相关推荐

  1. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

  2. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

  3. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)

    整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...

  4. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

  5. 【每日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 ...

  6. hdu 4778 Gems Fight! 状压dp

    转自wdd :http://blog.csdn.net/u010535824/article/details/38540835 题目链接:hdu 4778 状压DP 用DP[i]表示从i状态选到结束得 ...

  7. 【洛谷 P1896】[SCOI2005]互不侵犯(状压dp)

    题目链接 题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 这是道状压\(DP\)好题啊.. ...

  8. P2340 奶牛会展(状压dp)

    P2340 奶牛会展 题目背景 奶牛想证明它们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N 头奶牛进行 了面试,确定了每头奶牛的智商和情商. 题目描述 贝西有权选择让哪些奶牛参加展览.由 ...

  9. UVa 11825 (状压DP) Hackers' Crackdown

    这是我做状压DP的第一道题,状压里面都是用位运算来完成的,只要耐下心来弄明白每次位运算的含义,还是容易理解的. 题意: 有编号为0~n-1的n台服务器,每台都运行着n中服务,每台服务器还和若干台其他服 ...

  10. bzoj1402 Ticket to Ride 斯坦纳树 + 状压dp

    给定\(n\)个点,\(m\)条边的带权无向图 选出一些边,使得\(4\)对点之间可达,询问权值最小为多少 \(n \leqslant 30, m \leqslant 1000\) 首先看数据范围,\ ...

最新文章

  1. 离开页面前显示确认提示对话框(兼容IE,firefox) = how to Catch Win...
  2. YOLOv3: 训练自己的数据(绝对经典版本1)
  3. Approximate Nearest Neighbors.接近最近邻搜索
  4. c语言阶乘分解成素因子,阶乘的素因子分解 51nod 1189
  5. java将图片变成圆角_android图片处理之让图片变成圆形
  6. 操作系统源代码_国产操作系统“之光”?Windows XP绝密源代码泄露,BT种子已在网上疯传...
  7. 次短路 Yen氏算法 凸包
  8. ROS笔记(23) Move_base
  9. Unix domain socket IPC
  10. Empire C:Basic 4
  11. DSP应用技术(第一章)
  12. 人物-IT-张朝阳:张朝阳
  13. hash碰撞解决方法
  14. 几款常见接口管理平台对比
  15. 数据库 SQL 语句学习
  16. 计算机有多种技术指标其主频是,计算机有多种技术指标,其中主频是指( )。
  17. 开发者实践:为了“网课”不痛苦,在校生做出了自己在线教育系统
  18. Spring Cloud Gateway 整合 knife4j 聚合接口文档
  19. Flutter For Web入门
  20. Distributed Deep Learning at the Edge-A Novel Proactive and Cooperative Caching Framework for Mobile

热门文章

  1. 蓝瘦香菇!美国帅小伙作死尝试无人机剪头发
  2. 一个不会说话的汤姆猫游戏源码
  3. 机器学习算法(十) 根据幸福感问卷调查做预测
  4. 魔方机器人需要特制魔方吗_大开眼界:会玩魔方的机器人
  5. vue源码解析:vue生命周期方法$mount方法的实现原理
  6. 日语动词变形(转载)
  7. 炼数成金Scala语言入门
  8. ES2015 解构 Destructuring
  9. 带你快速入门AXI4总线--汇总篇
  10. wechat sdk java_使用java集成微信支付sdk。