cf113D. Museum(期望 高斯消元)】的更多相关文章

题意 题目链接 Sol 设\(f[i][j]\)表示Petya在\(i\),\(Vasya\)在\(j\)的概率,我们要求的是\(f[i][i]\) 直接列方程高斯消元即可,由于每个状态有两维,因此时间复杂度为\(O(n^6)\) 注意不能从终止节点转移而来 #include<bits/stdc++.h> using namespace std; const int MAXN = 2333; inline int read() { char c = getchar(); int x = 0,…
[题意]给定n个点m条边的无向连通图,每条路径的代价是其编号大小,每个点等概率往周围走,要求给所有边编号,使得从1到n的期望总分最小(求该总分).n<=500. [算法]期望+高斯消元 [题解]显然,应使经过次数越多的边编号越小,问题转化为求每条边的期望经过次数. 边数太多,容易知道f(u,v)=f(u)/out(u)+f(v)/out(v),所以转化为求每个点的期望经过次数,这就是驱逐猪猡了. 设f[x]表示点x的期望经过次数,根据全期望公式(讨论“经过“的问题不能依赖于下一步): $$f[x…
[题意]给定n个点m条边的带边权无向连通图(有重边和自环),在每个点随机向周围走一步,求1到n的期望路径异或值.n<=100,wi<=10^9. [算法]期望+高斯消元 [题解]首先异或不满足期望的线性,所以考虑拆位. 对于每一个二进制位,经过边权为0仍是x,经过边权为1变成1-x(转化成减法才满足期望的线性). 设f[x]表示点x到n的路径xor期望,f[n]=0,根据全期望公式: $$f[i]=\sum_{j}\frac{f[j]}{out[i]}\ \ , \ \ w(i,j)=0$$…
3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3576  Solved: 1608[Submit][Status][Discuss] Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分数.当小Z 到达N号顶点时游走结束,总分为所有获得的分…
如果纯模拟,就会死循环,而随着循环每个点的期望会逼近一个值,高斯消元就通过列方正组求出这个值. #include<cstdio> #include<cctype> #include<cstring> #include<algorithm> using namespace std; const double eps=1e-9; bool vis[503]; double f[503],a[503][503],ans[500*500]; int N,M,cnt=…
纪念首道期望题(虽说绿豆蛙的归宿才是,但是我打的深搜总觉得不正规). 我们求出每条边的期望经过次数,然后排序,经过多的序号小,经过少的序号大,这样就可以保证最后的值最小. 对于每一条边的期望经过次数,其实是从它起点和终点来的.设f[]为每个点经过的期望,out[]为每个点的出度 设一条边,起点为u,终点为v.那么它的期望经过次数为f[u]/out[u]+f[v]/out[v] 这样问题就转化为求每个点的期望经过次数了 对于起点,一开始经过一次,也可能从其他点走过来. f[1]=1+sigma(f…
题意:给定一个 n 个结点的有向图,然后从 1 结点出发,从每个结点向每个后继结点的概率是相同的,当走到一个没有后继结点后,那么程序终止,然后问你经过每个结点的期望是次数是多少. 析:假设 i 结点的出度为 di,期望执行次数为 xi,对于一个有 n 个前继结点的 a1, a2, a3 ... an 的结点 i,可以列出方程 xi = xa1/da1 + xa2/da2 + .. + xan/dan,根据每个结点都可以列出一个方程,然后就有 n 个方程,其中结点 1 比较特殊,因为是由它开始的所…
题意 题目链接 Sol 期望的线性性对xor运算是不成立的,但是我们可以每位分开算 设\(f[i]\)表示从\(i\)到\(n\)边权为1的概率,统计答案的时候乘一下权值 转移方程为 \[f[i] = (w = 1) \frac{1 - f[to]}{deg[i]} +(w = 0) \frac{f[to]}{deg[i]} \] 高斯消元解一下 注意:f[n] = 0,有重边! #include<bits/stdc++.h> using namespace std; const int MA…
题目链接 参考 远航之曲 把走每条边的概率乘上分配的标号就是它的期望,所以我们肯定是把大的编号分配给走的概率最低的边. 我们只要计算出经过所有点的概率,就可以得出经过一条边(\(u->v\))的概率\(P_{ei}\).用\(dgr[i]\)表示点\(i\)的度数,那么\[P_{ei}=\frac{P_u}{dgr[u]}+\frac{P_v}{dgr[v]}\] 每个点的概率怎么求呢?就是\[P_i=\sum_{(i,j)\in G}\frac{P_j}{dgr[j]}\] 用\(a[i][j…
一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分数.当小Z 到达N号顶点时游走结束,总分为所有获得的分数之和. 现在,请你对这M条边进行编号,使得小Z获得的总分的期望值最小. 总分的期望值=每条边的期望经过次数*边的编号 之和. 不论我们如何编号,每条边的期望经过次数是不会变的,要使得边权和的期望最小,只需要贪心地使期望次数和边权倒序对应即可.…