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的完全图,就可以用枚举拓扑序的方式搜索。

posted @ 2022-04-01 15:40  Displace  阅读(28)  评论(0)    收藏  举报