[Min-Max 容斥] LOJ#2542. 「PKUWC 2018」随机游走

min-max 容斥 阅读详情

这题我原来使用 O(2nn3)O(2nn3) 暴力过的…跑的还贼快

可以用Min-Max 容斥

设 Max(S)Max(S) 表示集合里最晚被访问的节点被访问的期望步数(也就是访问所有节点的期望步数)。

设 Min(S)Min(S) 表示集合里最早被访问的节点被访问的期望步数(也就是第一次访问到集合里的节点的期望步数)

那么 Max(S)=∑T∈S(−1)|T|+1Min(T)Max(S)=∑T∈S(−1)|T|+1Min(T)

只要求出 Min(S)Min(S) 就可以了

令 f(x,S)f(x,S) 表示从 xx 出发,第一次访问 S 里的节点的期望步数。

可以推得 f(x,S)=k×f(fax,S)+bf(x,S)=k×f(fax,S)+b 其中 kk 和 b 是常数

然后就一遍dfs就可以了

#include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;

const int N=20,P=998244353;

int n,q,s,cnt,G[N],f[1<<18|5],k[N],d[N],du[N];
struct edge{
  int t,nx;
}E[N<<1];

inline void addedge(int x,int y){
  E[++cnt].t=y; E[cnt].nx=G[x]; G[x]=cnt; du[x]++;
  E[++cnt].t=x; E[cnt].nx=G[y]; G[y]=cnt; du[y]++;
}

inline int Pow(int x,int y){
  int ret=1;
  for(;y;y>>=1,x=1LL*x*x%P) if(y&1) ret=1LL*x*ret%P;
  return ret;
}

void dfs(int x,int f,int S){
  if(S>>(x-1)&1){ k[x]=d[x]=0; return ; }
  k[x]=d[x]=du[x];
  for(int i=G[x];i;i=E[i].nx)
    if(E[i].t!=f){
      dfs(E[i].t,x,S);
      k[x]=(k[x]-k[E[i].t])%P; d[x]=(d[x]+d[E[i].t])%P;
    }
  k[x]=Pow(k[x],P-2); d[x]=1LL*d[x]*k[x]%P;
}

int size[1<<18|5];

