[CSP-S模拟测试]:大佬(kat)(数学期望)
题目描述
辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了。
他发现$katarina$大佬真是太强了,于是就学习了一下$katarina$大佬的做题方法。
比如这是一本有$n$道题的练习册,$katarina$大佬每天都会做k道题。
第一天做第$1~k$题,第二天做第$2~k+1$题……第$n-k+1$天做第$n-k+1~n$道题。
但是辣鸡$ljh$又不想太累,所以他想知道$katarina$大佬做完这本练习册的劳累度。
每道题有它的难度值,假设今天$katarina$大佬做的题目中最大难度为$t$,那么今天$katarina$大佬的劳累度就是$w_{t_i}$,做完这本书的劳累值就是每天的劳累值之和。
但是辣鸡$ljh$一道题都不会,自然也不知道题目有多难,他只知道题目的难度一定在$1~m$之间随机。
他想让即将参加$NOIP$的你帮他算算$katarina$大佬做完这本书的劳累值期望。
输入格式
第一行,三个整数$n,m,k$。
第二行,$m$个整数表示$w_{t_1},,,,w_{t_m}$。
输出格式
输出劳累值期望对1000000007取模的值。
样例
样例输入1:
2 2 2
1 2
样例输出1:
750000007
样例输入2:
5 4 3
2 1 3 5
样例输出2:
890625018
数据范围与提示
样例1解释:
有${1,1},{1,2},{2,1},{2,2}$四种可能,期望为$\frac{7}{4}$。
数据范围:
$n\leqslant 500$。
$m\leqslant 400$。
题解
又是一道假期望……
注意这句话:第一天做第$1~k$题,第二天做第$2~k+1$题……第$n-k+1$天做第$n-k+1~n$道题。
而不是:第一天做第$1~k$题,第二天做第$k+1~2\times k$题……第$\frac{n}{k}$天做第$n-k+1~n$道题。
一看就是道概率$DP$,那么考虑怎么定义$DP$式子。
定义$dp[i][j]$表示已经做了$i$道题且最大难度小于等于$j$的劳累值期望。
考虑如何进行状态转移,分两种情况:
$\alpha.$当最大值小于$j$时,显然可以直接转移,即:$dp[i][j]=dp[i][j-1]$。
$\beta.$当最大值等于$j$时,枚举最大值第一次出现的位置:
$dp[i][j]+=\sum \limits_{l=1}^{i}dp[l-1][j]\times m^{i-l}+j\times k\times m^{i-1}+dp[i-1][j]\times m^{l-1}$
注意边界情况即可。
还需要注意的一点是,如果k<n则无解,特判一下就好啦~
时间复杂度:$\Theta(n^2m)$。
代码时刻
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
long long ans;
long long w,t,l;
long long qpow(long long x,long long y)
{
long long res=1;
while(y)
{
if(y&1)res=(res*x)%1000000007;
x=(x*x)%1000000007;
y>>=1;
}
return res;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=m;i++)
{
scanf("%lld",&w);
t=qpow(i,k);
ans=(ans+(t-l+1000000007)*w%1000000007)%1000000007;
l=t;
}
long long inv=qpow(qpow(m,k),1000000005);
cout<<max((n-k+1),0)*ans%1000000007*inv%1000000007<<endl;
return 0;
}
rp++
[CSP-S模拟测试]:大佬(kat)(数学期望)的更多相关文章
- [CSP-S模拟测试]:不等式(数学)
题目描述 小$z$热衷于数学.今天数学课的内容是解不等式:$L\leqslant S\times x\leqslant R$.小$z$心想这也太简单了,不禁陷入了深深的思考:假如已知$L,R,S,M$ ...
- 【NOIP模拟赛】书 数学+期望概率
biubiu~~~ 对于这道傻题.........我考场上退了一个多小时才推出来这个东西是排列...........然后我打的dfs效率n!logInf正好n=9是最后一个能过的数结果前三个点的n全是 ...
- [CSP-S模拟测试]:A(数学)
题目传送门(内部题44) 输入格式 一行四个整数,分别表示$S,T,a,b$. 输出格式 输出最小步数,数据保证有解. 样例 样例输入: 10 28 4 2 样例输出: 数据范围与提示 样例解释: 先 ...
- [CSP-S模拟测试]:装饰(数学)
题目传送门(内部题147) 输入格式 每个测试点第一行一个正整数$T$,表示该测试点内的数据组数. 接下来$T$行,每行三个非负整数$a,b,c$,含义如题目中所示. 输出格式 对每组数据输出一行一个 ...
- [CSP-S模拟测试]:最大值(数学+线段树)
题目背景 $Maxtir$最喜欢最大值. 题目传送门(内部题128) 输入格式 第$1$行输入四个正整数$n,m,q$. 第$2$至$n+1$行中,第$i+1$行输入魔法晶石$i$的三种属性$(x_i ...
- [CSP-S模拟测试]:求和(数学)
题目传送门(内部题107) 输入格式 一行五个正整数$x_1,y_1,x_2,y_2,m$ 输出格式 输出一个整数,为所求的答案对$m$取模后的结果. 样例 样例输入: 2 1 5 3 10007 样 ...
- [CSP-S模拟测试]:数列(数学)
题目传送门(内部题95) 输入格式 第一行三个整数$n,a,b$,第二行$n$个整数$x_1\sim x_n$表示数列. 输出格式 一行一个整数表示答案.无解输出$-1$. 样例 样例输入:2 2 3 ...
- [CSP-S模拟测试]:Walker(数学)
题目传送门(内部题86) 输入格式 第一行$n$接下来$n$行,每行四个浮点数,分别表示变换前的坐标和变换后的坐标 输出格式 第一行浮点数$\theta$以弧度制表示第二行浮点数$scale$第三行两 ...
- [CSP-S模拟测试]:Six(数学)
题目传送门(内部题85) 输入格式 一个正整数$N$. 输出格式 一个数表示答案对$1000000007$取模后的结果 样例 样例输入1: 样例输出1: 样例输入2: 样例输出2: 样例输入3: 样例 ...
随机推荐
- 使用Object.create()实现继承 用 Object.create实现类式继承
使用Object.create()实现继承:https://www.cnblogs.com/cuew1987/p/4075027.html 用 Object.create实现类式继承:https:// ...
- 万万没想到,Spring Boot 竟然这么耗内存!
Spring Boot总体来说,搭建还是比较容易的,特别是Spring Cloud全家桶,简称亲民微服务. 但在发展趋势中,容器化技术已经成熟,面对巨耗内存的Spring Boot,小公司表示用不起. ...
- S-Nim HDU 1536 博弈 sg函数
S-Nim HDU 1536 博弈 sg函数 题意 首先输入K,表示一个集合的大小,之后输入集合,表示对于这对石子只能去这个集合中的元素的个数,之后输入 一个m表示接下来对于这个集合要进行m次询问,之 ...
- Tarjan水题系列(4):HAOI2010 软件安装
题目: 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最大). ...
- linux获取外网ip
引言:目前获取ip的方法中,ifconfig和ip获取函数得到的都是内网ip.有时候需要获取外网ip,目前通用的做法,是向外部服务器发送请求,解析外部服务器响应,从而得到的自己的外网ip.linux下 ...
- 锋利的jQuery ——jQuery选择器(二)
一.jQuery选择器 1)CSS选择器 CSS选择器有:1>标签选择器 E{CSS规则} 2>ID选择器 #ID{CSS规则} 3>类选择器 E.className{CSS ...
- selectTree 改造
需求 把select改为selectTree,后台给的数据也进行了改造,数据里面多了children字段,包裹子集 代码 //import import { Row , Col , Select , ...
- 007-cobbler+koan自动化重装系统
一.操作步骤 1.在使用cobbler自动化安装的虚拟机上做以下操作 2.安装epel源(先配置好yum) [root@localhost ~]# yum install epel-release - ...
- 008-流程控制 case 语句
流程控制 case 语句 与if...elif...else 语句一样都是多分支条件语句,不过if语句可以判断多种条件关系,case只能判断一种条件关系 [root@zabbix lianxi]# . ...
- Manacher || Luogu P3805【模板】manacher算法
题面:[模板]manacher算法 代码: #include<cstdio> #include<cstring> #include<iostream> #defin ...