这又是什么毒瘤.....

解:把操作序列倒着来,就是考虑前k个入队的元素了。显然这样每个元素的概率不变。

状压。设fs表示当前元素为s的概率。

每次转移的时候选择一个不在s中的元素,作为下一个加入的元素。注意实际上有可能选择到在s中的元素。

然后我们设选择到s中元素的概率为x。

我们可能第一次就选到i,也有可能第2次选到,第3次选到......

概率分别是pi,x * pi,x2 * pi,......

无限求和有pi / (1 - x)。

所以最后转移的时候就是fs * pi * / (1 - x)

记得判断有用元素不足k的时候直接输出。

 #include <bits/stdc++.h>

 const int N = , M = ;

 double p[N], f[M], ans[N], P[M];
int n, k, wp[M], cnt[M]; inline void out(int x) {
for(int i = n - ; i >= ; i--) printf("%d", (x >> i) & );
puts("");
return;
} int main() {
int Cnt = ;
scanf("%d%d", &n, &k);
for(int i = ; i < n; i++) {
scanf("%lf", &p[i]);
if(p[i] > ) Cnt++;
}
if(Cnt < k) {
for(int i = ; i < n; i++) {
if(p[i] > ) printf("1 ");
else printf("0 ");
}
return ;
} int lm = ( << n);
for(int i = ; i < n; i++) wp[ << i] = i;
for(int i = ; i < lm; i++) {
cnt[i] = + cnt[i - (i & (-i))];
P[i] = P[i - (i & (-i))] + p[wp[i & (-i)]];
}
f[] = ;
for(int i = ; i < lm; i++) {
//out(i);
if(cnt[i] == k) {
for(int s = ; s < n; s++) {
if(i & ( << s)) {
ans[s] += f[i];
}
}
continue;
}
if(cnt[i] > k) continue;
for(int s = ; s < n; s++) {
if((i >> s) & ) continue;
f[i | ( << s)] += f[i] * p[s] / ( - P[i]);
}
} for(int i = ; i < n; i++) printf("%.8f ", ans[i]);
return ;
}

AC代码

CF698C - LRU的更多相关文章

  1. CF698C. LRU [容斥原理 概率]

    CF698C. LRU 题意:n种物品,大小为k的队列,\(p_i\)的概率选择第i种物品放入队尾,如果已经有i了就不放了.队列大小>k时弹出队首.求\(10^{100}\)次操作后每种物品在队 ...

  2. Android图片缓存之Lru算法

    前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发 ...

  3. OS存储管理——FIFO,LRU,OPT命中率

    课程设计课题 存储管理程序设计 摘 要 虚拟存储器作为现代操作系统中存储管理的一项重要技术,实现了内存扩充功能.而分页请求分页系统正好可以完美的支持虚拟存储器功能,它具有请求调页功能和页面置换功能.在 ...

  4. [LeetCode] LRU Cache 最近最少使用页面置换缓存器

    Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...

  5. 详解三种缓存过期策略LFU,FIFO,LRU(附带实现代码)

    在学操作系统的时候,就会接触到缓存调度算法,缓存页面调度算法:先分配一定的页面空间,使用页面的时候首先去查询空间是否有该页面的缓存,如果有的话直接拿出来,如果没有的话先查询,如果页面空间没有满的时候, ...

  6. 页置换算法FIFO、LRU、OPT

    页置换算法FIFO.LRU.OPT 为什么需要页置换 在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断.当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调 ...

  7. LRU LFU FIFO 转载

    -------------------------------------->href--------------------------> http://blog.chinaunix.n ...

  8. 缓存淘汰算法--LRU算法

    1. LRU1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是"如果数据最近被访问过,那么将来被访问的几率也 ...

  9. 【leetcode】LRU Cache

    题目简述: Design and implement a data structure for Least Recently Used (LRU) cache. It should support t ...

随机推荐

  1. npm --save-dev 和--save 参数的区别

    npm中的--save与--save-dev参数的区别 --save一般规定把产品运行时(或生产环境)需要的npm包存入到package.json的dependencies中: --save-dev则 ...

  2. 在python中定义二维数组

    发表于 http://liamchzh.0fees.net/?p=234&i=1 一次偶然的机会,发现python中list非常有意思. 先看一段代码 [py]array = [0, 0, 0 ...

  3. spring 标签

    */ @Slf4j @Service public class RetryService { @Autowired private MqConfig mqConfig; /** * 如果网络连接失败, ...

  4. 一、MyCat的搭建

    一.什么是mycat 简单直接点就是,MyCat其实就是一个数据库的中间件!一般我们都是app直接到数据库!有了MyCat以后,就是app到MyCat然后再访问数据库. mycat是个中间件,它负责连 ...

  5. Lodop打印维护PRINT_SETUP本地缓存ini文件

    针对千差万别的客户端,Lodop提供了打印维护(PRINT_SETUP),可以针对某个客户端微调,调整结果保存在客户端本地,不会影响其他访问网站的用户的使用. 打印维护使用方法:1.PRINT_INI ...

  6. hdu-1058(map)

    题意:输出第n个能拆分成由,2,3,5,7中的一个或者多个组成的数: 解题思路:a[i+1]=a[i]*2;a[i+2]=a[i]*3;a[i+3]=a[i]*5;a[i+4]=a[i]*7;然后把重 ...

  7. Nginx 当上游服务器返回失败时的处理办法

    陶辉95课 Syntax: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503  ...

  8. SpringBoot之get请求404

    后台:SpringBoot 前台:VUE 异常:调get接口,返回404 场景:get请求传参,后台返回n条数据,不传参则返回所有 原因:原请求url为"~/one/{param}" ...

  9. linux查找符合条件的文件并删除

    找到根目录下所有的以test开头的文件并把查找结果当做参数传给rm -rf命令进行删除: 1.find / -name “test*” |xargs rm -rf 2.find / -name “te ...

  10. K - Transformation HDU - 4578 线段树经典题(好题)

    题意:区间  加   变成定值 乘  区间查询:和 平方和 立方和 思路:超级超级超级麻烦的一道题  设3个Lazy 标记分别为  change 改变mul乘 add加  优先度change>m ...