【模拟7.29】大佬(概率期望DP)
首先根据数据范围,可以判断基本上是n^2的复杂度
通过分析我们发现每一次都可以从m个数中任意选,既然任意选,那么此时的概率的分母就是不变的,然而题中涉及的是某一段的最大值,所以我们按套路假设
f[i][j]表示第i天,当前最大值为j的方案数,也可以是概率,
我们又发现天数是以k为一个单位的,
那么我们i从1-k枚举即可,
f[i][j]=f[i-1][j]*j(表示前一道题已经是最大值,这一道题从1-j选择)
f[i][j]=f[i-1][1---(j-1)]*1(表示当前选j,可以用前缀和维护)
这里是方案数,因为以k天为单位,所以
统计出每个f[k][i]*wt[i]*pow(pow(m,k),mod-2)的和
显然这就是k天的劳累度的期望(也可以理解为每k天的平均花费是这些)
那么求n天我们只需要看n天中有多少k,答案*(n-k+1)%mod
(顺便一提:WA95 是因为数据好像有k>n的情况,puts(0)即可,虽然数据范围说没有........)
以后做期望一定要努力推,其实想懂后真的不难
其实关于期望的题,也可以用概率或方案数去做,这题就是个假期望......
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<algorithm>
5 #include<cmath>
6 #include<string>
7 #include<vector>
8 #define int long long
9 #define MAXN 10001
10 using namespace std;
11 int f[MAXN][MAXN];
12 int wt[MAXN];
13 int n,m,k;
14 int mod=1000000007;
15 int pow(int x,int y)
16 {
17 int aa=1;
18 while(y>0)
19 {
20 if(y&1)
21 {
22 aa=aa*x%mod;
23 }
24 x=x*x%mod;
25 y>>=1;
26 }
27 return aa%mod;
28 }
29 int sum[MAXN][MAXN];
30 signed main()
31 {
32 scanf("%lld%lld%lld",&n,&m,&k);
33 if(k>n)
34 {
35 printf("0\n");
36 return 0;
37 }
38 for(int i=1;i<=m;++i)
39 {
40 scanf("%lld",&wt[i]);
41 }
42 for(int i=1;i<=m;++i)
43 {
44 f[1][i]=1;
45 sum[1][i]=sum[1][i-1]+1;
46 }
47 for(int i=2;i<=k;++i)
48 {
49 for(int j=1;j<=m;++j)
50 {
51 f[i][j]=(f[i][j]+f[i-1][j]*j)%mod;
52 f[i][j]=(f[i][j]+sum[i-1][j-1])%mod;
53 }
54 for(int j=1;j<=m;++j)
55 {
56 sum[i][j]=(sum[i][j-1]+f[i][j])%mod;
57 }
58 }
59 int ans=0;
60 for(int i=1;i<=m;++i)
61 {
62 ans=(ans+f[k][i]*wt[i]%mod)%mod;
63 }
64 printf("%lld\n",ans*pow(pow(m,k),mod-2)%mod*(n-k+1)%mod);
65 }
【模拟7.29】大佬(概率期望DP)的更多相关文章
- 【BZOJ-1419】Red is good 概率期望DP
1419: Red is good Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 660 Solved: 257[Submit][Status][Di ...
- 【bzoj4832】[Lydsy2017年4月月赛]抵制克苏恩 概率期望dp
题目描述 你分别有a.b.c个血量为1.2.3的奴隶主,假设英雄血量无限,问:如果对面下出一个K点攻击力的克苏恩,你的英雄期望会受到到多少伤害. 输入 输入包含多局游戏. 第一行包含一个整数 T (T ...
- 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp
题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...
- Codeforces - 1264C - Beautiful Mirrors with queries - 概率期望dp
一道挺难的概率期望dp,花了很长时间才学会div2的E怎么做,但这道题是另一种设法. https://codeforces.com/contest/1264/problem/C 要设为 \(dp_i\ ...
- 概率期望dp
对于概率dp,我一直都弄得不是特别明白,虽然以前也有为了考试去突击过,但是终究还是掌握得不是很好,所以决定再去学习一遍,把重要的东西记录下来. 1.hdu4405 Description 在一个 \( ...
- Codeforces 908 D.New Year and Arbitrary Arrangement (概率&期望DP)
题目链接:New Year and Arbitrary Arrangement 题意: 有一个ab字符串,初始为空. 用Pa/(Pa+Pb)的概率在末尾添加字母a,有 Pb/(Pa+Pb)的概率在末尾 ...
- [BZOJ4832]抵制克苏恩(概率期望DP)
方法一:倒推,最常规的期望DP.f[i][a][b][c]表示还要再攻击k次,目前三种随从个数分别为a,b,c的期望攻击英雄次数,直接转移即可. #include<cstdio> #inc ...
- LightOJ 1030 Discovering Gold (概率/期望DP)
题目链接:LightOJ - 1030 Description You are in a cave, a long cave! The cave can be represented by a \(1 ...
- [NOIP2016]换教室(概率期望$DP$)
其实吧我老早就把这题切了--因为说实话,这道题确实不难啊--李云龙:比他娘的状压DP简单多了 今天我翻以前在Luogu上写的题解时,突然发现放错代码了,然后被一堆人\(hack\)--蓝瘦啊\(ORZ ...
随机推荐
- 基于ray的分布式机器学习(二)
基本思路:基于parameter server + multiple workers模式.同步方式:parameter server负责网络参数的统一管理,每次迭代均将参数发送给每一个worker,多 ...
- Windows反调试技术(下)
OD的DBGHELP模块 检测DBGHELP模块,此模块是用来加载调试符号的,所以一般加载此模块的进程的进程就是调试器.绕过方法也很简单,将DBGHELP.DLL改名. #include <Wi ...
- 如何解决 shell 脚本重复执行的问题
在开发过程中,经常会使用shell脚本去完成定时备份的任务,普遍的做法是通过系统的定时任务定时执行备份脚本 设想这样一种场景,本次备份时间到了,自动执行备份脚本,如果备份比较耗时的话,会一直持续到下一 ...
- OO第一单元总结-多项式求导
OO第一单元总结-多项式求导 一.第一.第二次作业总结 因为前两次作业设计复杂度差别不大,因而放在这里统一总结. 基于度量分析程序结构: 前两次作业确实存在缺乏可拓展设计的构想,基本还是面向过程的思维 ...
- CRM是什么意思,有哪些作用?
我们总会听到一些人提到CRM或CRM系统,但是通常不知道它的含义,所以今天小Z就来详细介绍一下CRM. GartnerGroup1993年首次提出了这一概念:所谓的客户关系管理就是为企业提供一个全面的 ...
- Envoy:离群点检测 outlier detection
outlier detection 在异常检测领域中,常常需要决定新观察的点是否属于与现有观察点相同的分布(则它称为inlier),或者被认为是不同的(称为outlier).离群是异常的数据,但是不一 ...
- Linux 系统优化-workstation实践
Linux 系统优化 关闭SELinux [root@workstation ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/seli ...
- Linux_防火墙与SElinux
一.防火墙与SElinux 1.防火墙和selinux 防火墙 iptables 默认允许所以 firewalld 默认拒绝所有 ebtables 不认识,不管 se ...
- sersync 实时同步网站数据
sersync同步实战 sersync是基于inotify和srync的二次开发,代码托管在github上面在rsync的客户端上安装,下载地址: https://raw.githubusercont ...
- centos 7修改yum源
centos系统要定期更新,前天使用sudo yum update命令更新过程中出错,安装的是x64的系统,结果更新的内容有i686的依赖包,最终由于64与32位系统依赖的原因导致更新失败,更糟糕的是 ...