【CDOJ 1355】柱爷与三叉戟不得不说的故事 【状压DP+子集枚举】
2016-08-04 10:08
197 查看
柱爷与三叉戟不得不说的故事
Time Limit: 500/500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)在喵蛤蛤城,人人都知晓柱爷有一把传奇武器
三叉戟.据传,这是一位在772002
年前陨落的强大守护者F91曾经使用过的12级灵能武器,拥有毁天灭地的力量
但只有很少人知道当柱爷获得三叉戟时,三叉戟的力量已经消失殆尽.为了能修复三叉戟的力量,柱爷苦心专研古籍,发现只有找到最神秘的15
种元素,将元素的力量重新注入到三叉戟中,三叉戟就能恢复到原来的力量,于是柱爷踏上了寻找神秘元素的旅行.
柱爷首先发现15
个由卿学姐掌控的地牢,里面正好有15种对应元素.冷静的柱爷没有贸然行动,经过一番详细的打听,柱爷得知了第i种元素需要Di的精力去获得;与此同时,柱爷还发现了由白学潘看守的N个洞穴,第i个洞穴中有Ai个不同的元素,分别是B1,B2,...,BAi,需要Ci
的精力去获得.
同种元素不得拥有多个,不然元素之间会产生强大的斥力,会发生爆炸;不能攻下一个洞穴后,留有元素不拿走,元素可能会辐射,伤害喵哈哈村的大爷......
但是柱爷岂是凡人?柱爷修复三叉戟时花费的总是最小的精力!
那么这个最小的花费是多少呢?
Input
第一行包括15个正整数,第i个数表示Di
.
第二行包括一个整数表示N
.
接下来N
行,每行有一个整数表示Ai,后面紧接着Ai个不同的正整数,最后又一个正整数Ci
表示需要花费的精力.
数据保证:
0≤N≤10000
1≤Di≤20000
0≤Ai≤5
1≤Ci≤2000000
Output
输出一个整数ans:
表示至少花ans
的精力去修复三叉戟.
Sample input and output
Sample Input | Sample Output |
---|---|
9599 11186 3513 3112 19106 1171 4254 4786 11880 19550 4793 17049 10779 11096 9713 5 4 10 1 8 11 1212645 3 14 9 15 1655560 3 7 3 14 1161262 5 13 5 9 2 11 710512 0 980331 | 141587 |
Source
2016 UESTC Training for Dynamic Programming#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn = 1000000;
const long long int INF = 1e17+7;
ll dp[maxn+10];
int main()
{
int n=15,m;
for(int i=1;i<maxn;i++)dp[i]=INF;
for(int i=1;i<=n;i++)
scanf("%lld",&dp[1<<(i-1)]);
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
int k,num=0;
scanf("%d",&k);
for(int j=1;j<=k;j++)
{
int t;
scanf("%d",&t);
num+=(1<<(t-1));
}
ll tmp;
scanf("%lld",&tmp);
if(dp[num]>tmp)dp[num]=tmp;
}
for(int i=1;i<(1<<n);i++){
for(int j=i;j;j=(j-1)&i)
dp[i]=min(dp[i],dp[j]+dp[j^i]);
}
cout<<dp[(1<<n)-1];
return 0;
}
相关文章推荐
- CDOJ 1355 柱爷与三叉戟不得不说的故事(枚举子集状压dp)
- 【cdoj 1335】柱爷与三叉戟不得不说的故事 状压dp+子集枚举
- UESTC-2016dp专题 F 柱爷与三叉戟不得不说的故事
- 2016 UESTC Training for Dynamic Programming F - 柱爷与三叉戟不得不说的故事 压位dp
- 【BZOJ】【P2073】【POI2004】【PRZ】【题解】【状压DP+枚举子集】
- hdu-5823-color II-状压DP-枚举子集的子集
- DP训练 cdoj1354 柱爷很忙 [状压DP]
- 【“盛大游戏杯”第15届上海大学程序设计联赛 L】【状压DP 枚举子集 + 分块预处理】零件组装
- uva 11825 Hackers' Crackdown (状压dp,子集枚举)
- uva 11825 Hackers' Crackdown (状压dp,子集枚举)
- 我与51CTO不得不说的故事【我与51CTO的故事】
- 《我与Android不得不说的故事-1-立贴明志》
- hdoj4539郑厂长系列故事——排兵布阵【状压dp】
- USACO Healthy Holsteins(二进制枚举子集)
- LA 4794(dp+枚举子集)分享巧克力
- Cocos2dx 3.0 过渡篇(三十一)ValueVector和Vector不得不说的故事
- Cocos2d-x3.0-std::bind与CC_CALLBACK不得不说的故事
- [技巧]枚举子集的飘逸写法
- int, float, double之间不得不说的故事
- 初识Objecive-C 之 多态不得不说的故事