1426. 游走 (walk)
题意
一个无向连通图,顶点从 1 编号到 N,边从 1 编号到 M。
小 Z 在该图上进行随机游走,初始时小 Z 在 1 号顶点,每一步小 Z 以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分数。当小 Z 到达 N 号顶点时游走结束,总分为所有获得的分数之和。
现在,请你对这 M 条边进行编号,使得小 Z 获得的总分的期望值最小。
30%的数据满足N≤10
100%的数据满足2≤N≤500且是一个无向简单连通图。
题解
要对边进行编号使总分期望最小,就按贪心的思想,把小的编号给期望经过次数多的边,于是问题转化为求每条边经过的期望次数。
又因为一条边的期望次数也不好直接求,考虑先算每个点的期望经过次数。
显然n为1,剩下的点可考虑是从哪个点来的,可按度数等概率转移,高斯消元即可求得。
于是对于边,肯定是两个点互相走到时会经过,加上两个点分别的期望次数/度数即可。
1304.XOR和路径(xor)
题意
给定一个无向连通图,其节点编号为1到N,其边的权值为非负整数。
试求出一条从1号节点到N号节点的路径,使得该路径上经过的边的权值的“XOR和”最大。该路径可以重复经过某些节点或边,当一条边在路径中出现多次时,其权值在计算“XOR和”时也要被重复计算相应多的次数。
直接求解上述问题比较困难,于是你决定使用非完美算法。具体来说,从1号节点开始,以相等的概率,随机选择与当前节点相关联的某条边,并沿这条边走到下一个节点,重复这个过程,直到走到N号节点为止,便得到一条从1号节点到N号节点的路径。显然得到每条这样的路径的概率是不同的并且每条这样的路径的“XOR和”也不一样。
现在请你求出该算法得到的路径的“XOR和”的期望值。
【样例1解释】
有1/2的概率直接从1号节点走到2号节点,该路径的“XOR和”为3;
有1/4的概率从1号节点走一次1号节点的自环后走到2号节点,该路径的“XOR和”为1;
有1/8的概率从1号节点走两次1号节点的自环后走到2号节点,该路径的“XOR和”为3;......;
依此类推,可知“XOR和”的期望值为:3/2+1/4+3/8+1/16+3/32+......=7/3,约等于2.333。
【数据规模】
输入的数据保证图连通.
30%的数据满足N≤30
100%的数据满足2≤N≤100,M≤10000
但是图中可能有重边或自环。
题解
对于异或问题先考虑拆位,对于每一位,只关心1-n路径上边的异或和是否为1。
于是考虑DP,记在u时异或和为1的概率。但要记1-u还是u-n呢?如果记1-n的话,其实转态是不明确的,因为一个点可能经过多次,比如一开始在1号点,之后又绕回来了,这样根本不知道记的是哪个时间的状态,于是异或和为1的概率也不明确,无法转移。注意到走到n就停止了,这样把转态设计为u-n的异或和为1的概率,就是一个明确、可转移的状态了,同样高斯消元即可求得。
1846. 和谐矩阵(matrix)
题意
构造一个n*m的01矩阵,满足每个点和其周围所有点的异或和为0。
n,m<=40
题解
直接构造没有思路,考虑题目的要求,发现就是一些值的异或和为0,于是列出方程可高斯消元解出,但效率是
O
(
n
6
)
O(n^{6})
O(n6)的。
考虑如何减掉一些未知数,因为题目的限制是有规律的,考虑利用这样的规律,发现每一个数可以有前两行的数确定,于是只要确定第一行的数,就可确定这个矩阵。
考虑如何列出第一行未知数的方程,在n+1行限制比较方便,n+1行的所有元素都必须为0,依此可列出方程求解。