LINK:随机漫游

非常妙的一道题。

容易想到倒推期望。

设状态 f[i][j]表示到达第i个点 此时已经到达的集合为j能走到全集的期望边数。

只要求出来这个就能O(1)回答询问。

\(f[i][j]=1+\sum_{v\in son_x,v\notin j}\frac{1}{d_i}f[i][j|v]+\sum_{v\in son_x,v\in j}\frac{1}{d_i}f[i][j]\)

有了这个东西 显然可以\((2^n\cdot n)^3\)暴力高斯消元了。

考虑优化 容易发现如果按照二进制的大小倒着推这个东西 那么前面那个部分完全已知了。

这样我们每次的方程最多n个 总复杂度\(2^n\cdot n^3\)

需要卡卡常数 如 消的时候d==0可以直接break了。

const ll MAXN=19;
ll f[MAXN][1<<MAXN];//f[i][j]表示到达i这个点此时集合为j还需要跑多少才能得到全集的期望边数.
ll n,m,Q;
ll a[MAXN][MAXN],d[MAXN];
ll b[MAXN][MAXN],g[MAXN];
inline ll ksm(ll b,ll p){ll cnt=1;while(p){if(p&1)cnt=(ll)cnt*b%mod;b=(ll)b*b%mod;p=p>>1;}return cnt;}
inline void GAUSS()
{
rep(1,n,i)
{
ll p=i;
rep(i,n,j)if(b[j][i]){p=j;break;}
if(p!=i){rep(1,n,j)swap(b[i][j],b[p][j]);swap(g[i],g[p]);}
ll ww=ksm(b[i][i],mod-2);
rep(1,n,j)
{
if(i==j)continue;
ll d=ww*b[j][i]%mod;
if(!d)continue;
rep(1,n,k)b[j][k]=(b[j][k]-b[i][k]*d)%mod;
g[j]=(g[j]-g[i]*d)%mod;
}
}
rep(1,n,i)g[i]=g[i]*ksm(b[i][i],mod-2)%mod;
}
signed main()
{
freopen("1.in","r",stdin);
get(n);get(m);
rep(1,m,i)
{
ll get(x),get(y);
a[x][y]=a[y][x]=1;
++d[x];++d[y];
}
rep(1,n,i)d[i]=ksm(d[i],mod-2);
ll maxx=(1<<n)-1;
fep(maxx-1,1,j)
{
//求出每个f[i][j].
rep(1,n,i)
{
b[i][i]=1;g[i]=0;
if(j&(1<<(i-1)))
{
++g[i];
rep(1,n,k)
{
if(a[i][k])
{
if(!(j&(1<<(k-1))))g[i]=(g[i]+d[i]*f[k][j|(1<<(k-1))])%mod;
else b[i][k]=(b[i][k]-d[i])%mod;
}
}
}
}
GAUSS();
rep(1,n,i)f[i][j]=(g[i]+mod)%mod;
}
get(Q);
rep(1,Q,i)
{
ll st,s=0,get(x);
rep(1,x,i)
{
ll get(y);
s=s|(1<<(y-1));
}
get(st);
putl(f[st][(maxx^s)|(1<<(st-1))]);
}
return 0;
}