int main(){
#ifdef ljn
  freopen("1.in","r",stdin);
  freopen("1.out","w",stdout);
#endif
  scanf("%d%d%d",&n,&q,&s);
  for(int i=1,x,y;i<n;i++)
    scanf("%d%d",&x,&y),addedge(x,y);
  for(int i=0;i<(1<<n);i++)
    dfs(s,0,i),f[i]=d[s],size[i]=size[i>>1]+(i&1);
  while(q--){
    int k,S=0; scanf("%d",&k);
    for(int i=1,x;i<=k;i++)
      scanf("%d",&x),S|=1<<(x-1);
    int ans=0;
    for(int i=S;i;i=(i-1)&S)
      if(size[i]&1)
    ans=(ans+f[i])%P;
      else
    ans=(ans-f[i])%P;
    printf("%d\n",(ans+P)%P);
  }
  return 0;
}
Jupyter Notebook 命名出现“error”且运行后没反应 Jupyter Notebook 命名出现“error”且运行后没反应提前声明错误截图(方便大家看看是不是自己的错误)解决方法 提前声明 我的问题是在看到答主 @开始King的回答后才解决的,因为答主大大的文章后面有些地方不是很详细,我在这里再在King大大的基础上完善一下子 错误截图(方便大家看看是不是自己的错误) 1.命名失败,上面出现一个“error”字样 2.运行失败,无论是点击上方的运行按钮还是按快捷键shift+enter 都只会向下再增加一个代码块,而不会运行程序。 (也不是很多人出现的[* 阅读详情

相关推荐

HFSS实战(二)——精准仿真高速PCB差分线的信号完整性

本文深入探讨了使用HFSS进行高速PCB差分线信号完整性仿真的关键技术与实战经验。从设计文件导入、模型裁剪到差分端口设置,详细解析了精准仿真的全流程,特别强调了材料特性和3D电磁场仿真在解决微带线损耗等问题中的重要性。文章还提供了常见问题排查指南和效率优化技巧,帮助工程师提升高速PCB设计的仿真精度与效率。

weixin_38170829的博客 574

Min-Max容斥小结

介绍 对于一个集合 U={a1,a2,a3,...,an}U=\{a_1,a_2,a_3,...,a_n\}U={a1​,a2​,a3​,...,an​},我想要知道其中的 max⁡\maxmax,但是很不好求,那么就可以通过Min-Max容斥转化为求出它所有子集中的 min⁡\minmin。 正题 一切的魔术来源于这个简单的式子: max⁡{U}=∑S⊆U(−1)∣S∣+1min⁡{S} \max\{U\}=\sum_{S\subseteq U} (-1)^{|S|+1} \min\{S\} max{U}

a_forever_dream的博客 1066

卡尔曼滤波原理详解及系统模型建立(simulink)

卡尔曼滤波原理详解及系统模型建立(simulink) 卡尔曼滤波器 卡尔曼滤波器是在上个世界五六十年代的时候提出的,到今天已经有六十年左右的时间,但卡尔曼滤波算法不管在控制、制导、导航或者通讯方面对数据的预测能力依然处在一个不可撼动的位置上,但是很多人对于其算法内部的工作原理究竟是怎么运作的依然不理解,所以在工程上很多人都只是把卡尔曼滤波当成是一种“黑箱”预测算法,并不清楚内部原理。但实际上没有任...

weixin_43942325的博客 7万+

Min-Max容斥总结

下用max⁡k(S)\max_k(S)maxk​(S)表示集合SSS的第kkk大元素(k⩽∣S∣k\leqslant|S|k⩽∣S∣),max⁡(S)\max(S)max(S)表示集合SSS的最大元素,最小同理 算法 min-max容斥是一种用于求出给定集合第kkk大(小)元素的容斥,通常在比较元素大小较为困难时使用 有一给定集合SSS,现希望求出max⁡k(S)\max_k(S)maxk​(S),考虑构造系数ana_nan​满足: max⁡k(S)=∑∅≠T⊆Sa∣T∣min⁡(T)\max{_k}(

一只蒟蒻的博客 3212

EtherCAT FOE从站开发实战:SSC工具包实现固件在线升级与文件传输

EtherCAT从站开发中,固件在线升级与文件传输是常见需求。FOE(File Access over EtherCAT)作为邮箱通信协议,在实时总线上提供可靠的文件读写通道,与PDO、DC同步共存。其原理基于SM邮箱和状态机,通过SSC工具包可快速启用。技术价值在于无需拆机即可更新固件、导出日志,提升产线效率。应用场景包括伺服驱动器、IO模块等从站的固件升级与参数配置。本文深入讲解从站侧FOE读写实现、主站调用及工程化建议,助力嵌入式工程师高效开发。

weixin_29169899的博客 127

大模型-高通qnn基础

提供较低级别、高度可定制的统一API,通过单独的库加速所有AI加速器核心上的AI模型, 可以直接用于针对特定的加速器核心或从流行的运行时(包括Qualcomm Neural Processing SDK、TensorFlow Lite和ONNX运行时)委派工作负载。一个支持异构计算、系统级配置的一体化SDK,旨在将AI工作负载引导到我们平台上的所有加速器核心。为开发人员提供灵活性,包括核心间协作支持和其他高级功能。是一个为训练好的神经网络模型提供高级量化和压缩技术的库。

点滴的岁月 4093

min-max容斥学习笔记

min-max容斥(极值反演) \(\min-\max\)容斥是说一个这样的式子: \[ \max\{S\}=\sum_{T\subseteq S}(-1)^{|T|+1}\min\{T\} \] \[ \min\{S\}=\sum_{T\subseteq S}(-1)^{|T|+1}\max\{T\} \] 其中\(\min\{S\}\)表示\(S\)集合中的最小元素,\(\max\{S\}\)...

weixin_30654583的博客 268

嵌入式工程师必学(118):MCU的硬件定时器和中断

大多数微处理器都有一个或多个可编程硬件定时器,这些定时器包括对中断的支持。可以有不同类型的计时器,用于不同的应用程序。例如,LPC1768 具有四个 32 位通用定时器、一个看门狗定时器、一个重复中断定时器、一个系统滴答定时器、一个正交编码器接口、6 个 PWM 输出和一个支持中断的实时时钟。硬件定时器用于计时和计数作,允许处理器在 timer 进程运行时继续执行其他进程。硬件定时器是一种使用 clock 信号来增加 register 的电路。

码农17年的博客 211

容斥原理——详解

设 U 中元素有 n 种不同的属性,而第 i 种属性称为,拥有属性的元素构成集合,那么即。

w_w_wwwww的博客 1446

手把手教你学Simulink——基于全桥 LLC 谐振变换器的双向 DC-DC 建模与仿真

本文详细介绍了基于Simulink的双向全桥LLC谐振变换器建模与仿真方法。内容涵盖:1)LLC谐振变换器背景与双向化挑战;2)系统架构设计及关键数学推导(FHA增益分析、双向控制逻辑);3)Simulink建模步骤(功率级搭建、PWM生成、同步整流实现);4)仿真结果分析(正向/反向工作验证、ZVS特性);5)工程实践建议(增益微调、代码生成与HIL测试)。通过手把手教学,帮助读者掌握950V↔48V双向LLC变换器的完整设计流程,实现高效率能量双向流动的同时保持软开关特性,适用于储能系统、车载充电等应用

