cataclysm【题解】【考试】
前言
是CF上一道题,被用来当做考题了
题面描述
现在砰砰博士检测到通道中有 n 个虫洞,每个虫洞无论成功与否只能传送一人,并且这个时空通道
只能进入 n 人;
每个虫洞有一个特征值,特征值在 [1, m] 之间,只有特征值和虫洞相同的人才能被成功传送;
但由于虫洞的不稳定性,每个虫洞的特征值是无法预知的,具体来说,对于第 i 个虫洞,其特征值
为 j 的概率是 p i,j ;
n 个人进入时空通道之后,虫洞的特征值就确定下来,即这 n 个人在进入时空通道之后,可以自由
选择进入何种虫洞,但是无法返回。
砰砰博士希望你找到使得被成功传送的期望人数最多的方法,这样才能最大限度地挽救这片土地上
的人民。
sol
想到一个简单的dp就是对于而枚举每一个人,然后枚举他去哪里。
我们令每一个人选的特征值必须递增,所以就用dp记一下当前特征值的最大值是什么,有几个人选了,接下来的这个人可以选择继续选也可以把这一个状态转移到下一个特征值选0个的状态去。
但是这是n^3
n^2就会发现每一个特征值的选举,第i个人选的期望如果是pi,那么pi>pi+1pi>pi+1p_i>p_{i+1}所以就可以贪心
code
#include<bits/stdc++.h>
#define LL long long
#define eps 1e-8
using namespace std;
inline char gc(){static char buf[1<<6],*p1=buf,*p2=buf;return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,1<<6,stdin),p1==p2)?EOF:*p1++;
}
template <class T>
inline void read(T&data){data=0;register char ch=0;while(ch<'0'||ch>'9')ch=gc();while(ch<='9'&&ch>='0'){data=(data<<3)+(data<<1)+(ch&15);ch=gc(); }return;
}
const int _ =3001;
double p[3001][_],P[_][2][_];
int n,m;
struct data{double zh;int from,cc;bool operator <(const data& a)const {return eps<a.zh-zh;}
};
priority_queue<data> Q;
inline void update(register data&A ,register int ki,register int cc){register int pre=(cc+1)%2,cur=cc%2;for(register int i=0;i<=n;++i)P[ki][cur][i]=0;for(register int i=1;i<=n;++i)P[ki][cur][i]=P[ki][pre][i-1]*p[i][ki]+P[ki][cur][i-1]*(1-p[i][ki]);A.zh=A.zh-P[ki][cur][n];A.cc++;return;
}
int main(){freopen("cataclysm.in","r",stdin);freopen("cataclysm.out","w",stdout);read(n),read(m);for(register int i=1;i<=n;++i)for(register int j=1,h;j<=m;++j)read(h),p[i][j] =1.0 * h/1000.0; register double ans=0;for(register int i=1;i<=m;++i){P[i][0][0]=1;for(register int j=1;j<=n;++j)P[i][0][j]=P[i][1][j-1]*p[j][i]+P[i][0][j-1]*(1-p[j][i]); }for(register int i=1;i<=m;++i)Q.push((data){1-P[i][0][n],i,1});for(register int i=1;i<=n;++i){register data qio=Q.top();Q.pop();ans+=qio.zh;if(qio.cc==n)continue;update(qio,qio.from,qio.cc);Q.push(qio);}printf("%.9lf",ans);
}
/*2 2
500 500
500 500*/
cataclysm【题解】【考试】相关推荐
- 2019秋季PAT甲级_C++题解
2019 秋季 PAT (Advanced Level) C++题解 考试拿到了满分但受考场状态和知识水平所限可能方法不够简洁,此处保留记录,仍需多加学习.备考总结(笔记目录)在这里 7-1 Fore ...
- 10.9 guz模拟题题解
感谢@guz 顾z的题题解 考试共三道题,其中 第一题help共10个测试点,时间限制为 1000ms,空间限制为 256MB. 第二题escape共20个测试点,时间限制为1000ms2000ms, ...
- [LOJ 6288]猫咪[CF 700E]Cool Slogans
[LOJ 6288]猫咪[CF 700E]Cool Slogans 题意 给定一个字符串 \(T\), 求一个最大的 \(K\) 使得存在 \(S_1,S_2,\dots,S_k\) 满足 \(S_1 ...
- NOIP模拟测试21「折纸·不等式」
折纸 题解 考试时无限接近正解,然而最终也只是接近而已了 考虑模拟会爆炸,拿手折纸条试一试,很简单 考你动手能力 代码 #include<bits/stdc++.h> using name ...
- 【USACO】山峰暸望
题目描述 一天,Bessie在眺望美丽的威斯康星的群山的时候,她突然产生了疑问:哪座山是最宽的捏?她决定在地平线上,利用她的新发明的山峰高度测量仪依次做N (1 <= N <= 10,00 ...
- JZM 的印象笔记 (卷积,分块)
题面 题目背景 大名鼎鼎的 OI 天花板选手 JZM 对自己的好伙伴--印象笔记有些生疏了 题目描述 作为一名 OI 选手,他的笔记中的字母只包含数字0和1. JZM 在印象笔记中找到了一行 NNN ...
- [费用流]2018 Multi-University Contest 10 L.Videos
原题面 题目描述 C-bacteria takes charge of two kinds of videos: 'The Collection of Silly Games' and 'The Co ...
- [2019长沙长郡中学集训]加法
题面描述 给定一个\(n\)阶排列\(b\),要求维护一个初值全为\(0\)的数组\(\{a_i\}\),支持\(q\)次如下操作: 给出\(l,r\),将\(a_l,a_{l+1},......,a ...
- CKA证书题库-总结
CKA真题(考题总结) 文章目录 CKA真题(考题总结) 证书 个人考试总结 申诉结果 CKA题目参考博主 重点介绍 CKA模拟题库 注意事项 考试概要 考试注意事项: CKA题目答案 设置自动补全 ...
- 三级C语言上机考试试题与题解,全国计算机等级三级C语言上机试题逐题解析
三级网络技术和三级数据库技术的C语言上机试题难度较大,题型多样,因此颇难掌握,今将这些试题分类解析,希望能帮大家顺利通过上机考试. 三级的上机题可以分为十几个类型,每类中的题目数量不一,多则十几道题, ...
最新文章
- 学习Redis持久化
- Virtex中的ILA属性、VIO属性
- Redis作者的公开信:开源维护者的挣扎和无奈
- 网易云信深度优化解决移动聊天室“痼疾”
- 易中天与单田芳的区别在哪儿
- 变压器耦合和电容耦合_超越变压器和抱抱面的分类
- python内存管理_Python内存管理(一):预备知识
- SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数
- OpenJudge NOI 1.7 28:单词倒排
- 95-908-030-源码-FlinkTable-Table API
- linux系统声音管理,Mplayer 音量控制详解
- 如何为文件夹添加图标
- 中介分析(二): 多重中介分析
- Server-sent events(SSE) EventSource 客户端使用与服务器基础实现(基于Node.js)
- Android规范写法
- Gustafson 定律
- linux下如何打开iso文件夹,Linux下打开ISO文件两种方法
- 浅谈虚拟机的垃圾回收
- 有哪些公司为外贸独立站提供收款服务?
- 虚拟化相关概念与技术整理(1)——关于VMM类型
热门文章
- 徐小明:这次我支持房产新政
- 查看自己电脑外网IP
- 微擎修复去水印微信小程序源码
- No qualifying bean of type ‘com.dao.BookDao‘ available解决
- 【学习随记】Gyro,Btn,filters_addClass
- 微信小程序网易云音乐获取视频列表数据(需要登录获取携带cookie)
- 留在一线,逃离一线?我从上海举家回成都的生活经历告诉你
- 百度地图API详解之公交路线规划
- 网络不可用怎么办?无法访问互联网怎么办?网络故障原因大起底
- 【Linux】imx6ull Kernel 源码下载和编译环境配置