1001
题意:给出一个无向图,其中边有两种,附魔和没附魔的。初始在1号点,状态为没附魔,每次会等概率随机挑选一条边走,当经过附魔边时,状态会改变(附魔->没附魔,没附魔->附魔),问走k步后到达n号点且状态为附魔的概率。
比赛时,我错误的认为走出每条路径的概率都是相等的,一个反例如下:

路径1-2-5的概率为,而路径1-3-5的概率为
首先讲一下官方题解做法:
最终答案为:走k步到n且状态为附魔的概率/任意走k步的概率
显然任意走k步的概率为1,所以只需求出分子。我们发现,如果没有状态,是很容易求出1到n的概率,所以我们可以将状态转化到点上:将每一个点拆成两个,附魔点和没附魔点,代表当前的状态。若一条边时附魔边,则将对应的一点的附魔点于另一点没附魔点相连,若是普通边,则将对应的附魔点和没附魔点相连。
这样转化后,我们发现只需求出1号没附魔点到n号附魔点的概率就行了。
复杂度
接下来是我比赛时的做法:
还是求走k步到n且状态为附魔的概率,设数组表示从i到j,且满足在j点是状态为附魔的概率,
表示从i到j的概率,但对在j点的状态没有限制。
考虑矩阵乘法中的一次转移,枚举了从i到j的一个中间点k,(转移后的)可以直接加上
,那么考虑
,有两种情况,从i到k时变成附魔,而从k到j状态不变,概率为
,对应的,另一种情况的概率为
,两种情况相加即可。
复杂度同样为
1003
题意:有n台电脑,其中第k台电脑坏了,有m个交换方式依次进行,问对于1~n,使得最后坏的电脑交换到这个位置,最少放弃几次操作
我们可以定义一个状态表示前i个操作,交换到j的最小代价(即最少放弃几次操作)
对于每个交换,与其无关的剩下n-2个电脑是否放弃此次操作并无关系,所以为使代价最小,此次不放弃,即
而对于a,如果执行此次交换操作,那么代价为,而如果放弃,则代价为
,取两者较小值即可
利用滚动数组优化空间,复杂度为

1522

被折叠的 条评论
为什么被折叠?



