做题记录二
写在前面:
多做,少胡
以下是正文:
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,在取到第一个合法位置时就是答案了。
20260328
-
考虑容斥,用所有情况减去不合法的情况。
跑一个次数最短路,在刚好可以松弛的时候选择加入次数,在必须松弛的时候更新次数,这样就维护出了以S为起点和以T为起点的信息。
首先根据乘法原理,总方案就是 \(S\to T\) 的方案数乘上 \(T\to S\) 的方案数。
由于是双向边,所以其实这两个玩意是一样的。
然后考虑什么时候是不合法的。
设从 \(S\) 出发的最短路数组和次数数组叫做 \(disS,fS\)
从 \(T\) 出发的最短路数组和次数数组叫做 \(disT,fT\)
将不合法的分类成点相遇和边相遇。
对于点相遇情况,我们枚举每一个点 \(u\)。
首先第一个条件就是 \(disS[u]+disT[u]=disS[T]\)。
由于走的都是最短路相遇,所以只会相遇一次,那么还有一个条件在于
\(disS[u]=disT[u]=\frac{disS[T]}{2}\)
这样经过这个点的方案数就是 \(fS[u]\times fT[u]\)
那么两个人同时经过这个点的方案数就是 \((fS[u]\times fT[u])^2\)
对于边相遇情况,我们枚举每一条边,已知一条边是连接 \(u,v\) 且边权是 \(w\) 。
那么如果两个人都要经过这条边,最短路条件就是 \(disS[u]+disT[v]+w=disS[T]\)
我们不能确定 \(u,v\) 那个更靠近 \(S\) ,所以两边都要试一下
然后如果是必须经过,那么 \(disS[u]+w>disT[v],disT[v]+w>disS[u]\)
也是两边各占一半的道理。
方案数类似点相遇 \((fS{u}\times fT[v])^2\)
用总方案减去这两坨玩意就是答案了。
-
套路的,发现设 \(a=0,b=1,c=2\) 那么在变换后 模3 意义下数字和不变。
而且操作后一定会有相邻相等的数字。
发现对于 \(n>3\) 且存在相邻不同字符串 \(S\) ,所有存在相邻相同字符且数字和同余 \(S\) 的等长字符串 \(T\) 也一定可以由 \(S\) 操作得到。
考虑证明这个结论。
假设这个结论在长度为 \(k\) 的字符串中成立。
那么对于长度为 \(k+1\) 的字符串,我们由于模三意义下相同,所以一定可以通过某种方式将两个字符串的首字母变得相同。
当两个字符串首字母相同了,对于剩下长度为 \(k\) 的字符串,就成立了。
答案即为满足数位和模 3 同余初始串且含有相邻相等的数字的数字串个数
然后我们对这个东西作容斥。
将答案转化成 同余串个数 - 同余不包含相邻相同字符
对于同余串个数,明显是 \(3^{n-1}\) 也就是前面随便放,后面根据前面放的补全。
对于后面,我们定义 \(f[i][j][k]\) 表示 前 \(i\) 个字符,此时模三意义下的数位和是 \(j\), 最后一位填的数是 \(k\)的方案数。
那么dp的转移方程就是:
\(f[i][j][k]=\sum_{l=0}^2[k!=l]f[i-1][(j-k+3)\%3][l]\)
转移出来就做完了。
-
经典中位数,考虑答案具有单调性,所以我们考虑二分答案
怎么check?
把大于的数看作1,小于的数看作1
那么区间前缀和然后扫描线碾过去,统计 \(he[r]\ge he[l-1]\) 的数量
这样就可以知道这个数可以作为多少个区间的中位数
那么合法条件就是是区间数目一半以上就是合法的了
还有一个小技巧,我们考虑到中位数只会在区间元素中。
所以之间对这个序列作二分 check 就行了。
20260329
-
被观察题薄纱了\kel
首先这个如果去作数论分析是非常困难的
但是题目里面有一句话提醒了我们
- The N-th smallest good integer is at most \(10^9\)。
也就是说第 \(N\) 个好数字不会超过 \(1e9\)
观察样例可以发现:
第 \(1099898\) 也就是 第\(1e6\) 多一点的位置的好数字大小已经到了 \(819264512\)。
大胆猜测一下,我们的 \(N\) 不会太大。
暴力跑一边 \(bfs\) 拼字符串,发现小于 \(1e9\) 的好数字只有 \(1257875\) 个,直接输出第 \(n\) 个就可以了。
-
首先有结论: 一棵树上\(dis(i,k)+dis(k,j)\ge dis(i,j)\)。
现在我们要构造一棵树,且满足这个条件。
如果我们每个点只连一条边,那么肯定是与dis 最小的点连边。
那么考虑对这个东西作最小生成树,得到的一定是最优的建树方法。
建出来后对每个点跑 \(dfs\) 处理出一个点和其他点的距离,再去和原权值比较即可。
-
首先的性质在于只要一处不合法,那么之后再也不会合法了。
考虑维护带权异或并查集,
ARC217
-
题意是问你让你构造一个 \(1\to n\) 的排列 \(P\)。
最小化式子:
\(\sum_{i=1}^n ⨁_{1\le j \le i} P_j\)也就是最小化前缀异或和之和。
我们一样拆位来考虑贡献。
对于每一位 \(k\) 表示为 \(2^k\)。
那么对于位置 \(k\) 上值为 \(1\) 的数。
在 \(k\ge 2\) 时,一定是成群完整地出现。
所以我们把每四个数放在一起考虑。
这样高位的异或和肯定为 \(0\)。
考虑低位的异或和,那么参照样例,可以发现每四位的异或和也是 \(0\)(将样例看作 \(0\;1\;2\;3\)),不过要交换每四个中的 \(3,4\) 位即可。
对于没有第一第二第三位,不影响答案的构造,没有第四位就只能输出下一位。
-
题意是给你 \(n\) 个货物,然后有 \(n\) 个人来买东西,每个人的钱数随机在 \([1,c]\) 里面,随机到的钱数如果比最贵的物品贵,就买下,问恰好购买 \(k\) 个物品的概率, \(k\) 是 \([0,n]\) 。
\(dp\) !
-
题意是给你一个排列的前 \(k\) 项,问你在确定前 \(k\) 项,大小为 \(n\) 的所有 \((n-k)!\) 种可能排列 \(p\) 中。
求式子的值: \(\sum_{P}f(P)\)
\(f(P)\) 的定义为:
对于排列,每次操作可以将一个非前缀最大值的数提到排列的最前面,这种操作的最大次数就是 \(f(p)\) 的值。我们考虑对于最后的序列一定是一个从1到n的排列,所以先考虑如何快速算出一个排列的贡献。
非常容易可以发现,对于一个非前缀最大值的数 \(x\) ,将其移到前面去后,后边就会有 \(x-1\) 个比他小的数可以往前提。
那么手推一下就会有发现贡献是 \(2^{x-1}\)
对于给定的前面先手动处理前缀最大值来算贡献,然后对于已知未出现但是在后面比最大值小的数,就可以算全贡献,
对于在后面但是比前缀已知最大值的数,出现在前缀最大值的次数为 \(\frac{(n-k)!}{n-k+1}\)
对这个再算一次贡献就是了。
popsicle
我们记 \(L\) 是总周期,理论上是所有 \(l_i\) 的最小公倍数。
那么我们的答案式子可以写成:\(\frac{1}{L}\sum_{t=0}^{L-1}(1-\prod_i(1-p_{i,t\mod l_i}))\)
首先有结论:
\(gcd(l_i,l_j)=1,ans=\sum_{t=0}^{l_i-1}p_{i,t}\times\sum_{t=0}^{l_j-1}p_{j,t}\)