MHD0815的博客 179

手机VPN的连接方法分享

6、返回到VPN页面,可以看到刚刚新添加的VPN,点击开启VPN后面的开关。5、在打开的添加VPN的页面中输入VPN的信息后点击右上角的“保存”按钮。7、待VPN开关开启后,可以看到添加的VPN正在连接的提示信息了。2、在打开的小米手机设置页面中点击“更多连接方式”的菜单项。3、然后在打开的更多连接方式页面中点击VPN的菜单项。4、在打开的VPN设置页面中点击“添加VPN”的按钮。1、首先在手机屏幕左右的滑动,找到手机的设置图标。

惠惠软件 3万+

min-max容斥

基本就这俩式子:

caoyang1123的博客 1453

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

loj#2542. 「PKUWC2018」随机游走(树形dp+Min-Max容斥)

传送门 首先,关于\(Min-Max\)容斥 设\(S\)为一个点的集合,每个点的权值为走到这个点的期望时间,则\(Max(S)\)即为走遍这个集合所有点的期望时间,\(Min(S)\)即为第一次走到这个集合的期望时间,题目所求为\(Max(S)\)很难算于是转化为求\(Min(S)\) 设\(f_u\)为点从点\(u\)开始游走第一次到达\(S\)的期望时间,那么有\[f_u=1+\sum_{(...

weixin_33937499的博客 122

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

loj#2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥) 很好很有趣很神仙的题! 题目链接: https://loj.ac/problem/2542 题意: 请自行阅读 题解首先我们显然要求的是几个随机变量的最大值的期望(不是期望的最大值),然后这玩意很难求,根据Min-Max容斥化成最小值的期望来求。 Minn-ma...

suncongbo's blog 874

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【LOJ#2542】[PKUWC2018]随机游走(min-max容斥,动态规划)

【LOJ#2542】[PKUWC2018]随机游走(min-max容斥,动态规划) 题面 LOJ 题解 很明显,要求的东西可以很容易的进行\(min-max\)容斥,那么转为求集合的\(min\)。 那么怎么求解每个集合的\(min\)呢。 显然以起点为根节点,如果点集中一个点在另外一个点的子树内,显然不需要考虑,索性丢掉。考虑剩下的点,把他们的子树丢掉(要访问子树肯定要访问到某个点),那么剩下的...

weixin_30682415的博客 156

LOJ#2542. 「PKUWC2018」随机游走

LOJ#2542. 「PKUWC2018」随机游走 题目描述 Solution 去过一个点集中所有节点的期望时间不好求,考虑min−maxmin-maxmin−max容斥,转化为求第一次到达某一个点集的期望时间。 我们对于每一个点集sss,都求出fif_ifi​表示从iii结点到点集sss中某一个结点的期望步数。 每一次dpdpdp显然可以用树上高消完成,时间复杂度O(2nn)O(2^nn)O(2...

xmr_pursue_dreams的博客 219

loj#2542. 「PKUWC2018」随机游走

菜鸡选手省选将近科技都没有点全。。又被xgcxgcD飞了 首先直接minmax容斥,max就是S最后一次被访问的期望,min就是S第一次被访问的方案 枚举每个集合,设f[x]为x出发min(S)的期望,若x属于S则f[x]=0,否则f[x]=(sigema f[son] + f[fa])/deg[x] +1 直接高斯会爆炸,但是我们可以把每个点用父亲表示出来,推完就是这样的。f[x]=f[f...

weixin_30315723的博客 84

loj#2542. 「PKUWC 2018」随机游走

传送门 解题思路: Min-Max容斥真神奇……然而不知如何证明…… 设 Max(s)Max(s)Max(s) 表示集合里最晚被访问的节点被访问的期望步数(也就是访问所有节点的期望步数)。 设 Min(s)Min(s)Min(s) 表示集合里最早被访问的节点被访问的期望步数(也就是第一次访问到集合里的节点的期望步数) 那么 Max(s)=∑T∈S(−1)|T|+1Min(T)Ma...

cdsszjj的博客 901

Min-Max容斥小记

Min-Max 容斥学习笔记

weixin_55851276的博客 1242

min-max容斥【概念+例题解析】

min-max容斥公式: T为S中的子集,累加符号表示要求出S中的所有子集进行计算。 max(S): 表示S集合中出现元素的期望最大值,即所有元素全部出现时的期望。 min(T): 表示T集合中出现元素的期望最小值,即只要出现元素即可。 证明过程如果想要了解可以自行百度,涉及二项式反演内容。 例题1【h...

lucius-liu.cn 3127

Min-Max容斥及其推广和应用

概念 Min-Max容斥,又称最值反演,是一种对于特定集合,在已知最小值或最大值中的一者情况下,求另一者的算法。 例如: $$max(a,b)=a+b-min(a,b) \\\ max(a,b,c)=a+b+c-min(a,b)-min(a,c)-min(b,c)+min(a,b,c)$$ 显然,将所有数取相反数,易知用最大值求最小值的公式与用最小值求最大值的公式形式相同。以下只讨论用最...

weixin_30673715的博客 458

「PKUWC 2018」随机游走

算发标签:min-max容斥+FWT+期望概率dp

forever_dreams的博客 612

[学习笔记] min-max容斥

结论及证明 给定集合SSS,max(S)max(S)max(S)为集合SSS中的最大值,min(S)min(S)min(S)为集合SSS中的最小值,则我们有一个式子: max(S)=∑T⊆S(−1)∣T∣−1×min(T)max(S)=\sum_{T\subseteq S}(-1)^{|T|-1}\times min(T)max(S)=T⊆S∑​(−1)∣T∣−1×min(T)不多说,直接开证(淦 ),首先我们设一个容斥系数f(∣T∣)f(|T|)f(∣T∣)使这个式子成立: max(S)=∑T⊆Sf(∣T

C202044zxy的博客 641
上一篇: [容斥 NTT] LOJ#2541. 「PKUWC 2018」猎人杀
下一篇: AFO
LowestJN
博客等级 码龄10年 76粉丝 422原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值