Codeforces Round #363 (Div. 1) C LRU
来源:互联网 发布:java c base64 通用 编辑:程序博客网 时间:2024/06/03 00:43
C. LRU
按最近最少使用原则,维护
倒过来考虑,问题等价于不断按给定概率选取歌曲,直到选取了
用一个20位的二进制数来表示歌曲的集合,dp求每个集合可取得的概率,具体见代码。
#include <bits/stdc++.h> using namespace std;#define ll long longdouble dp[1<<20]; double p[22];double ans[22];int bit_cnt[1<<20]; int main(){ int n,k; cin>>n>>k; for(int i=0;i<n;i++){ cin>>p[i]; } int End = 1<<(n); for(int i=1;i<End;i++){ //注意这个内置位运算函数 bit_cnt[i] = __builtin_popcount(i); } dp[0] = 1; for(int j=1;j<End;j++){ dp[j] = 0; double pp = 0; for(int kk=0;kk<n;kk++){ if(j&(1<<kk)){ dp[j] += dp[j^(1<<kk)] * p[kk]; pp += p[kk]; } } //当前的dp[j]是第一次获得该集合的概率,答案需要的就是“第一次得到”的概率 if(bit_cnt[j] == k ){ for(int i=0;i<n;i++){ if(j&(1<<i)){ ans[i] += dp[j]; } } } //根据等比数列求和公式,得到(在很长一段时间内)维持该集合的概率 dp[j] /= (1-pp); } int cnt = n; for(int i=0;i<n;i++){ if(p[i] == 0){ cnt--; } } if(cnt<k){ for(int i=0;i<n;i++){ printf("%.8f ", (p[i]==0.0)?0.0:1.0); } }else{ for(int i=0;i<n;i++){ printf("%.8f ",ans[i]); } } return 0;}
0 0
- Codeforces Round #363 (Div. 1) C LRU
- Codeforces Round #363 (Div. 1) C LRU
- Codeforces Round #363 (Div. 1) C. LRU ★ ★
- Codeforces Round #363 (Div. 1) C. LRU(状态压缩dp)
- Codeforces Round #363 (Div. 2) C. Vacations
- Codeforces Round #363 (Div. 2) [C] Vacations
- Codeforces Round #363 (Div. 2) C. Vacations
- Codeforces Round #363 (Div. 2)-C--贪心
- Codeforces Round #363 (Div. 2) C dp
- Codeforces Round #363 C (Div. 2) Vacations
- Codeforces Round #363 (Div. 2), problem: (C)
- Codeforces Round #363 (Div. 2) C. Vacations
- Codeforces Round #363 (Div. 2) C. Vacations
- Codeforces Round #363 (Div. 2)C. Vacations
- Codeforces Round #363 (Div. 2) C. Vacations
- Codeforces Round #363 (Div. 2) C Vacations
- 【dp】Codeforces Round #110 (Div. 1) C
- Codeforces Round #142 (Div. 1) C. Triangles
- 在与没有参考系时,主动选择或者被动选择
- Python 基础练习02
- Jeckin搭建
- 事件
- 天主教、新教、东正教
- Codeforces Round #363 (Div. 1) C LRU
- Java 深入理解与感悟
- HTTP与HTTPS的区别
- HDU2222 Keywords Search [AC自动机]
- 【笔记】JS事件模型再复习之笔记
- 阅读Logback文档笔记--Logback的Layout配置
- 网络基础篇——socket编程之TCP服务器
- 暑假集训第1天链表-数据结构实验之链表七:单链表中重复元素的删除
- TCP/TP协议备忘录