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

解:把操作序列倒着来,就是考虑前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. vagrant的centos镜像,怎么用root用户登录?

    vagrant的centos镜像,默认用户和密码都是vagrant,如果要用root用户登录,应该怎么办呢? 百度了一下,有一篇博客是这样说的: 默认的登录用户是vagrant,如果想实现默认root ...

  2. Jenkins系统上的时间不正确问题

    很简单,点击系统管理,选择执行脚本命令: 打开 [系统管理]->[脚本命令行]运行下面的命令 System.setProperty('org.apache.commons.jelly.tags. ...

  3. python之路--内置常用模块

    一 . 简单的了解模块 你写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块. buildins  内置模块. print, input. random  主要是和随机相关的的内容 ran ...

  4. python3 自动识图

    一.安装依赖库 pip install pytesseract pip install pillow 二.安装识图引擎tesseract-ocr https://pan.baidu.com/s/1Qa ...

  5. DAY06、元组、字典、集合

    一.元组 1.定义:参数为for可以循环的对象 t1 = (1, 2)     t2 = tuple((1, 2))     t3 = (1, )        #定义一个只有一个值的元组 2.常用操 ...

  6. js中判断数据类型的4中方法

    注意: js中数据类型有7种(number, boolean, string, null, undefined, object, Symbol(es6新增)) 原始数据类型: number, stri ...

  7. jqprint控件使用

    /*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license //@ sourceMappingURL ...

  8. 3.docker基础架构

    docker是一个典型的c/s架构产品. dockerd :为客户端提供  RESTFUL API,响应来自客户端的请求, 采用模块化的架构, 通过专门的 Engine 模块来分发管理各 个来自客户端 ...

  9. poj-2752(拓展kmp)

    题意:求一个串所有的前后缀字串: 解题思路:kmp和拓展kmp都行,个人感觉拓展kmp更裸一点: 拓展kmp: #include<iostream> #include<algorit ...

  10. 了解AutoCAD对象层次结构 —— 2 ——文档

    再次想象另外一个场景:启动AutoCAD程序后,您新建了两个.dwg文件,也就是说创建了两个文档(Document)对象.将窗口进行层叠,您看到的窗口应该与下图类似: 图 4‑3 如何访问这些文档呢? ...