[CSP-S模拟测试]:B(期望DP)
题目传送门(内部题151)
输入格式
第一行一个整数$N$。
第二行$N$个整数,第$i$个为$a_i$。
输出格式
一行一个整数,表示答案。为避免精度误差,答案对$323232323$取模。
即设答案化为最简分式后的形式为$\frac{a}{b}$,其中$a$和$b$互质。输出整数$x$使得$bx\equiv a(\mod 323232323)$且$0\leqslant x<323232323$。可以证明这样的整数$x$是唯一的。
样例
样例输入:
3
2 3 3
样例输出:
202020207
数据范围与提示
每个测试点$10$分,共$10$个测试点:

对于所有的数据,有:$1\leqslant N,a_i$。
题解
考虑$DP$,设$f_i$表示$a_i$被选的期望次数,注意这里是$a_i$。
那么答案就是:
$$ans=\sum\limits_{i=2}^nf_{a_i}}+a_1$$
想办法求出$f_i$。
考虑从$N\leqslant 2$入手,相当于是从$(a_1,a_i)$走到坐标轴的期望次数,每次都有$\frac{1}{2}$的概率走不同的方向;类比这种做法,可以列出$a_i$的贡献式子:
$$\sum\limits_{i=0}^{a_i-1}i\times \frac{C_{a_1-1+i}^i}{2^{a_1+i}}+a_i\times (1-\sum\limits_{i=0}^{a_i-1}\frac{C_{a_1-1+i}^i}{2^{a_1+i}}$$
看似还是$\Theta(N^2)$的,但是实际上我们可以线性递推出来$f[i]$,然后直接统计答案就好了。
时间复杂度:$\Theta(\max(a_i))$。
期望得分:$100$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
const int mod=323232323;
const int in2=161616162;
int N;
int a[500001];
long long fac[500001],inv[500001];
long long f[500001],w,p,inc,res;
long long ans;
long long qpow(long long x,long long y)
{
long long res=1;
while(y)
{
if(y&1)res=res*x%mod;
x=x*x%mod;y>>=1;
}
return res;
}
void pre_work()
{
fac[0]=1;
for(int i=1;i<=500000;i++)fac[i]=fac[i-1]*i%mod;
inv[500000]=qpow(fac[500000],mod-2);
for(int i=500000;i;i--)inv[i-1]=inv[i]*i%mod;
}
long long C(int x,int y){return fac[x]*inv[y]%mod*inv[x-y]%mod;}
int main()
{
pre_work();
scanf("%d",&N);
for(int i=1;i<=N;i++)
scanf("%d",&a[i]);
inc=p=qpow(qpow(2,a[1]),mod-2);
for(int i=1;i<=500000;i++)
{
inc=inc*in2%mod;
f[i]=(w+i*(1-p)+mod)%mod;
res=C(a[1]-1+i,i)*inc%mod;
p=(p+res)%mod;w=(w+res*i)%mod;
}
ans=a[1];
for(int i=2;i<=N;i++)ans=(ans+f[a[i]]+mod)%mod;
printf("%lld",ans);
return 0;
}
rp++
[CSP-S模拟测试]:B(期望DP)的更多相关文章
- [CSP-S模拟测试]:B(DP+数学)
题目传送门(内部题45) 输入格式 第一行$3$个整数$n,m,P$.第二行$m$个整数,表示$m$次询问. 输出格式 一行$m$个整数表示答案. 样例 样例输入1: 2 4 40 1 2 3 样例输 ...
- [CSP-S模拟测试]:蛇(DP+构造+哈希)
题目传送门(内部题140) 输入格式 前两行有两个长度相同的字符串,描述林先森花园上的字母. 第三行一个字符串$S$. 输出格式 输出一行一个整数,表示有多少种可能的蛇,对$10^9+7$取模. 样例 ...
- [CSP-S模拟测试]:最小值(DP+乱搞)
题目背景 $Maxtir$更喜欢序列的最小值. 题目传送门(内部题128) 输入格式 第一行输入一个正整数$n$和四个整数$A,B,C,D$. 第二行输入$n$个整数,第$i$个数表示$a_i$. 输 ...
- [CSP-S模拟测试]:花(DP)
题目传送门(内部题111) 输入格式 一个整数$T$,表示测试数据组数. 每组测试数据占一行,两个整数,分别表示$L$和$S$. 输出格式 对每组数据,输出一个整数表示答案. 样例 样例输入1: 13 ...
- [CSP-S模拟测试]:计数(DP+记忆化搜索)
题目描述 既然是萌萌哒$visit\text{_}world$的比赛,那必然会有一道计数题啦!考虑一个$N$个节点的二叉树,它的节点被标上了$1\sim N$的编号.并且,编号为$i$的节点在二叉树的 ...
- [CSP-S模拟测试]:matrix(DP)
题目描述 求出满足以下条件的$n\times m$的$01$矩阵个数:(1)第$i$行第$1~l_i$列恰好有$1$个$1$.(2)第$i$行第$r_i~m$列恰好有$1$个$1$.(3)每列至多有$ ...
- [CSP-S模拟测试]:题(DP+数学)
题目描述 出个题就好了.这就是出题人没有写题目背景的原因.你在平面直角坐标系上.你一开始位于$(0,0)$.每次可以在上/下/左/右四个方向中选一个走一步.即:从$(x,y)$走到$(x,y+1),( ...
- [CSP-S模拟测试]:题(DP)
题目描述 由于出题人赶时间所以没办法编故事来作为背景.一开始有$n$个苹果,$m$个人依次来吃苹果,第$i$个人会尝试吃$u_i$或$v_i$号苹果,具体来说分三种情况.$\bullet 1.$两个苹 ...
- [CSP-S模拟测试]:y(DP+bitset)
题目背景 $\frac{1}{4}$遇到了一道水题,叕完全不会做,于是去请教小$D$.小$D$懒得理$\frac{1}{4}$,直接就离开了.于是,$\frac{1}{4}$只好来问你,这道题是这样的 ...
- [CSP-S模拟测试]:randomwalking(DP)
题目传送门(内部题59) 输入格式 第一行一个数$n$表示点数.第二行$n$个数$A_i$.接下来$n−1$行,每行两个数$u,v$表示$u$和$v$有边直接相连. 输出格式 一个数表示最小花费的起点 ...
随机推荐
- KeyValuePair<string, string>
; #region CUP Method /// <summary> /// 请求与响应的超时时间 /// </summary> static public int Timeo ...
- Java集合--Hash、Hash冲突
一.Hash 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构.也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这 ...
- QQ浏览器、搜狗浏览器等兼容模式下,Asp.NetCore下,Cookie、Session失效问题
原文:QQ浏览器.搜狗浏览器等兼容模式下,Asp.NetCore下,Cookie.Session失效问题 这些狗日的浏览器在兼容模式下,保存Cookie会失败,是因为SameSiteMode默认为La ...
- javascript字符串机油
1.创建字符串和数组的方法 1.1创建字符串的方法 a.直接数量:var str=“: b.字符串对象创建:新字符串(“): 1.2创建阵列的方法 a.var.arr=要素…. b.var arr=n ...
- FastJson学习:JSON格式字符串、JSON对象及JavaBean之间的相互转换
当前台需要传送一系列相似数据到后端时,可以考虑将其组装成json数组对象,然后转化为json形式的字符串传输到后台 例如: nodes = $('#PmPbsSelect_tree').tree('g ...
- djnago中间件
前言 在form表单中当我们提交表单时会有这样的错误>>>>请求post时候的会出现403 forbidden,那我们就说说这个类中间件,(csrf只是中间件的一种) 以前我们 ...
- Linux磁盘及文件系统管理3
文件系统管理工具: 创建文件系统的工具 mkfs mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.vfat,... 检测及修复文件系统的工具 fsck fsck ...
- 命令ls按文件大小来排序
有时候我们想按照文件的大小来排序,一直忘记,为此特记下如下操作 按照文件所占的大小从大开始排列 # ls -lS total 64 -rw-r--r-- 1 root root 55895 Nov 5 ...
- IDEA设置左侧边栏修改代码后变色
首先声明,此功能是基于版本控制的,不管是基于git或者是svn, 都要有版本控制方可使用. 平常情况下,IDEA左边栏是没有颜色的,如下图所示 当我们修改了代码,左侧就会有颜色显示, 右侧滚动条处也有 ...
- springboot同时支持访问html5和jsp时,导致后台ResponseBody返回中文乱码
背景:原系统是由springboot jsp,所有访问都是jsp 现在需要做HTML5定位,要同时支持访问HTML5和JSP 在application.yml的spring标签下配置 mvc: #vi ...