做题记录二
写在前面:
多做,少胡
以下是正文:
2026/02/11
随机化总结:
- 随机赋值
- 最强跳蚤
题意:计数有多少树上路径权值积是完全平方数
做法:给素因子随机权值,出现次数为偶数时异或值为0,所以记录树上到根的异或值即可判断权值为完全平方的链数量。 - P10102 矩阵
题意:给你\(A,B,C\)三个矩阵,判断是否有\(A\times B=C\)
做法:由于是矩阵乘法,所以大概率有 \(A\times D\times B=C\times D\)的,我们直接随机一个\(n\times 1\)的\(D\) 出来即可。
![image]()
- 三部图判定:
\(O((\frac{2}{3})^npoly(n))\)
给每个点随机一个颜色不要,那么正确的概率为\((\frac{2}{3})^n\)
然后用 \(2-SAT\) 作判断即可。 - Problem - 6765
不写了,再见(
题意:给你一棵树,定义链的权值为链上颜色数,每次询问给出两条链,问你两条链的大小关系,强制在线
解法:
![image]()
随机 \(k\) 个 \([0,1)\) 变量的最小权值期望为 \(\frac{1}{k+1}\) 所以我们给每种颜色随机值做为权值,那么树剖查区间最小值30次即可大概率判断到,颜色少的链权值会更大。 - Problem - I - Codeforces
大步小步
- 最强跳蚤
- 随机抽样
- [P6817 PA 2013] Filary
如果 \(m=2\) 可以得到答案下界为 \(\frac{n}{2}\) 所以我们每次随机一个数必选选对的概况为 \(\frac{n}{2}\) 然后我们考虑固定一个数如何统计答案
筛出素因子,随机赋值,异或哈希即可 - P11620 Ynoi Easy Round 2025 TEST_34 - 洛谷
还没做,待补
- [P6817 PA 2013] Filary
- 随机染色
- 3400. 「2020-2021 集训队作业」Storm
考虑我们只会选一些不交的菊花,所以随机染色后作费用流即可
- 3400. 「2020-2021 集训队作业」Storm
2026/03/06
- E. Tourists
不是很难,tarjan建出园方树后对树作树剖,对于每一个方点,我们维护一个mutiset,它的定义是儿子中权值最小的点,那么对于线段树查min值,lca是方点的时候就多查一个父亲的权值即可
为什么园方树是对的
考虑两个点如果可以相互到达的路径,如果遇见点双可以绕回来,那么我们直接园方树把点双的权值最小值挂给方点就是可以了
说着码农,我就写了100来行,感觉没多少啊 - E. New Year Tree
暴力柯树,搜到60种颜色就停止
2026/03/20
- D - Digit Sum
考虑一个b进制中表达数n,在 \(b>\sqrt{(n)}\) 的时候,就会有一个高位带剩下0幂次的位
所以直接根号分治
对于小于 \(\sqrt{(n)}\) 的作枚举
对于大于的数有方程:
\(\lfloor \frac{n}{b} \rfloor + n\%b =s\)
\(b^{K}+ n\%b =n\)
解出来就做完了
20260327
-
wq,被阅读理解炸飞了。
我们考虑问题的实质在于变换的方式
![image]()
两边是一样的中间随便是什么。
那么维护相邻位置的异或值就可以很容易发现规律。
![image]()
对于这种相邻的两坨,我们将奇数位置保持不变,偶数位置为原数的异或值。
那么对于可以操作的位置,就一定是形如
0110这样的东西。那么对于原来的序列操作,就可以看作翻转两个数,类似于排序,所以作0位置的差值和即可。
-
考虑我们高贵
mex的本质是区间最小没有出现过的自然数。那么对于我们现在询问区间 \(A\) 。
维护一个集合 \(S\) 表示没有出现的整数集合。
对于一个区间再维护一个 \(m\) 表示不在区间内的 固定值 的最小值.
然后就可以刻画这个区间的答案贡献了
我们记
\(c\) 表示不在区间内的
-1的个数。\(d\) 表示在区间内的
-1的个数。那么考虑固定权值算次数。
\(ans_A=c!d!\sum_{v\in S}min(v,m)(\binom{i\in S|i\ge v}{c}-\binom{i\in S|i>v}{c})\)
也就是说外面里面全排列,权值是枚举集合外最小值两个取min,方案是要求刚好是 \(v\),所以取大于等于减大于,只剩下等于了。
考虑怎么维护这个式子。
我们考虑维护 \(c\) 和 \(m\) 作为关键字对答案的贡献。
如果我们已知一个区间对应的 \(c\) 和 \(m\) ,是否可以直接预处理答案?
首先枚举 \(c=[0,cnt]\) ,再作m的枚举,记得哨兵,就是对的。
做一个类似单调不减的栈,复杂度 \(n^2\)。
-
考虑只有操作
34那么这就是一个斐波拉契数列,对于操作12实际上就是对最终答案加入一个斐波拉契值,那么拆贡献出来背包就做完了。 -
考虑处理出一只
中心箭这只中心箭的两侧箭数量差不会超过1那么由于得分根据位置单调减,可以证明中心箭的位置一定在\([0,d]\) 之间,然后考虑维护唯一不同的点在于边界,乱搞一下即可。
-
先考虑移动的规律,如果在一家酒店住下,那么到下一个酒店的时间可以累加。
类似倍增,那么对于每一个点,维护走 \(2^n\) 天可以到达的最右边的酒店编号。
一天的就加上\(l\) 然后
upper_bound一下即可。 -
我们考虑从1在模k的意义下开始bfs,那么当模值为0时就可以找到答案,对于数值上乘十不会影响数位和,+1则数位和+1,那么对这个东西作01bfs,在取到第一个合法位置时就是答案了。

一点记录罢了(




浙公网安备 33010602011771号