CTT2022总结DAY2
时间安排#
8.30~9.00#
看完题,T1是博弈,后两题是数据结构,T2一看就是lxl题。
前两题没什么思路,先看T3.
因为题面的BFS序性质良好,考虑用直接维护BFS序列。
这样轮换可以直接把最后一个数放在开头,用了一个平衡树维护。
这样,链可以直接做,完全二叉树因为树高所以也可以按层暴力做,一共有50分。
然后感觉BFS序没有什么更多的性质,想了想DFS序。
有一个猜想是原序列和轮换后的dfs序的LCS很大,这样也可以暴力做,但是写了个程序之后发现并不是。
叶子个数很小不知道怎么用,如果可以用的话那么对层数和叶子数根号分支就可以过了,保险起见先把50分写了。
9.00~10.00#
很久没写写平衡树调了很久。
10.00~10.30#
看T2,随机感觉暴力做是对的,但是并不知道怎么做。
感觉可以把点按照x+y排序,说不定能过,写完发现T炸了
10.30~11.00#
想了想T1的第二档,发现如果某个局面下有黑点或白点一定会直接删掉,因此最终比的就是谁的非叶子节点数比较多。
会了一个n^2的dp,但是没分。
11.00~12.00#
写了T2第三档的树套树,被卡空间了,MLE很难受。
12.00~13.00#
感觉T2第二档分块一下也可以做,结果也T了。
13.00~13.20#
写了T1的状压暴力
题目简述#
T1#
给出一棵有根树,每个点有颜色0/1,两人轮流删数,每个时刻都要保证删除的点是一个包含根的连通块,删除的最后一个点是0则Alice赢否则Bob,问谁会赢
T2#
有n个点,若干次操作:
1.把x<=X,y<=Y的点的y改成Y
2.把x<=X,y<=Y的点的x改成X
3.查询x<=X,y<=Y的点数
n:1e6
T3#
一棵树,m次操作
1.子树加
2.对于所有i,把i的点权送给i%n+1.
问最后每个人的点权。
总结#
数据结构浓度过重。
T1#
没有想到把黑白相等的子树看奇偶性讨论,不然感觉也很好写。
正解是把这个做法从下向上做:
若i的子树内黑色多,i的颜色是黑色。
若i的子树内白色多,i的颜色是白色。
否则看点数,如果最后一步是BOB,就是白色,否则是黑色。
证明可以归纳。
T2#
所有修改形成了一个轮廓线,然后可以用数据结构维护水平和数值,修改均摊是O(1)的。
查询时用总的减去四周的,右上方的点没有变,上方和右方的点的未修改的地方可以分类讨论求出,否则可以用轮廓线上的区间和得到。
T3#
考试时没有想到怎么用叶子深度相等的条件,可以发现按照每一层的节点数单调不降,那么可以划分为根号的段,每段是一个矩形,修改的时候可以用一个二维差分,轮换过后依旧是一个矩形。
然后就没了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】