NOIP模拟总结
这场并没有打好
A
预计:100,实际:100
- 思路历程:我先考虑去把所有点按要求的道路种类分开,判断是否联通,是否是一条链,其中每个点要求的个数是否满足条件,可以发现这个做法会超时,因为在不同颜色的统计中,会有相同的点的所有边被重复统计,所以我直接把所有点按度数从小到大排序,然后每次对一种颜色判断的时候直接默认其中度数最大的点每统计了,完成题目,时间复杂度O(nlog n)
- 题解:没说怎么判邻边边权合法的,不过应该差不多
这个题最后那个优化想得久了,浪费时间,我应该在意识到什么是时间大的原因后马上针对优化的,而不是想着改进算法
收获:看着时间复杂度想优化
B
预计:29,实际:0(第一次提交实际上有16分,但是后面想拿更多暴力分,前面的错了)
- 思路历程:很显然一个固定的矩阵答案为max(有0的列数,有1的行数),但是后面的DP脑子抽了,没想到
- 正解:设dp[i][j]表示在前i列的问号填充完毕后,有j列有0的方案数。可以发现,如果有没有0的列,那么答案为max(n, j)(有一列全是1);有过全都有0,那么答案为max(n, m),但是已经提前把n,m调整-> n<=m,所以答案为m。
这时就可以直接通过方案数乘以答案解决
这个题我应该想到去直接DP方案数的,但是我没有考虑到答案的计算可以简化到一列或一行上,所以没想到
收获:在某些计算很复杂的时候考虑把局部简化
C
预计:0,实际:0
这题考试的时候没打
- 正解:正在理解
D
预计:12,实际:12
- 思路历程:先简简单单打了一下平方的暴力,然后考虑了一下莫队,发现向左移动有问题,不行。再考虑缩短固定左端点时对答案求解的时间,没想到,寄了。
- 正解:没想到用回滚莫队就行了
回滚莫队这个东西没用过,不熟悉,所以没有想出来,不过我会写几个习题把这种套路熟悉一下的