手推不难发现是对的。
把所有天按
$t ≡ T( \mod 2520) $
分成 2520 类。

我们设某家店的周期是 \(i\)。
那么它每次访问的位置就会变成:
\(T+k\cdot2520\)
比如 \(i=6\) ,那么从第1天开始(\(T=1\))每 \(2520\) 天中,
因为 \(2520 \mod 6=0\),所以永远是:
1,1,1,1,…1,1,1,1,…
分完后我们算出所有的类天的平均贡献,求和后乘逆元就是答案。
如果你随便选一个 K,那么固定 \(t≡T(modK)\) 后,店 i 的新周期是:
\(\frac{1}{gcd(i,K)}\)
我们要考虑所有按照这个顺序分完后,任意周期要么互质,要么一个被另一个整除,
\(2520=2^3\times3^2\times5\times7\)
假设我们有两个店周期:
- \(l_1\) = \(8\)
- \(l2\) = \(12\)
如果选 \(K=10\):
- 新周期长度:
- \(l_1/ gcd(8,10) = 8 / 2 = 4\)
- \(l2 / gcd(12,10) = 12 / 2 = 6\)
- 新周期长度分别是 \(4\) 和 \(6\)
- 这两个长度:
- 不互质
- 也不整除
这样就不可以直接乘起来求答案或者合并了

一点记录罢了(




浙公网安备 33010602011771号