模拟赛总结
本文章统计了自2024/11/21开始的模拟赛总结
分数汇总
分数格式:实际得分/预计得分/以我的实力应该得的分数
题目 | 24.11.21 | 24.11.23 | 24.11.25 | 24.11.26 |
---|---|---|---|---|
A | 100/100/100 | 100/100/100 | 30/30/100 | 20/20/20 |
B | 80/100/100 | 70/70/100 | 0/30/55 | 0/0/100 |
C | 0/0/50 | 0/0/64 | 0/0/0 | 100/100/100 |
D | 0/0/40 | 0/0/30 | 0/0/50 | 0/0/20 |
总分 | 180/200/290 | 170/170/264 | 30/60/215 | 120/120/240 |
模拟赛总结
24/11/21
策略:出现失误。前面慢吞吞写了很久T1、T2,摆了很久。后面两题没时间打暴力,没有拿到90pts。
T1
小模拟。多项式除法,直接做就做完了。推式子花了点时间,有点慢。
T2
数论;DP建图;最短路;状压DP。正解是枚举一个点然后状压DP,但是根据DP建图然后跑Dijkstra能过,甚至纯粹DP也能过。我写的是暴力DP,理论上复杂度不对,应该用Dijkstra优化。因为对时间复杂度的错误(实际上结果是正确的)估计,写了部分分,但是写挂了,不然100pts。
T3
容斥DP。想过容斥但是排除了。应将容斥DP作为trick记录。
T4
平衡树;KMP。有难度。没仔细想,但是何天成场切了,做法如下:
考虑KMP中维护的pre数组。如果一个以i结尾的区间对k的询问有贡献,那么i可以通过pre一直跳到k。建一棵树,从令点i的父亲是pre[i],那么询问i的答案就是i的子树大小。
何天成使用dfn序把树展开到线段上,并维护一个nxt[i]表示i的子树在线段上结尾的位置+1的位置对应的点,也就是这颗子树对应的区间结束后要去的下一个子树,也就是这颗子树右边的兄弟或是亲戚的编号。使用splay维护这个线段的nxt。
事实上,后半段可以用树链剖分做,这说明了树链剖分和dfn序+某数据结构(例如平衡树)是可以互相转化的。
改进措施
记录容斥DP作为trick。加强专注力。学习平衡树。向何天成请教考试技巧。开考后要快速切水题。
24/11/23
策略
基本没问题。注意先写简单的部分分,太复杂的部分分留到后面写。本次比赛问题还是控制力差了,由于T1过于简单直接摸了 😕 。
T1
很简单,一眼秒了,十分钟写完。
T2
线性DP;根据转移点优化DP。
本题暴力很好想,但是正解需要注意力。原式子 \(f_{i,j}\) 表示a匹配到了i,b匹配到了j,转移为 \(f_{i,j}=\max(f_{i-1,j}+1,f_{i,j-1}+1,f_{i-1,j-1}+1+\inf\times [a_i==b_j])\) 。注意到在不是 \(a_i==b_j\) 的地方都会使用最后一种转移,因此可以把转移点设置在所有的 \(a_i==b_j\) 的地方。\(dp_i\) 表示 \(pos_a-pos_b==i\) 的时的最小操作次数。
T3
需要玩样例发现一些性质,再想到并查集维护。
T4
不会。
改进措施
模拟赛注意力差出去休息,否则自罚一道紫题限当天写完,如果没完成那么停休闲娱乐1周(感觉我坚持不下来怎么办)。把T2整理,并整理DP相关题目。
24/11/25
T1
一个枚举思维:枚举答案的时候,如果答案不会太大,考虑只枚举答案不枚举不是答案的部分。
放在这道题上是一个trick:请问有多少对整数 \(x,y\) 满足 \(1\le x\le n\) 且 \(1\le y\le m\) 且 \(\exists k\in N_+, xy=k^2\) ;一个等价的问题 \((\sqrt x +\sqrt y)^2\in N_+\)。
做法有两种:线性的,把 \(a\) 质因数分解,设置一个集合 \(S\) 表示出现奇数次的质因子,那么能够与 \(a\) 匹配产生贡献的数的 \(S\) 一定和它的 \(S\) 相同。复杂度未知的(或许是 \(O(ans)\) ),枚举两个完全平方数 \(i^2,j^2\) 作为 \(x,y\) 的基底,然后枚举一个共同的倍数 \(k\) ,这样一来两个数字的质因数分解的奇次项就互相抵消了,预先统计上 \(x==y\) 的减少复杂度,最后注意 \(i==j\) 或者 \(gcd(i^2,j^2)>1\) 时应该不统计避免重复。另外还有一种思路我没看明白:teleport。
T4
这道题有点好写就是不好想。我们有 \(n-1\) 对禁止关系,禁止有一条路径同时经过一个禁止关系中的那两个点。统计路径总数。考虑如果一对禁止关系的两个 \(x,y\) 不呈现祖孙关系,那么禁止路径的一个端点在 \(x\) 的子树内,另一个在 \(y\) 的子树内。;如果呈现祖孙关系,那么禁止路径的一个端点在 \(x\) 的反子树内,另一个在 \(y\) 的子树内。由于是子树操作,我们用dfn序把树摊开到线段上,建成一个二维图,两个坐标轴表示路径的起点和终点,那么我们相当于是禁止了 \(O(n)\) 个矩形。之后使用矩形面积并就可以了。
那么我们每个限制相当于 ban 掉了坐标系的 1个矩形。直接扫描线求矩形面积并即可。时间复杂度 \(O(n\log n)\)
24/11/26
T1
比 \(𝑎_1 + 𝑏_1\) 大的 \(𝑐_𝑖\) 数量的期望,可以转化为每一个 \(𝑐_𝑖\) 比 \(𝑎_1 + 𝑏_1\) 小的概率之和。
枚举 \(𝑥 ≠ 𝑎_1\),考虑对于 \(𝑎_𝑢 = 𝑥\) 的 \(𝑢\),满足 \(𝑎_𝑢 + 𝑏_𝑢 < 𝑎_1 + 𝑏_1\) 的概率。
此时注意到对于 \(𝑏_𝑢\) 仅有限制 \(1 ≤ 𝑏_𝑢 ≤ 𝑛 , 𝑏_𝑢 < 𝑎_1 + 𝑏_1 − 𝑥\) 以及 \(𝑏_𝑢 ≠ 𝑏_1\),所以容 易计算 \(𝑏_𝑢\) 能取到合法值的概率。
考虑加速这个过程,注意到当 \(𝑥\) 每次增加 \(1\) 时,\(𝑏_𝑢\) 合法解的个数要么不变,要么减少 \(1\) ,且可以拆成两个等差数列以及一个常数列。
复杂度瓶颈在于求逆元,实际上若使用离线求逆元的技巧,可以做到单次询问 \(𝑂(1)\)。
时间复杂度 \(𝑂(𝑇\log𝑛)\) 或 \(𝑂(𝑇+\log𝑛)\) 。
T2
想到了正解是dfs,但是一些细节没想清楚就开始写,导致写了将近一小时没写完。
T3
是原题,写的不慢。
改进
罚自己接下来3天内写2道紫题。注重细节。