2022.04.01省选模拟赛总结
1.时间安排
7:40~8:00 看题面
T1:几何背景,不至于上计算几何吧……
T2:计数题,n只有18,应该是状压或者fwt什么的。
T3:树上问题,应该要dp,特殊的图给了很多分。
8:00~8:20 T1
简单一解方程就得到了\(O(n^2)\)的暴力,跳T2。
8:20~8:40 T2
写了\(O(2^m)\)水掉19分。
突发奇想,觉得能折半,似乎m=45时候能过,但是一想,没法O(1)或O(log)快速查找,就先跳T3了。
8:40~9:00
奇数个叶子直接判掉-1。
先写了菊花图的情况,贪心去匹配叶子。
然后写了链的情况,用std::multiset维护一下贪心。
对n=2e4没什么想法,回去看T1。
9:00~10:20
想着既然给出的x单增了,必然是有单调性的。
在纸上乱搞一波,证出来当前的r如果大于等于之前的r,之前的必定不会是最优解,就乱搞了一个玄学队列维护,每次遍历队列去更新。
跑了一波随机数据,发现队列里面的元素个数稳定在200左右,最坏也只有500。
又尝试手构了奇奇怪怪的数据,包括缩小值域,sort,差分等等,都能跑的很快,觉得差不多能过,就不管了。
10:20~11:00
继续想T2的折半。
打了个表,发现m=25的时候合法的初始状态只有50000左右,但是判断合法性的复杂度太高了,以至于只能跑动30的数据……
一直在想怎么样降低check()的复杂度,试着用并查集什么的,但似乎没什么用,就放弃了。
11:00~12:00
先想二叉树怎么做,觉得可能是贪心,想了一会觉得不对,仔细分析才明白这个数据是为了限制深度是log,需要先写出来n=2e4的暴力。
然后开始想暴力,但是觉得这道题没法背包解决,就乱分析性质,但一直乱搞到结束都没结果。
result:
T1: 40 T2: 19 T3: 9(菊花图假掉了……)
2.反思
T1:
(在loj上吸了口氧气AC了……)
其实自己的想法和正解差不多了,我想的是队列,正解是单调栈。
能分析出单调性已经是很大进步了,但还是不够彻底,还要继续深度思考。
T2:
42分的枚举拓扑序确实没想到也没见过,也是一种数据很小时的搜索方法。
正解是容斥原理,感觉容斥的题目做的太少,而且理解不够深刻,很多时候不能独立思考出来或者速度太慢。
T3:
9分的菊花写炸了,自闭。
留给这题的时间太少了,感觉这题应该是这场比赛最值得去好好思考的题。
主要还是基本的规律没推出来,没发现之和子树内叶子节点数有关,导致O(nm)的做法没想出来,这道题就寄了。
知道规律后立马就想到去用树剖维护了,代码两遍就过了,还是败在了没找到基础的规律。
3.简要题解
直接丢link了,咕咕咕。
T1:(Link)[https://www.luogu.com.cn/problem/P4697]
T2:(Link)[https://www.luogu.com.cn/problem/P6846]
T1:(Link)[https://www.luogu.com.cn/problem/P6805]
4.总结
1.基础规律
有的题往往知道规律后就知道该用什么东西去搞了,但是往往就是没发现这些规律而寄掉。
最普通的方法就是直接硬莽去推规律,但是难一点的题目可能行不通。
一个比较巧的方法就是去写个基础暴力,跑数据打表找规律,%LYC一场比赛写了暴力高斯消元打表发现规律场切。
感觉第一种方式比较适合题意很简单,规律不难推出,第二种方式适合题意非常复杂,规律看题解也不好想出来的题目,直接构数据打表会效率更高。
这也产生了另一个问题,就是写出来比较优秀的暴力打表,这也需要多锻炼。
2.搜索技巧
今天学到一个新的技巧:枚举拓扑序。
这个技巧可以应用于边数很多但是点数很少的情况,比如n=10的完全图,就可以用枚举拓扑序的方式搜索。

浙公网安备 33010602011771号