题目: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相关推荐

  1. LOJ#2542 随机游走

    解:首先minmax容斥变成经过集合t的第一个点就停止的期望步数.对于某个t,设从x开始的期望步数为f(x) 如果x∈t,f(x) = 0.否则f(x) = ∑f(y) / in[x] + 1 树上高 ...

  2. 「PKUWC2018」随机游走

    Min-Max容斥真好用 LOJ #2542 题意:给一棵不超过1818个节点的树,50005000次询问,每次问从根随机游走走遍一个集合的期望步数 Solution: 考虑Min-Max容斥 有Ma ...

  3. loj#2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥)

    loj#2542 [PKUWC2018]随机游走 (概率期望.组合数学.子集和变换.Min-Max容斥) 很好很有趣很神仙的题! 题目链接: https://loj.ac/problem/2542 题 ...

  4. LOJ #2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥)

    很好很有趣很神仙的题! 题目链接: https://loj.ac/problem/2542 题意: 请自行阅读 题解首先我们显然要求的是几个随机变量的最大值的期望(不是期望的最大值),然后这玩意很难求 ...

  5. 最值反演[PKUWC2018][loj2542]随机游走

    前言 这是学习容斥过程中的一个比较裸的题了 题意简介 题目链接 题目大意 给出一棵nnn个点的树,给出树上的一个点xxx 现在进行QQQ次询问,每次询问一个点集,求从xxx点开始进行随机随机游走,第一 ...

  6. LOJ#2542. 「PKUWC2018」随机游走

    LOJ#2542. 「PKUWC2018」随机游走 题目描述 Solution 去过一个点集中所有节点的期望时间不好求,考虑min−maxmin-maxmin−max容斥,转化为求第一次到达某一个点集 ...

  7. 重启随机游走算法(RWR:Random Walk with Restart)

    重启随机游走算法(RWR:Random Walk with Restart) 1 pagerank算法的基本原理 Pagerank算法是Google的网页排名算法,由拉里佩奇发明.其基本思想是民主表决 ...

  8. 加速度随机游走_IMU Noise Model

    1.参考资料 2.相关定义 高斯白噪声 概率上服从高斯分布,一阶矩(均值)是常数,二阶矩(方差)无关即时域上不同时刻的信号时不相关的噪声:或者说噪声的瞬时值服从高斯分布(高斯),功率谱密度又是均匀分布 ...

  9. 从抛硬币试验看随机游走定义的基本概念错误

    全世界只有3.14 % 的人关注了 爆炸吧知识 随机游走(Random Walk)是<随机过程>教科书中用于描述动态随机现象的一种基本随机过程,许多重要的随机过程都可由它派生出来,其理论不 ...

最新文章

  1. CentOs7中安装python3.7.6
  2. 【Python】重载模块
  3. 关于mysql中truncate
  4. [SQLite]使用记录
  5. docker ubuntu 文件同步_Docker 的数据管理--Docker从入门到精通摘记
  6. java path 注解_@PathVariable注解的使用和@Requestparam
  7. 合约 cd 模式_CD的完整形式是什么?
  8. jmeter校验结果_Jenkins在实际失败时验证JMeter构建是否成功
  9. 训练过程acc_AI 深度学习训练tricks总结(均有实验支撑)
  10. python 导入数据对不齐_[Python] 大文件数据读取分析
  11. Tomcat的startup.bat启动闪退解决办法
  12. Transact-SQL 示例 - 触发器的基础及应用
  13. python老师 课时费_花10分钟写一个Python脚本,搞定了初中老师一下午的工作
  14. linux中文乱码解决方案
  15. 关于MFC窗口句柄,窗口ID,窗口指针
  16. 科创板在6月的这30天:方邦电子等31家过会并提交注册 新受理28家
  17. xp系统打开itunes显示服务器失败,windowsxp系统安装不了itunes的两种解决方法
  18. ​杨利伟:在《太空一日》:我没有看到长城,但祖国的各个省份我大都看到了...
  19. 【Java学习笔记】斗地主规则抽牌模拟(利用LinkedList集合及Collections集合工具类实现)
  20. 华中科技大学计算机证书领取,华中科技大学计算机水平测试软考报名通知

热门文章

  1. Linux磁盘阵列raid1和raid5相关概念及其实现途径
  2. Python3类方法和静态方法
  3. Python Django 模板继承(header,body,footer抽取)
  4. Lua 数据类型--8 个基本数据类型
  5. 【软考-软件设计师】计算机体系结构的分类
  6. ActiveMQ入门案例-生产者代码实现
  7. springboot日志自定义路径无效及出现org.springframework.boot.context.properties.bind.BindException错误
  8. 如何成为linux内核维护人员,Linux内核维护人员Greg Kroah-Hartman拒绝明尼苏达大学的道歉...
  9. 使用jspsmartupload完成简单的文件上传系统
  10. 【已解决】R语言,如何切换镜像?