题解[CF1628F]A_Random_Code_Problem
题意
给定一个数组 \(a\),进行 \(k\) 次操作。第 \(i\) 操作等概率随机 \(a\) 中一个元素 \(a_x\),将这个元素的值加入答案,并使其减去 \(a_x\bmod i\) 。问期望乘上 \(n^k\) 的值,对 \(998244353\) 取模。
\(n\le 10^7\),\(k\le17\),\(a_i\le998244353\)。
思路
期望乘上 \(n^k\) 就是所有情况下答案的和。
研究一下每个元素对答案的贡献,发现只和该元素被选中的次数集合有关,与其他元素无关。那么我们分开计算每个元素的贡献。
一个显然的做法是枚举每一次是否选中这个元素,并且计算贡献与方案数。这个 \(O(n2^k)\) 暴力较简单,不多讲。
注意到一个元素对答案的贡献与位置无关,只与值的大小有关,所以可以计算出每一个值对答案的贡献。记 \(f_{i,j}\) 表示有多少种方式使得某元素 \(i\) 次操作后大小为 \(j\)。注意,这里的 DP 相当于对每个元素进行 DP 的过程合并成一个 DP,所以 \(f_{i,j}\) 是所有元素 \(i\) 次操作后变成 \(j\) 的方案数之和。转移方程为 \(f_{i+1,j-j\bmod i}+=f_{i,j}\),\(f_{i+1,j}+=(n-1)f_{i,j}\) 最后对于每个 \(f_{i,j}\) 计算贡献。
如何优化?这里有一个很妙的做法:观察性质,每次操作对元素的影响是减去 \(a_j\bmod i\),这样的影响,最多也不会减去超过 \(a_j\bmod \mbox{lcm}_{i=1}^ki\)。为什么?因为任意 \(1\le i\le k\) 都是 \(\mbox{lcm}_{i=1}^ki\) 的因数,所以无论何时都有 \(a_j\bmod i\le a_j\bmod \mbox{lcm}_{i=1}^ki\)。那么我们只需要 DP \(a_j\bmod \mbox{lcm}_{i=1}^ki\) 的部分,而其他部分是不会随操作改变的,直接 \(O(n)\) 计算贡献即可。总复杂度 \(O(n+k\mbox{lcm}_{i=1}^ki)\)。
实现
直接 DP 的话空间开不下,可以选择滚动数组,也可以根据转移的方向开单个数组,同时卡时空常数。具体见代码。
inline void Calc(int x){
MAdd(ans,Mul(x/l*l,Mul(m,pn[m-1])));
MAdd(f[x%l],1);
}
int main(){
l=1;
n=Read();
a[1]=Read();
int x=Read(),y=Read();
m=Read();
int mod=Read();
pn[0]=1;
for(int i=1;i<m;++i)
l=l/Gcd(l,i)*i,pn[i]=Mul(pn[i-1],n);
Calc(a[1]);
for(int i=2;i<=n;++i)
a[i]=(1ll*a[i-1]*x+y)%mod,Calc(a[i]);
for(int i=1;i<=m;++i)
for(int j=0;j<l;++j){
MAdd(ans,Mul(Mul(f[j],j),pn[m-i]));
if(i<m){
if(j%i)
MAdd(f[j-j%i],f[j]),f[j]=Mul(f[j],n-1);
else
f[j]=Mul(f[j],n);
}
}
printf("%d\n",ans);
return 0;
}
题解[CF1628F]A_Random_Code_Problem的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- 解决win7嵌入式系统无法DoublePulsar问题
0x01 前言 渗透过程中总是会遇到千奇百怪的问题,比如前段时间内网横向时用MS17010打台win7,EternalBlue已经提示win了,可是DoublePulsar就是死活一直报错,最后我查阅 ...
- Dubbo 入门系列之快速部署一个微服务应用
本文将基于 Dubbo Samples 示例演示如何快速搭建并部署一个微服务应用. 背景 Dubbo 作为一款微服务框架,最重要的是向用户提供跨进程的 RPC 远程调用能力.如上图所示,Dubbo 的 ...
- PopClip使用教程图文详解 2022.12亲测有效
PopClip简介 PopClip mac版是Macos上一款增强型复制粘贴工具,当你选中文字后,PopClip会自动弹出复制.剪切.粘贴.搜索等等操作,除了复制粘贴外,PopClip还提供了很多的扩 ...
- Python实现随机森林RF并对比自变量的重要性
本文介绍在Python环境中,实现随机森林(Random Forest,RF)回归与各自变量重要性分析与排序的过程. 其中,关于基于MATLAB实现同样过程的代码与实战,大家可以点击查看MAT ...
- java基础(非常简单)
java javaSE 注释: block块级 line 行 标识符和关键字 组成部分.变量名.类名.方法名--------标识符 $\数字._\字母 数据类型 强类型语言---安全性高--速度会慢 ...
- Ubuntu下的FTP Servers搭建与连接
1.安装FTP:vsftod sudo apt-get install vsftpd sudo: 使用sudo(super user do)给普通用户赋予权限 不是所有命令都能用sudo执行的,比 ...
- JavaScript的闭包和作用域
作用域相关 作用域的概念: 作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性.换句话说,作用域决定了代码区块中变量和其他资源的可见性: 作用域的类型: 全局作用域: 最外层函数和在最外 ...
- C4模型,架构设计图的脚手架,你值得拥有
hi,我是熵减,见字如面. 对于软件开发团队来说,写软件设计文档,花架构图,是日常工作中的关键一项. 而其中,如何画好系统设计的架构图呢? Simon Brown 就 提出 C4 模型,来解决这个问题 ...
- 跳板攻击之:SSH 隧道
跳板攻击之:SSH 隧道 郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全人人有责,共 ...
- 下载、编译AspNetCore 的全过程
1. clone 源码 下载新的 git clone --recursive https://github.com/dotnet/aspnetcore 如果之前clone过,但是没有使用 --recu ...