Codeforces 698C LRU 概率+状压
来源:互联网 发布:windows怎么开发苹果 编辑:程序博客网 时间:2024/05/29 13:12
题意:有一个箱子最多装k件物品,现在有n件物品,第i件物品被询问的概率为pi,当第i件物品被询问时,如果第i件物品不在箱子里面,则把第i件物品加入到箱子中,若箱子物品数量>k,则移除最早添加进来的物品.
问10^100次查询后,每个物品在箱子中的概率? n,k<=20.
询问10^100次,物品最多只有20个,所以可以说箱子最后肯定有k个物品
问题转化为求最后状态为S的概率,初始时抽到k种不同物品的状态S'和S一一映射.
问10^100次查询后,每个物品在箱子中的概率? n,k<=20.
询问10^100次,物品最多只有20个,所以可以说箱子最后肯定有k个物品
问题转化为求最后状态为S的概率,初始时抽到k种不同物品的状态S'和S一一映射.
转移状态时合并GS的和得:dp[i|(1<<j)]=dp[i]*p[j]/(1-sum)
#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll inf=0x3f3f3f3f;const int N=1<<21;double dp[N],p[21],ans[21];int n,k;int main(){while(cin>>n>>k){int cnt=0;for(int i=0;i<n;i++){cin>>p[i];if(p[i]>0)cnt++;}memset(dp,0,sizeof(dp));k=min(k,cnt);dp[0]=1.0;for(int i=0;i<(1<<n);i++){cnt=0;double sum=0;for(int j=0;j<n;j++){if((i>>j)&1)cnt++,sum+=p[j];}for(int j=0;j<n;j++){if(!((i>>j)&1))dp[i|(1<<j)]+=dp[i]*p[j]/(1.0-sum);}if(cnt==k){for(int j=0;j<n;j++){if((i>>j)&1)ans[j]+=dp[i];}}}for(int i=0;i<n;i++)printf("%.10lf ",ans[i]);printf("\n");}return 0; }
阅读全文
0 0
- Codeforces 698C LRU 概率+状压
- codeforces 698 C. LRU (概率与期望+状压DP)
- CodeForces 698 C. LRU(??DP)
- 【CF 698C】 LRU(概率DP)
- Codeforces Round #363 (Div. 1) C LRU
- Codeforces Round #363 (Div. 1) C LRU
- codeforces 601C (概率DP)
- codeforces 28C (概率DP)
- 【Codeforces Round 363 (Div 2) E】【概率DP 期望DP 逆推等价法】LRU Cache替换LRU原则超多步数后每个数据在Cache中的概率
- Codeforces Round #363 (Div. 1) C. LRU ★ ★
- Codeforces Round #363 (Div. 1) C. LRU(状态压缩dp)
- codeforces 30C - Shooting Gallery DP 概率
- codeforces 30C Shooting Gallery (概率dp)
- codeforces 601C(概率dp)
- CodeForces 452C - Magic Trick-概率
- Codeforces 452C Magic Trick (概率)
- CodeForces 280C Game on Tree 概率
- codeforces 696c 概率+快速幂
- Message Digest Algorithm MD5(消息摘要算法第五版)简单了解
- 回文链表判断
- Activity解析
- 北京微服务架构与原生云应用开发培训班11月开班啦~
- (三)Android数据结构学习之队列
- Codeforces 698C LRU 概率+状压
- [bzoj1007][HNOI2008]水平可见直线 单调栈
- eclipse 连接oracle 12c ORA-01017: 用户名/口令无效; 登录被拒绝 [
- Vue-post和get请求实例
- 位运算技巧
- 嵌入式实时操作系统程序设计学习心得(二)
- PHP服务器的网页显示空白
- css3 背景斜线
- java list分批