loj 2542 随机游走 —— 最值反演+树上期望DP+fmt
题目:https://loj.ac/problem/2542
因为走到所有点的期望就是所有点期望的最大值,所以先最值反演一下,问题变成从根走到一个点集任意一点就停止的期望值;
设 \( f[x] \),则 \( f[x] = \frac{f[fa]+1+\sum\limits_{v \in son} (f[v]+1)}{d[x]} \),其中 \( d[x] \) 是 \( x \) 的度数;
因为其实只和 \( fa \) 有关,所以套路是设 \( f[x] = K[x] * f[fa] + B[x] \),推一推就可以树形DP求 \( K[x] , B[x] \),这好像叫“树上高斯消元”?!
因为走到集合内任意一个点就停止,所以 \( K[x] = B[x] = 0 ( x \in S ) \),\( f[rt] \) 即 \( B[rt] \) 就是答案;
然后高维前缀和求子集的 \( f \) 和,注意最值反演的符号要一开始就带上。
代码如下:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; int rd() {int ret=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=0; ch=getchar();}while(ch>='0'&&ch<='9')ret=ret*10+ch-'0',ch=getchar();return f?ret:-ret; } int const xn=20,xm=(1<<18)+5,mod=998244353; int n,rt,sid[xn][xn],bin[xn],cnt[xm],K[xn],B[xn],d[xn],f[xm]; ll pw(ll a,int b){a%=mod; ll ret=1; for(;b;b>>=1,a=a*a%mod)if(b&1)ret=ret*a%mod; return ret;} int upt(int x){while(x>=mod)x-=mod; while(x<0)x+=mod; return x;} void dfs(int x,int fa,int s) {if(s&bin[x-1]){K[x]=B[x]=0; return;}int ks=0,bs=0;for(int u=1;u<=n;u++)if(sid[x][u]&&u!=fa)dfs(u,x,s),ks=upt(ks+K[u]),bs=upt(bs+B[u]);K[x]=pw(d[x]-ks,mod-2); B[x]=(ll)(bs+d[x])*pw(d[x]-ks,mod-2)%mod; } int main() {n=rd(); int Q=rd(); rt=rd();for(int i=1,x,y;i<n;i++)x=rd(),y=rd(),sid[x][y]=sid[y][x]=1,d[x]++,d[y]++;bin[0]=1; for(int i=1;i<=n;i++)bin[i]=(bin[i-1]<<1);for(int s=1;s<bin[n];s++)cnt[s]=cnt[s>>1]+(s&1);for(int s=1;s<bin[n];s++){memset(K,0,sizeof K); memset(B,0,sizeof B);dfs(rt,0,s); f[s]=upt(((cnt[s]&1)?1:-1)*B[rt]);// }for(int i=1;i<=n;i++)for(int s=0;s<bin[n];s++)if(s&bin[i-1])f[s]=upt(f[s]+f[s^bin[i-1]]);for(int i=1,k,s;i<=Q;i++){k=rd(); s=0;for(int j=1,x;j<=k;j++)x=rd(),s|=bin[x-1];printf("%d\n",f[s]);}return 0; }
转载于:https://www.cnblogs.com/Zinn/p/10279681.html
loj 2542 随机游走 —— 最值反演+树上期望DP+fmt相关推荐
- LOJ#2542 随机游走
解:首先minmax容斥变成经过集合t的第一个点就停止的期望步数.对于某个t,设从x开始的期望步数为f(x) 如果x∈t,f(x) = 0.否则f(x) = ∑f(y) / in[x] + 1 树上高 ...
- 「PKUWC2018」随机游走
Min-Max容斥真好用 LOJ #2542 题意:给一棵不超过1818个节点的树,50005000次询问,每次问从根随机游走走遍一个集合的期望步数 Solution: 考虑Min-Max容斥 有Ma ...
- loj#2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥)
loj#2542 [PKUWC2018]随机游走 (概率期望.组合数学.子集和变换.Min-Max容斥) 很好很有趣很神仙的题! 题目链接: https://loj.ac/problem/2542 题 ...
- LOJ #2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥)
很好很有趣很神仙的题! 题目链接: https://loj.ac/problem/2542 题意: 请自行阅读 题解首先我们显然要求的是几个随机变量的最大值的期望(不是期望的最大值),然后这玩意很难求 ...
- 最值反演[PKUWC2018][loj2542]随机游走
前言 这是学习容斥过程中的一个比较裸的题了 题意简介 题目链接 题目大意 给出一棵nnn个点的树,给出树上的一个点xxx 现在进行QQQ次询问,每次询问一个点集,求从xxx点开始进行随机随机游走,第一 ...
- LOJ#2542. 「PKUWC2018」随机游走
LOJ#2542. 「PKUWC2018」随机游走 题目描述 Solution 去过一个点集中所有节点的期望时间不好求,考虑min−maxmin-maxmin−max容斥,转化为求第一次到达某一个点集 ...
- 重启随机游走算法(RWR:Random Walk with Restart)
重启随机游走算法(RWR:Random Walk with Restart) 1 pagerank算法的基本原理 Pagerank算法是Google的网页排名算法,由拉里佩奇发明.其基本思想是民主表决 ...
- 加速度随机游走_IMU Noise Model
1.参考资料 2.相关定义 高斯白噪声 概率上服从高斯分布,一阶矩(均值)是常数,二阶矩(方差)无关即时域上不同时刻的信号时不相关的噪声:或者说噪声的瞬时值服从高斯分布(高斯),功率谱密度又是均匀分布 ...
- 从抛硬币试验看随机游走定义的基本概念错误
全世界只有3.14 % 的人关注了 爆炸吧知识 随机游走(Random Walk)是<随机过程>教科书中用于描述动态随机现象的一种基本随机过程,许多重要的随机过程都可由它派生出来,其理论不 ...
最新文章
- CentOs7中安装python3.7.6
- 【Python】重载模块
- 关于mysql中truncate
- [SQLite]使用记录
- docker ubuntu 文件同步_Docker 的数据管理--Docker从入门到精通摘记
- java path 注解_@PathVariable注解的使用和@Requestparam
- 合约 cd 模式_CD的完整形式是什么?
- jmeter校验结果_Jenkins在实际失败时验证JMeter构建是否成功
- 训练过程acc_AI 深度学习训练tricks总结(均有实验支撑)
- python 导入数据对不齐_[Python] 大文件数据读取分析
- Tomcat的startup.bat启动闪退解决办法
- Transact-SQL 示例 - 触发器的基础及应用
- python老师 课时费_花10分钟写一个Python脚本,搞定了初中老师一下午的工作
- linux中文乱码解决方案
- 关于MFC窗口句柄,窗口ID,窗口指针
- 科创板在6月的这30天:方邦电子等31家过会并提交注册 新受理28家
- xp系统打开itunes显示服务器失败,windowsxp系统安装不了itunes的两种解决方法
- ​杨利伟:在《太空一日》:我没有看到长城,但祖国的各个省份我大都看到了...
- 【Java学习笔记】斗地主规则抽牌模拟(利用LinkedList集合及Collections集合工具类实现)
- 华中科技大学计算机证书领取,华中科技大学计算机水平测试软考报名通知
热门文章
- Linux磁盘阵列raid1和raid5相关概念及其实现途径
- Python3类方法和静态方法
- Python Django 模板继承(header,body,footer抽取)
- Lua 数据类型--8 个基本数据类型
- 【软考-软件设计师】计算机体系结构的分类
- ActiveMQ入门案例-生产者代码实现
- springboot日志自定义路径无效及出现org.springframework.boot.context.properties.bind.BindException错误
- 如何成为linux内核维护人员,Linux内核维护人员Greg Kroah-Hartman拒绝明尼苏达大学的道歉...
- 使用jspsmartupload完成简单的文件上传系统
- 【已解决】R语言,如何切换镜像?