一眼状压,且是个纯粹的状压。
如果没有显示器台数限制的话,就成了最模板的状压dp,现在因为有了显示器台数的限制,我们可以枚举每一次能用的最多的显示器台数。
考虑暴力进行求解:设f[p][j]为显示器台数最多为离散化后第j大,已选集合为p的最小花费。会得到一个O(n*2^m * n)的复杂度。
signed main(){scanf("%lld%lld%lld",&n,&m,&v);for (register int i=1; i<=n; ++i) {scanf("%lld%lld%lld",&c[i],&need[i],&x);a[i]=need[i];while (x--) {scanf("%lld",&now);add[i]|=1ll<<(now-1);}}sort(a+1,a+n+1);tot=unique(a+1,a+n+1)-a-1;max_statue=(1ll<<m)-1;ans=-1;for (register int j=1; j<=tot; ++j){for (register int p=0; p<=max_statue; ++p) f[p]=1e19;inf=f[0];f[0]=0;for (register int p=0; p<max_statue; ++p)for (register int i=1; i<=n; ++i)if (need[i]<=a[j]) f[p|add[i]]=min(f[p|add[i]],f[p]+c[i]);if (f[max_statue]!=inf) {if (ans==-1ll) ans=f[max_statue]+a[j]*v;else ans=min(ans,f[max_statue]+a[j]*v);}}printf("%lld\n",ans);
return 0;
}
接下来考虑一个简单的只可意会不可言传的dp优化。
将复杂度优化为O(n*2^m)
#include <bits/stdc++.h>
#define int unsigned long long
using namespace std;
const int N=105,M=21;
int n,m,v,x,now,tot,max_statue,inf,ans;
int add[N],f[1<<M];
struct number{int c,need,add;}num[N];inline bool cmp(number a,number b)
{return a.need<b.need;
}signed main(){scanf("%lld%lld%lld",&n,&m,&v);for (register int i=1; i<=n; ++i) {scanf("%lld%lld%lld",&num[i].c,&num[i].need,&x);while (x--) {scanf("%lld",&now);num[i].add|=1ll<<(now-1);}}sort(num+1,num+n+1,cmp);ans=-1;max_statue=(1ll<<m)-1;for (register int p=0; p<=max_statue; ++p) f[p]=1e19;   inf=f[0];f[0]=0;for (register int i=1; i<=n; ++i){for (register int p=0; p<max_statue; ++p) f[p|num[i].add]=min(f[p|num[i].add],f[p]+num[i].c);if (f[max_statue]!=inf){if (ans==-1ll) ans=f[max_statue]+num[i].need*v;else ans=min(ans,f[max_statue]+num[i].need*v);}}printf("%lld\n",ans);
return 0;
}

CF417D Cunning Gena相关推荐

  1. cf1900左右的dp

    文章目录 [CF296B 状态拆分](https://codeforces.com/problemset/problem/296/B) CF362C [CF229D dp+贪心记录辅助状态](http ...

  2. Google Earth Engine(GEE)扩展——gena包文本注释脚本

    注释是将地图上的数据可视化的方式,以提供关于栅格值或任何其他与背景相关的数据的额外信息.在这种情况下,这种附加信息通常以几何图形.文本标签.图表或其他视觉元素的形式显示.地球引擎中的一些注释可以通过利 ...

  3. Gena Playing Hanoi

    思路:首先思路是BFS,要把结果都放到第一个柱子上,所以后面3个的状态顺序无所谓,可以可以快6倍 from collections import dequedef serialize(a): # re ...

  4. 一份完整的数据科学竞赛指南!

    ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍"听过很多道理,却依然过不好一生:看过很多分享,却依然做不好比赛." 如今,数据科学竞赛(大数据竞赛,机器学习竞赛,人工智能算法竞赛)已经成为各大知 ...

  5. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

  6. “如果没有IBM和其所提供的系统,我们就无法登上月球。”

    来源:IBM中国 "如果没有IBM和其所提供的系统,我们就无法登上月球." --NASA飞行指挥官 Gena Kra 1969年7月20日,就在距离阿姆斯特朗迈出"人类一 ...

  7. 征集并发文献译者之Disruptor

    为了促进并发编程在中国的推广和研究,让更多的同学能阅读到国外的并发文献.所以打算将国外的并发编程文献翻译成中文,但是我一个人的精力有限,所以希望征集译者帮忙一起翻译.本期主要翻译Disruptor. ...

  8. HDOJ 3966 Aragorn#39;s Story

    树链拆分+树阵 (进入坑....) Aragorn's Story Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/327 ...

  9. lucene正向索引——正向信息,Index – Segments (segments.gen, segments_N) – Field(fnm, fdx, fdt) – Term (tvx, ...

    转自:http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623599.html 上面曾经交代过,Lucene保存了从Index到Segm ...

  10. UPnP协议编程实践

    本专题主要是介绍UPnP的工作原理和基本概念,包括SSDP.GENA和FXPP等基本协议,以及在Linux下如何使用Intel提供的UPnP开发包实现UPnP控制点和设备.本文是这个专题的第一篇,主要 ...

最新文章

  1. JQuery笔记(一)
  2. 数据仓库系列1-高质量数据建模
  3. WinCE 和Win Mobile的关系
  4. 线性筛法 与 线性求欧拉函数 的计算模板
  5. 使用活动记录执行CRUD
  6. 2019年你准备学C/C++,这些硬知识你应该知道!
  7. MySQL索引类型及创建
  8. 我是学Java的,为什么要我装JDK
  9. Spark Master资源调度--worker向master注册
  10. 两种方法清空memcache
  11. docker MySQL-错误:2059-Authentication plugin ‘caching_sha2_password‘ cannot be loaded
  12. chrome浏览器下载速度慢问题解决办法
  13. 本博客基于Handsome主题的一些小修改教程
  14. 关于开源软件开发的若干问题
  15. 关于Android的方向传感器
  16. 项目经理进阶:如何做好一个领导者
  17. 单反相机坏点和噪点测试软件,单反相机验机及坏点测试方法(多数适用于佳能)...
  18. 从四个维度谈谈如何做好团队管理
  19. 量子逻辑电路的初步探索
  20. 389-MySQL数据库代码封装

热门文章

  1. 使用python进行普适计算/通用计算
  2. 记录自己在pyqt5用电脑摄像头拍照并保存照片过程中发现的问题
  3. Job for named.service failed because the control process exited with error code.
  4. linux下doc转docx
  5. 记各种纸尿裤用后感——花王大王MOONY尤妮佳好奇帮宝适等等等
  6. 此Flash Player 与您的地区不相容,请重新安装Adobe Flash Player问题解决
  7. css样式鼠标放上去变成手的形状
  8. 用小鸟云服务器搭建网站常用的伪静态设置规则
  9. linux实验报告ALU,《linux内核分析》第一次课 实验作业
  10. CSDN实训第一天-《植物大战僵尸》游戏存档与账户充值