2023.2.10 省选模拟赛总结

1.时间安排

7:30~9:20

T1博弈背景计数,T2与树相关的数据结构,T3数论。

T3又是求极限又是自然对数的东西,直观上也没法与egf联系,只好默认少一道题。

T1又是不擅长的博弈,但是也许能打表sg函数找一些性质。

T2是区间跳父亲,区间最小链长,看上去不太像log能做的,可能是2log或分块这类的吧。

先试着写T1的爆搜sg,不过写着写着突然意识到这题并不是公平博弈,sg函数的那套理论在这里不适用,手推了下小样例果然如此。

这下只会5分只有白色点了,5分也是分。

接着分别把T2除了正解分的45分都写了,一个是暴力,一个边权都是1可以直接线段树维护,一个最长链 \(\leq500\) 可以直接在线段树上均摊删除,虽然带个log不过我相信他跑不满(看提交记录真的跑过了)。

9:20~12:00

又想了很久T1仍然无果,决定去写爆搜发现状态数如果在完全图上最坏是 \(n!\) 级别的,外层还要乘一个 \(2^n\),就算记忆化感觉也跑的很吃力,感觉可能会做无用功就放弃了。

没得选择只能冲T2,先考虑暴力分块,发现同一个块同时往上跳的过程(假定没有散块操作),如果某时刻 \(a_x\) 已经跳到了 \(y\),但是发现此前已经有其他点跳到了 \(y\),那么接下来 \(a_x\) 向上跳的过程与那个点是完全一致,并且因为是同时跳所以那个点一定之后都是相对 \(a_x\) 的更优的答案,所以可以直接给 \(x\) 打上禁止标记,这样最坏树上的点都被标记一遍,均摊下来就是 \(O(n)\) 的,那么一共根号个块总复杂度就是 \(n\sqrt n\)

整块就是加标记的暴力,非常好做,删除某个点可以用链表维护前驱后继保证复杂度。

接下来是散块,散块不需要和其他点一起跳,因为他们是独立于所在块的,不存在被其他点取代这一说。散块总长度是 \(m\sqrt n\) 的,如果暴力给散块打标记,之后用树上 k 级祖先做如果重剖要乘上一个log,应该也是能用离线长剖做到线性的,不过离线空间开销很大感觉会 mle 。

后来一想假如我每次往上跳都让该点保留在当前位置而不是退回原位置,那么这段到根的路程是 \(O(n)\) 级别而非 \(O(n^2)\)的,那么重剖往上跳也是可以均摊到 \(n(\sqrt n+logn)\) 的。但是如果让当前点保留在当前位置就需要如何加考虑区间覆盖标记,一开始想的是维护上一次被覆盖的标记,那么当前需要跳的步数就是当前标记 \(cov\) 减去之前标记 \(tag\),如果是区间跳操作就再+1,然后更新标记。

但是新问题出现:怎么处理散块与整块的点,一开始想的是分别开两个数组往上跳(居然还过了大样例,拍1组小数据就挂了),后来一想散块修改是会对整块产生影响的,那么可以合并到一起,那么区间覆盖标记就需要每次每个点都要+1,而不是只有散块操作时才变动标记,而且特别的如果散块修改遇到了被禁止的点需要恢复其标记,因为他需要继续向上跳才能产生正确的散块查询结果。

但是新问题出现了,原来是链表维护剩下的点删除很方便,现在需要支持插入点,总不能再带个log,用两个 vector 颠倒维护即可。

调完拍了很多组数据都没啥问题,不过时间也只剩下十几分钟也没时间思考其他题了,不过A一题应该分数不差。

result:

T1:5 T2:100 T3:/

2.总结

T1

题意转化很妙:考虑加强问题,变成两个人都想相对于对方走最多的步数,不是简单的获胜。

\(f_i\)\(i\) 节点上有棋子且 \(i\) 节点对应颜色的人先手时能相对对手多走的步数。

转移枚举所有经过一条出边到达的点 \(j\)\(i,j\) 颜色相同时更新 \(f_i=max{f_j+1}\),不同时更新 \(f_i=min{1-f_j}\)(因为 \(f_j\)\(i\) 颜色的对手,所以要减去),这个容易用拓扑排序求出。

设当前出现棋子的点集为 \(S\),那么先手相对后手多走的步数就是点集内先手颜色的 \(f\) 相加减去点集内后手颜色的 \(f\),若步数 \(>0\),那么当前局面就是先手必胜。

直接用背包就可以做到 \(O(n^3)\) 了。

联想到MO同学经常说的"加强命题",没想到今天在OI也见到了,很新的转化方法。

T2

思路+题解如上。

终于自己能做出了分块题,感觉本题细节处理还不算太复杂,不过对我来说也是难题了。

这道题用到了好多均摊的思想,想到整块的均摊主要是发现大部分点在向上跳的过程路径重复,就发现了这个可以均摊的暴力,以及后来的均摊树剖。

联想到均摊的一类是大量重复且是最优化问题,一类是删除元素有终点,一类是颜色覆盖不同颜色段数(目前能想起来的是这些)。

T3

离谱数论题,放弃。

posted @ 2023-02-10 14:47  Displace  阅读(33)  评论(0)    收藏  举报