CF417D Cunning Gena
一眼状压,且是个纯粹的状压。
如果没有显示器台数限制的话,就成了最模板的状压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相关推荐
- cf1900左右的dp
文章目录 [CF296B 状态拆分](https://codeforces.com/problemset/problem/296/B) CF362C [CF229D dp+贪心记录辅助状态](http ...
- Google Earth Engine(GEE)扩展——gena包文本注释脚本
注释是将地图上的数据可视化的方式,以提供关于栅格值或任何其他与背景相关的数据的额外信息.在这种情况下,这种附加信息通常以几何图形.文本标签.图表或其他视觉元素的形式显示.地球引擎中的一些注释可以通过利 ...
- Gena Playing Hanoi
思路:首先思路是BFS,要把结果都放到第一个柱子上,所以后面3个的状态顺序无所谓,可以可以快6倍 from collections import dequedef serialize(a): # re ...
- 一份完整的数据科学竞赛指南!
"听过很多道理,却依然过不好一生:看过很多分享,却依然做不好比赛." 如今,数据科学竞赛(大数据竞赛,机器学习竞赛,人工智能算法竞赛)已经成为各大知 ...
- 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》
虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...
- “如果没有IBM和其所提供的系统,我们就无法登上月球。”
来源:IBM中国 "如果没有IBM和其所提供的系统,我们就无法登上月球." --NASA飞行指挥官 Gena Kra 1969年7月20日,就在距离阿姆斯特朗迈出"人类一 ...
- 征集并发文献译者之Disruptor
为了促进并发编程在中国的推广和研究,让更多的同学能阅读到国外的并发文献.所以打算将国外的并发编程文献翻译成中文,但是我一个人的精力有限,所以希望征集译者帮忙一起翻译.本期主要翻译Disruptor. ...
- HDOJ 3966 Aragorn#39;s Story
树链拆分+树阵 (进入坑....) Aragorn's Story Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/327 ...
- 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 ...
- UPnP协议编程实践
本专题主要是介绍UPnP的工作原理和基本概念,包括SSDP.GENA和FXPP等基本协议,以及在Linux下如何使用Intel提供的UPnP开发包实现UPnP控制点和设备.本文是这个专题的第一篇,主要 ...
最新文章
- JQuery笔记(一)
- 数据仓库系列1-高质量数据建模
- WinCE 和Win Mobile的关系
- 线性筛法 与 线性求欧拉函数 的计算模板
- 使用活动记录执行CRUD
- 2019年你准备学C/C++,这些硬知识你应该知道!
- MySQL索引类型及创建
- 我是学Java的,为什么要我装JDK
- Spark Master资源调度--worker向master注册
- 两种方法清空memcache
- docker MySQL-错误:2059-Authentication plugin ‘caching_sha2_password‘ cannot be loaded
- chrome浏览器下载速度慢问题解决办法
- 本博客基于Handsome主题的一些小修改教程
- 关于开源软件开发的若干问题
- 关于Android的方向传感器
- 项目经理进阶:如何做好一个领导者
- 单反相机坏点和噪点测试软件,单反相机验机及坏点测试方法(多数适用于佳能)...
- 从四个维度谈谈如何做好团队管理
- 量子逻辑电路的初步探索
- 389-MySQL数据库代码封装
热门文章
- 使用python进行普适计算/通用计算
- 记录自己在pyqt5用电脑摄像头拍照并保存照片过程中发现的问题
- Job for named.service failed because the control process exited with error code.
- linux下doc转docx
- 记各种纸尿裤用后感——花王大王MOONY尤妮佳好奇帮宝适等等等
- 此Flash Player 与您的地区不相容,请重新安装Adobe Flash Player问题解决
- css样式鼠标放上去变成手的形状
- 用小鸟云服务器搭建网站常用的伪静态设置规则
- linux实验报告ALU,《linux内核分析》第一次课 实验作业
- CSDN实训第一天-《植物大战僵尸》游戏存档与账户充值