2019 ACM/ICPC North America Qualifier G.Research Productivity Index(概率期望dp)
https://open.kattis.com/problems/researchproductivityindex
这道题是考场上没写出来的一道题,今年看看感觉简单到不像话,当时自己对于dp没有什么概念,所以导致考场只能空流泪
首先问期望,肯定就要确定概率。看到这个
就知道肯定一块求是不太好写的,先求上面,上面求发表的期望,那么对于期望我们有e(x) = Σxipi
这里p知道了但是xi不知道,那么我们根据题目描述我们有一个分子一个分母,分子是发表的次数,分母是论文数,首先对于任何j篇论文发表了 i 篇来讲,都无外乎两种情况,一个是上一篇就发表了这么多,这一篇虽然多了一篇论文但没有对论文发表数产生贡献,那么这种情况概率 1- p,第二种情况就是这种发表了,这种情况概率是p
那么状态转移方程显然就有
dp[i][j] = (a[i]) * dp[i - 1][j - 1] + (1 - a[i]) * dp[i - 1][j];//新增没发表和发表
我们要求最大,所以要先从几率大的开始发表,sort一遍(我脑残还降序排了,赶紧reverse),然后不发表的次数initialize一下,求出来上面那一拨东西之后就再转化成发表成功次数,pow函数求解,枚举,看哪个大就可了,真的超级简单一个dp,md去年的没做出来真是耻辱啊啊啊啊
#include <bits/stdc++.h>
using namespace std;
#define limit (100 + 5)//防止溢出
#define INF 0x3f3f3f3f
#define inf 0x3f3f3f3f3f
#define lowbit(i) i&(-i)//一步两步
#define EPS 1e-6
#define FASTIO ios::sync_with_stdio(false);cin.tie(0);
#define ff(a) printf("%d\n",a );
#define pi(a,b) pair<a,b>
#define rep(i, a, b) for(ll i = a; i <= b ; ++i)
#define per(i, a, b) for(ll i = b ; i >= a ; --i)
#define MOD 998244353
#define traverse(u) for(int i = head[u]; ~i ; i = edge[i].next)
#define FOPEN freopen("C:\\Users\\tiany\\CLionProjects\\acm_01\\data.txt", "rt", stdin)
#define FOUT freopen("C:\\Users\\tiany\\CLionProjects\\acm_01\\dabiao.txt", "wt", stdout)
#define debug(x) cout<<x<<endl
typedef long long ll;
typedef unsigned long long ull;
inline ll read(){
ll sign = 1, x = 0;char s = getchar();
while(s > '9' || s < '0' ){if(s == '-')sign = -1;s = getchar();}
while(s >= '0' && s <= '9'){x = (x << 3) + (x << 1) + s - '0';s = getchar();}
return x * sign;
}//快读
void write(ll x){
if(x < 0) putchar('-'),x = -x;
if(x / 10) write(x / 10);
putchar(x % 10 + '0');
}
int n;
double a[limit];
double dp[limit][limit];//代表在i篇论文发表了j篇,
int main() {
#ifdef LOCAL
FOPEN;
#endif
n = read(); rep(i ,1,n){
a[i] = (1.0 * read()) / 100;
} sort(a + 1, a + 1 + n);
reverse(a + 1, a + 1 + n);
dp[0][0] = 1;
dp[1][1] = a[1];
dp[1][0] = 1 - a[1];
rep(i ,2,n)dp[i][0] = dp[i - 1][0] * (1 - a[i]), dp[i][i] = dp[i - 1][ i - 1] * a[i];
rep(i ,1,n){
rep(j, 1,i){
dp[i][j] = (a[i]) * dp[i - 1][j - 1] + (1 - a[i]) * dp[i - 1][j];//新增没发表和发表
}
}
double ans = 0;
rep(i ,1,n){
double tmp = 0;
rep(j, 1,i){
tmp += dp[i][j] * pow(j,1.0 * j / (1.0 * i));
}
ans = max(tmp, ans);
}
cout<<fixed<<setprecision(6)<<ans<<endl;
return 0;
}
2019 ACM/ICPC North America Qualifier G.Research Productivity Index(概率期望dp)的更多相关文章
- Bumped! 2017 ICPC North American Qualifier Contest (分层建图+dijstra)
题目描述 Peter returned from the recently held ACM ICPC World finals only to find that his return flight ...
- East Central North America 2006 Hie with the Pie /// 状压dp oj22470
题目大意: 输入n,有n个地方(1~n)需要送pizza pizza点为0点 接下来n+1行每行n+1个值 表示 i 到 j 的路径长度 输出从0点到各点送pizza最后回到0点的最短路(点可重复走) ...
- North America Qualifier (2015)
https://icpc.baylor.edu/regionals/finder/north-america-qualifier-2015 一个人打.... B 概率问题公式见代码 #include ...
- 有关信息ACM/ICPC竞争环境GCC/G++叠插件研究记录的扩展
0.起因 有时.DFS总是比BFS受人喜爱--毕竟DFS简单粗暴,更,而有些东西BFS不要启动,DFS它似乎是一个可行的选择-- 但是有一个问题,DFS默认直接写入到系统堆栈.系统堆栈和足够浅,此时O ...
- 2019 ACM/ICPC 全国邀请赛(西安)J And And And (树DP+贡献计算)
Then n - 1n−1 lines follow. ii-th line contains two integers f_{a_i}(1 \le f_{a_i} < i)fai(1≤fa ...
- 2019 ACM/ICPC Asia Regional shanxia D Miku and Generals (二分图黑白染色+01背包)
Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering
Problem G. Garden Gathering Input file: standard input Output file: standard output Time limit: 3 se ...
- ACM ICPC China final G Pandaria
目录 ACM ICPC China final G Pandaria ACM ICPC China final G Pandaria 题意:给一张\(n\)个点\(m\)条边的无向图,\(c[i]\) ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
随机推荐
- 【Java】阿里巴巴开发规范手册
Java 开发手册 一. 编程规约 (一) 命名风格 [强制]代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name, $name, __name [强制]代码中 ...
- CSS ------ 样式学习 (一)
CSS 指层叠样式表 (Cascading Style Sheets) :定义如何显示 HTML 元素(一套自定义的衣服) 语法: 由选择器和声明(可以是一条或多条)构成, 声明以大括号({})括起来 ...
- css3 渐变 兼容
.gradient{ background: #000000; background: -moz-linear-gradient(top, #000000 0%, #ffffff 100%); ba ...
- 易于理解的 python 深度学习摘要算法教程
序 "我不想要一份完整的报告,只要给我一份结果摘要就好".我经常发现自己处于这种状况 -- 无论是在大学里还是在我的职业生涯中.我们准备一份全面的报告,但老师/主管却只有时间阅读摘 ...
- 一次webapi Post请求失败记录
//点击添加按钮 $("#add").click(function () { //layer.msg("添加"); var data = { "stu ...
- Blog.Core 项目已完成升级.NET5.0
(是时候拿出来这种图了) 本文首发于公众号,但是会有新的内容加进来,所以就在博客园新开了一篇,望见谅.截止发稿,Blog.Core项目Master分支已经迁移到了5.0,新建了3.1的分支. 开心的锣 ...
- Git操作:使用.gitignore来管理VS工程
在使用Git管理Visual Studio的工程时,经常会碰到这种情况: 整个工程文件夹有100多M,而源代码只有100多K.如果全部添加进Git,那每次编译时产生100M垃圾,10次Git提交就会使 ...
- [MIT6.006] 3. Insertation Sort, Mege Sort 插入排序,归并排序
关于第2节课<Models of Computation, Document Distance>由于内容过于简单,所以不在这里进行记录,它主要就是讲了Python很多操作是constant ...
- ngx ------ngx_cache_manager_process_cycle
static void ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data) {----------------------- ...
- parted分区对齐
分区提示未对齐 [root@lab8106 ceph]# parted /dev/sdd GNU Parted 3.1 Using /dev/sdd Welcome to GNU Parted! Ty ...