Codeforces698C. LRU
n<=20种东西,有个大小k<=n的箱子,每次会以固定的概率从所有东西里选一种,若箱子里有空位且这种东西没出现过就丢进去,若箱子满了且这种东西没出现过就把最早访问过的一个丢掉,(只要在每次操作最早的“挑一种物品”选中某个数都算“访问”)问10^100操作后每个数存在箱子里的概率。
由于操作过多,最后箱子可以看成满的。可以发现由于操作跟时间有关,只有最后新进入箱子的k种东西在进入箱子时会对答案产生影响,因此只用看后面几次操作即可。可以把这个过程等同于:从头开始拿,问刚把箱子填满时的概率。
在后面的操作中,虽然只看最后k种东西被访问的过程,但期间也有可能多次访问到同种东西,咋办呢?状压,f(i)表示状态i出现的概率,$f(i)=\sum f(j)*a_{j关于i的补集}+\sum_{k\epsilon i} a_k*f(i)$,错误!最终状态不会再自己转移到自己,所以判一下i是不是终态即有没有k个数,没有才把后面那部分算上去。
还错!数据中有一些是箱子不可能满,所以要把箱子大小和概率>0的种数取个min。
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
//#include<bitset>
#include<algorithm>
#include<cmath>
using namespace std; int n,K;
#define maxn 1100011
double a[],ans[maxn],eve[];
int main()
{
scanf("%d%d",&n,&K);
int cnt=n;
for (int i=;i<=n;i++) scanf("%lf",&a[i]),cnt-=a[i]<1e-?:;
K=min(cnt,K);
ans[]=; for (int i=;i<=n;i++) eve[i]=;
for (int i=;i<(<<n);i++)
{
int one=; ans[i]=; double kk=;
for (int j=;j<=n;j++) if ((i>>(j-))&) one++,ans[i]+=ans[i^(<<(j-))]*a[j],kk+=a[j];
if (one==K) for (int j=;j<=n;j++) if ((i>>(j-))&) eve[j]+=ans[i];
ans[i]/=(-kk);
}
for (int i=;i<=n;i++) printf("%.8lf ",eve[i]);
return ;
}
这里有一种容斥做法。
比如说我最后序列里存在第i种东西,且i是最后拿的,那么之前可以拿很多很多的东西,但只能拿另外的n-1种中的k-1种。比如说某k-1种的概率加起来是x,i的概率是a,那么这k-1种的状态对i的答案的贡献就是:a*P(这k-1种的状态)=a*(1+x+x^2+x^3+……)=a/(1-x),等比数列求和,简单。等会确定是这样?这里面包含了选k-2种,k-3种,……,0种的情况!!!那就挑掉k-2的,然后可能在k-2里面挑多了,那k-3再补回来……这个系数可以用组合数计算:(copy from liurunda)
Codeforces698C. LRU的更多相关文章
- Android图片缓存之Lru算法
前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发 ...
- OS存储管理——FIFO,LRU,OPT命中率
课程设计课题 存储管理程序设计 摘 要 虚拟存储器作为现代操作系统中存储管理的一项重要技术,实现了内存扩充功能.而分页请求分页系统正好可以完美的支持虚拟存储器功能,它具有请求调页功能和页面置换功能.在 ...
- [LeetCode] LRU Cache 最近最少使用页面置换缓存器
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...
- 详解三种缓存过期策略LFU,FIFO,LRU(附带实现代码)
在学操作系统的时候,就会接触到缓存调度算法,缓存页面调度算法:先分配一定的页面空间,使用页面的时候首先去查询空间是否有该页面的缓存,如果有的话直接拿出来,如果没有的话先查询,如果页面空间没有满的时候, ...
- 页置换算法FIFO、LRU、OPT
页置换算法FIFO.LRU.OPT 为什么需要页置换 在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断.当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调 ...
- LRU LFU FIFO 转载
-------------------------------------->href--------------------------> http://blog.chinaunix.n ...
- 缓存淘汰算法--LRU算法
1. LRU1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是"如果数据最近被访问过,那么将来被访问的几率也 ...
- 【leetcode】LRU Cache
题目简述: Design and implement a data structure for Least Recently Used (LRU) cache. It should support t ...
- memcache的lru删除机制
惰性删除,get时才删除 LRU原理:当某个单元被请求的时候,维护一个计数器,通过计数器来判断最近谁最少使用,那就把谁踢出去. 注:即使某个key设置的永久有效,也会被踢出来,这个就是永久数据被踢的现 ...
随机推荐
- RMAN-06564错误的原因及解决办法
今日在进行数据库恢复时,遭遇RMAN-06564错误,如下: RMAN> restore spfile from autobackup; Starting restore at 01-NOV-1 ...
- CentOS 7 下配置 firewalld(firewall-cmd)实现 NAT 转发 软路由
如果配合 DHCP 服务或实现更多功能. ☼ NAT 转发软路由 开启 NAT 转发之后,只要本机可以上网,不论是单网卡还是多网卡,局域网内的其他机器可以将默认网关设置为已开启 NAT 转发的服务器 ...
- 虚拟机centOs Linux与Windows之间的文件传输
一.配置环境 虚拟机Linux:Fedora 9 文件传输工具:SSHSecureShellClient-3.2.9 二.实现步骤 1. 在Windows中安装文件传输工具SSHSecureShell ...
- 洛谷 P3388 【模板】割点
题目背景 割点 题目描述 给出一个n个点,m条边的无向图,求图的割点. 输入输出格式 输入格式: 第一行输入n,m 下面m行每行输入x,y表示x到y有一条边 输出格式: 第一行输出割点个数 第二行按照 ...
- Java加密简介
加密算法: 1.对称加密 DES AES 2.非对称加密 RSA 3.散列函数算法加密 (单项加密)::MD5.SHA.Mac 4.数字签名算法:RSA.DSA 其中,前三种主要完成数据的加解密: ...
- Vue之x-template(1)
今天,我们来讲一个比较有趣的一个功能吧 先来看一段代码示例: <html> <head> <meta charset="utf-8"> < ...
- 【计算机网络】2.5 DNS:因特网的目录服务
第二章第五节 因特网的目录服务 DNS(域名系统)提供了一种能运行主机名到IP地址转换的因特网目录服务:一方面,他让人能够记住如taobao.com这样的主机别名:另一方面,他提供给路由器可理解的IP ...
- java混淆工具Jocky和Proguard
java混淆工具有很多种,这里介绍Jocky和Proguard 一:Jocky是金蝶中间件技术领袖袁红岗先生的个人作品(旧有名称JOC).原本是方便Apusic 应用服务器的开发,现在开放出来,供大家 ...
- python 导入beautifulsoup报错
导入Beautifulsoup 报错 AttributeError: 'module' object has no attribute '_base' 解决方法: pip install --up ...
- oracle分配权限 学习笔记--转载
在全局数据库ORCL下创建一个用户首先在开始-->运行——>sqlplus,然后输入 sys/change_on_install as sysdba 以sys权限登陆进去 然后可以进行操作 ...