时间安排
8;30–9:00 读题,T1看不出来是个什么东西,应该需要点转化。T2第一眼是构造。T3是个数学题,估摸着又是什么乱搞然后搜索的东西。T4是个计数,没什么想法就直接弃了。
9:00–9:20 T1,首先想到如何求出所有解。考虑点分治和DP和 dsu 等维护形式,发现都不好做,难点在于怎么快速得到边权取min的关系。暂时没想法,先写了两档暴力分。
9:20–10:00 T2,读懂题目后决定先写暴力,由于不知道答案的范围,所以有意识的增大的暴力搜索的范围。但是受时空限制根本搜索不了多大,这也导致了没有拿到完整的部分分。
10:00–10:11 T4 ,打了个状压暴力。
10:11–10:50 T1继续思考T1,突然意识到边权最小的问题可以用克鲁斯卡尔重构树完美解决,建出重构树后原问题只要dfs一下就可以了。
10:50–11:30 思考T2,想到了几个贪心思路,突然发现可以对这个分析思路进行DP,但是尝试很多次后发现贪心是假的。
11:30–12:30 T2,我猛然意识到问题本质是一课类似与 K 叉树的形式,一时想不到比较优秀的DP方向,于是写了记忆化搜索暴力DP。拿到 30 分。
12:30–13:00 T2 显然T2 DP 是又优化空间的,但是时间不太够了,而且我困劲上来了,就没有拓展出更多东西。
回顾反思
T1: 完全是送分题,边权最小容易想到克鲁斯卡尔重构树。但是我在这道题上耽误了太多时间。对与一些条件的敏感度不够,对克鲁斯卡尔重构树不够熟悉。
T2: 很可惜,正常比赛几乎前3个小时我都围绕着构造和贪心想,使得在想到大致DP后没有充足时间去深究和优化。题目意思理解上出现了较大问题,其本质 K 叉树的注意上实在是太慢了。
T3: 哥德巴赫猜想。在题目所给范围里,任意偶数都可被拆为两个质数之和,而题目所给 n 又是奇数,于是可以构造偶数和质数之和,得到所求答案。
T4:关键是要转化条件。题目要求所有边数为偶数的图的个数,如果其作为一个限制,计算将较为困难,考虑将其转化为一个易于维护的多项式或者说表达贡献的表达式,利用奇偶性容易个得到
1
+
(
−
1
)
e
d
g
e
n
u
m
2
\frac{1+(-1)^{edgenum}}{2}
21+(−1)edgenum,于是状压图的情况考虑边数就可以了。其次是折半,注意到 n 最大为 46 ,折半后数量较小。对这种可以折半的数字要保持敏感。
本文记录了算法解题的时间安排和回顾反思。解题过程中,T1用克鲁斯卡尔重构树解决边权最小问题;T2尝试贪心和DP,最终用记忆化搜索暴力DP得分;T3利用哥德巴赫猜想求解;T4需转化条件和折半处理。回顾反思指出对部分条件敏感度不足、时间分配不合理等问题。
299

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



