hdu4336 Card Collector 状态压缩dp
Card Collector
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1708 Accepted Submission(s): 780
Special Judge
As a smart boy, you notice that to win the award, you must buy much more snacks than it seems to be. To convince your friends not to waste money any more, you should find the expected number of snacks one should buy to collect a full suit of cards.
Note there is at most one card in a bag of snacks. And it is possible that there is nothing in the bag.
You will get accepted if the difference between your answer and the standard answer is no more that 10^-4.
0.1
2
0.1 0.4
10.500
#include <iostream>
#include <stdio.h>
#include <string.h> using namespace std;
double p[25];
int main()
{
int n,i,flag,j,k,all,cnt;
double sum,s,temp;
while(scanf("%d",&n)!=EOF)
{
flag=1;
for(i=0;i<n;i++)
{
scanf("%lf",&p[i]);
}
sum=0;
flag=1;
all=1<<n;
for(i=1;i<all;i++)
{
cnt=0;
temp=0;
for(j=0;j<n;j++)
{
if(i&(1<<j))//相交
{
temp+=p[j];cnt++;
}
}
if(cnt&1)//奇加偶减
sum+=1.0/temp;
else
sum-=1.0/temp;
}
printf("%.4f\n",sum);
}
return 0;
}
再来一个状态压缩dp,这里我们可以推出dp[n]=1+all dp[n](空的)+all dp[n](重复的)+all dp[k](没有但是加一个就有了);这样就好做了,好像这一题还非要写成输出4位,输出3位还是错的,样例应该是有问题的!很坑啊,有木有!
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
double p[25],dp[1<<20];
int main ()
{
int n,i,j,all;
double allp,tempallp,sum;
while(scanf("%d",&n)!=EOF)
{
allp=0;
for(i=0;i<n;i++)
{
scanf("%lf",&p[i]);
allp+=p[i];
}
all=1<<n;
dp[0]=0; for(i=1;i<all;i++)
{
tempallp=allp;
sum=1;//买了一袋
for(j=0;j<n;j++)
{
if(i&(1<<j))
{
sum+=p[j]*dp[i^(1<<j)]; }
else
{
tempallp-=p[j]; }
}
dp[i]=sum/tempallp; }
printf("%.4f\n",dp[all-1]);
} return 0;
}
hdu4336 Card Collector 状态压缩dp的更多相关文章
- [HDU 4336] Card Collector (状态压缩概率dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题目大意:有n种卡片,需要吃零食收集,打开零食,出现第i种卡片的概率是p[i],也有可能不出现卡 ...
- [HDU4336]:Card Collector(概率DP)
题目传送门 题目描述 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物.商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值$W_i$(每种礼物的喜悦值不能重复获得).每 ...
- hoj2662 状态压缩dp
Pieces Assignment My Tags (Edit) Source : zhouguyue Time limit : 1 sec Memory limit : 64 M S ...
- POJ 3254 Corn Fields(状态压缩DP)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4739 Accepted: 2506 Descr ...
- [知识点]状态压缩DP
// 此博文为迁移而来,写于2015年7月15日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6jf.html 1.前 ...
- HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP
题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...
- DP大作战—状态压缩dp
题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...
- 状态压缩dp问题
问题:Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Ev ...
- BZOJ-1226 学校食堂Dining 状态压缩DP
1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MB Submit: 588 Solved: 360 [Submit][ ...
随机推荐
- <a>元素生成多个<a>的问题,元素标签结尾影响
告诉我不是真的吧,<a/>和<a></a>真的有区别...
- ssh生成密钥(供git使用)
我们在使用git远程更新时候,需要设置好远程密钥,以使我们能够远程更新代码到代码库中.现在我们就来做一下这件事情(ssh模式下) ssh-keygen -t rsa -c “hcu5555@hotm ...
- 你需要了解的JS框架
excanvas.js/Chart.js/cubism.js/d3.js/dc.js/dx.chartjs.js/echarts.js/flot.js 用途:构建数据统计图表,兼容多浏览器 ...
- python 利用位移法将ip转为number以及将number转为ip
简介: 使用位移法将ip转为number型以及将number型转为ip,使用语言为python2.7 #!/usr/bin/env python # coding:utf-8 def ip2num(i ...
- 数组序列的capacity及size函数
#include<iostream>#include<vector>using namespace std;int main(){ vector<int> i ...
- ASP.NET MVC 项目分离
ASP.NET MVC 项目分离 说明: ZRT.Web 是前台网站,目录[D:\ZRT.Web\] ZRT.Admin 是后台管理,目录[D:\ZRT.Web\Applications\Admin\ ...
- d指针在Qt上的应用及实现(d指针能实现二进制兼容)
Qt为了使其动态库最大程度上实现二进制兼容,引入了d指针的概念.那么为什么d指针能实现二进制兼容呢?为了回答这个问题,首先弄清楚什么是二进制兼容?所谓二进制兼容动态库,指的是一个在老版本库下运行的程序 ...
- Java图形化界面设计——布局管理器之null布局(空布局)
一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局. 操作方法: 1) 首先利用setLayout(null)语句将容器的布局设置为null布局(空布局 ...
- CloudXNS首次使用体验
第一步:申请域名 对于从事IT行业的同学,有一个属于自己的域名是一件再正常只是的事情了. 没有,都不好意思说自己是搞机的.赶紧去新网.万网申请一个吧. 第二步:配置域名DNS 域名解析须要用到域名se ...
- paip. everything exe 文件不能启动的解决
paip. everything exe 文件不能启动的解决 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blo ...