luogu P4321 随机漫游 期望dp 二进制 高斯消元的更多相关文章

  1. HDU 4418 Time travel 期望dp+dfs+高斯消元

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4418 Time travel Time Limit: 2000/1000 MS (Java/Othe ...

  2. BZOJ 3143 Luogu P3232 [HNOI2013]游走 (DP、高斯消元)

    题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3143 (luogu) https://www.luogu.org/pro ...

  3. Luogu P4321 随机漫游

    期望DP要倒着推 Luogu P4321 题意 LOJ #2542 不一定是树,询问点不一定均为1 $Solution$ 设计一个巧妙的DP状态 设$ F(S,x)$表示当前在点$ x$已经走遍了$ ...

  4. BZOJ2707 [SDOI2012]走迷宫 【概率dp + tarjan + 高斯消元】

    题目 Morenan被困在了一个迷宫里.迷宫可以视为N个点M条边的有向图,其中Morenan处于起点S,迷宫的终点设为T.可惜的是,Morenan非常的脑小,他只会从一个点出发随机沿着一条从该点出发的 ...

  5. 【JLOI 2012】时间流逝(期望,树上高斯消元)

    题目链接 这是一道传统的期望题,可是有一些套路值得我去掌握. 我们用$s$来表示一种状态,就是当前拥有的能量圈,是一个正整数拆分的形式. 用$f_{s}$表示如果遇到果冻鱼后丢掉了最小的能量圈后的状态 ...

  6. 【BZOJ 2337】 2337: [HNOI2011]XOR和路径(概率DP、高斯消元)

    2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1170  Solved: 683 Description ...

  7. hdu4418(概率dp + 高斯消元)

    应该是一个入门级别的题目. 但是有几个坑点. 1. 只选择x能到达的点作为guass中的未知数. 2. m可能大于n,所以在构建方程组时未知数的系数不能直接等于,要+= 3.题意貌似说的有问题,D为- ...

  8. 【Luogu】P4035球形空间产生器(高斯消元)

    题目链接 水比题,把圆方程展开减一下把平方都减掉半径的平方也减掉,高斯消元即可. 然后我只输出两位小数,爆了两次零.我好菜啊. #include<cstdio> #include<c ...

  9. 【Luogu】P2447外星千足虫(高斯消元)

    题目链接 高斯消元解%2意义下的方程,Bitset优化一下. 在消的过程中就能顺便把有解的第一问求出来,记录一下访问过的最大行. #include<cstdio> #include< ...

随机推荐

  1. css modules是什么?

    什么是CSS Modules? 官方的介绍是: 所有的 class 的名称和动画的名称默认属于本地作用域的 CSS 文件.所以 CSS Modules 不是一个官方的规范,也不是浏览器的一种机制,它是 ...

  2. CSS-界面滚动时不显示滚动条

    设置滚动条的样式: div::-webkit-scrollbar { width: ; }   关于::-webkit-scrollbar ::-webkit-scrollbar CSS伪类选择器影响 ...

  3. 自适应高度输入框(contenteditable/textarea)

      一.用div模拟textarea div模拟输入域可以根据输入内容自动伸缩,而input和textarea输入内容较多时,高度固定,内容会显示不全. 1.坑1(IOS端无法输入) 在取消全局默认样 ...

  4. Re5ilio 5ync:资源神器

    文章目录 #0x0 简单的介绍 #0x1 安装使用 #0x10 下载 #0x11 安装 #0x12 升级pro权限 #0x13 开始添加资源 #0x14 后续 一定要小心哦!! #0x0 简单的介绍 ...

  5. 读《大话设计模式》——应用策略模式的"商场收银系统"(WinForm)

    策略模式的结构 这个模式涉及到三个角色: 环境(Context)角色:持有一个 Strategy 类的引用.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现.此角色给出所 ...

  6. JVM 专题四:类加载子系统(二)双亲委派机制

    2. 双亲委派机制 2.1 双亲委派机制工作原理 2.1.1 原理 Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存,生成class对象 ...

  7. python面试题七: mysql数据库

    ---------------------------------------------------------------------------------------------------- ...

  8. python eval函数,将列表样式的字符串转化为列表

    python eval函数,将列表样式的字符串转化为列表 >>> str_1 = '[1,2,3,4,5,6]'>>> type(str_1)<type 's ...

  9. redis(十三):Redis 集合(Set) python

    # -*- coding: utf-8 -*- import redis r = redis.Redis(host="126.56.74.190",port=639,passwor ...

  10. 保存与恢复变量和模型,tensorflow官方文档阅读笔记

    官方中文文档的网址先贴出来:https://tensorflow.google.cn/programmers_guide/saved_model tf.train.Saver 类别提供了保存和恢复模型 ...