【题解】10-2提高组模拟
还好第一题的记忆化搜索做出来了,不然就废了
A.跑步
这道题使用记忆化搜索就可以过了,记得开long long
1 | |
B. [POI 2018 R2] 自行车道 Bike paths
这道题考的是tarjan缩点
缩点完这个图就成了一个DAG(有向无环图),然后就可以打记忆化搜索了
转移方程就是:
$$
dp_u=\sum dp_v\
v是u的儿子
$$
初始化就是:
$$
dp_u=scc_u\
scc_u就是u所属的强连通分量的大小
$$
注意的是节点本身并不计入答案
1 | |
C.[HNOI2013] 比赛
直接暴力dfs,但是需要加一些剪枝
- 考虑到最后再来判断太浪费,在搜索时就限制每人的得分不得超过总分
- 如果对于第$u$个人来说,它赢下所有以后的比赛也打不出自己的总分(最后的分数也需要等于总分)
- 考虑$sx$表示分出胜负的总场数,$sy$表示所有队的总得分。那么显然有$sx+sy=\frac{n(n-1)}{2}$,且$3sx+2sy=su$,由此可以截除$sx$和$sy$。在搜索时,可利用其限制胜利场次
- 利用人数为$X$,分数集合为$A的比赛方案数一定,它与某人具体的得分是无关的。因此可以利用记忆化索索,把最后剩余的几个人的分数哈希存储起来(这可能并不算是剪枝)
1 | |
D.[MtOI2018] 衣服?身外之物!
用7进制做状压dp,然后7788搞下就可以了
1 | |
【题解】10-2提高组模拟
http://j27egu.github.io/2025/10/02/【题解】10-2提高组模拟/