模拟72 题解 A. 简单的序列 B. 简单的期望 C. 简单的操作

将‘(’视作1,‘)’视作-1。

那么问题转化为给定中间一段序列,要求前缀和恒不小于0,且权值和等于0的方案数。

暴力dp求出i位产生j个左括号剩余的方案数,显然右侧是对称的。

然后直接暴力枚举左侧有多少个左括号就完了。

需要注意中间一段应当对前缀和不断取min,得出左侧产生左括号数量的下界。

B. 简单的期望

因为最多出现n次+1,进位不会很多。

然而并不能想到可以这样构造出dp。

设$dp(i,j,k,0/1)$表示操作前$i$次,最后8位状态是$j$,从第9位开始有连续$k$位相同,第9位为0/1的概率。

这个$dp$设计巧妙地利用了高位转移次数很少的结论。

于是可以简单转移。

C. 简单的操作

刚开始错误理解了题意,然后打的很弱智。

之后发现了一些奇怪的结论:

1.如果图中存在奇环,那么必死。

因为奇环之可能被消成偶环+奇环的形式,而三元环由于它的特殊性质,无法被消掉。

所以只要dfs染色就可以判出-1的情况。

2.如果图是一棵树,那么答案是树的直径。

首先答案显然不大于直径。

存在一种方案,构造出直径:将非直径边的每一个点,由叶子节点开始,向爷爷节点连边。

3.如果图不联通,可以分别构造出直径后简单相连。

4.如果图中存在偶环,套用树的结论,缩边双之后可以视为带点权的树的直径。

然而这个点权并没有推出来是什么。

考试最后突然想到,因为只要找一条链。

为了使答案最优化,这个点权是所连的两点之间的最短路距离。

所以答案就是两点之间最大距离。

马上码了一个bfs,然而忘记了图可能不联通,于是挂成30分。