2025.8

P5186 [COCI 2009/2010 #4] OGRADA

注意到每个位置最高能刷到的位置是能覆盖这个位置的长度为 \(X\) 的区间的最小值的最大值。

首先求每个长度为 \(X\) 的区间的最小值,用单调队列。

最大值也单调队列。

最后贪心。刚开始想的是记录每个点被刷的(作为区间最小值)的最左端的区间,然后去重的区间数量就是答案。但不会写。。

对于极大连续长度为 \(c\) 的段,需要刷 \(\lceil \frac{c}{X} \rceil\)

P4323 [JSOI2016] 独特的树叶

即是说 \(B\) 删去一个叶子节点后与 \(A\) 同构。

CF1800G Symmetree

给定一棵树,\(1\) 为根。你可以调整一个点的儿子顺序,问这棵树是否有可能对称。

镜像一定同构,在根节点处的哈希值相等。

奇数还要选一个当中间节点递归下去。

P6084 [JSOI2015] isomorphism

以某个叶子为根,度数为 \(2\) 的点就在叶子到根路径的链。

P2325 [SCOI2005] 王室联邦

用栈存储未分块的点。在 \(u\) 每处理一个子树,若栈大小大于等于 \(B\),则分块,省会为 \(u\)

最后把 \(u\) 加入栈。

发现传上去之多 \(B\) 个点,每个块大小最大为 \(2B - 1\)

最后可能还有 \(B\) 个点,分到根节点的块,大小最多为 \(3B - 1\)

时间复杂度为 \(O(nB+\frac{n^2}{B})\)

P3986 斐波那契数列

考虑到这形如解 \(fib_na + fib_{n+1}b = k\) 的解的数量。
\(n\) 是极小的,于是里面可以用 exgcd 求解。

P6105 [Ynoi2010] y-fast trie

分讨。
\(C\le i+j\lt 2C\),维护最大值和次大值就行。
\(0\le i + j\lt C\),对于每个 \(i\),有唯一的 \(j\) 满足条件且 \(i + j\) 最大。

于是维护这个的最大值没有可减性,于是可以线段树分治!

考虑强制在线怎么做?

\((a, b)\) 表示 \(a\) 的最有匹配是 \(b\)
发现,若 \((a, b), (b, c)\),且 \(a\lt c\),那么只需要保留 \((b, c)\)
于是对数就变为 \(O(n)\),每次只需要修改 \(O(1)\) 个对。

multiset.count() 复杂度是 \(O(n)\)

P5017 [NOIP 2018 普及组] 摆渡车

Sol 1
\(t\) 升序排序,定义 \(f_{i, j}\) 表示把前 \(i\) 个人送到人民大学的最小代价,\(i\) 的等待时间是 \(j\)
\(t_{i+1}\le a_{i}+j\),显然让 \(i, i+1\) 一起走优。
否则,就需要枚举 \(i+1\) 的等待时间。
考虑等待时间的最大值,当一个点等待时间大于 \(m\),显然可以先把前面的送了,在预计时间到达车站即可。
但是,需要考虑到车回来有 \(m\) 的时间,可能回来后只有 \(m-1\) 时间了,不够先送。
于是等待时间小于 \(2m\)
\(O(nm^2)\)

考虑填表法,\(f_{i,j}\gets f_{i-1, k}\),发现随 \(j\) 增大,\(k\) 的可行范围也在变大,于是用个变量存储最小值即可。
\(O(nm)\)

Sol 2
依赖值域的做法。
Link

P1450 [HAOI2008] 硬币购物

考虑先预处理出每个价值的答案。
然后询问时,容斥。
具体地说,钦定第 \(i\) 种硬币超出限制,就减去 \((d_i+1)c_i\)

P1447 [NOI2010] 能量采集

\((x, y)\) 前面的点可以表示为 \((\frac{x}{d},\frac{y}{d})\),且 \(\frac{x}{d}, \frac{y}{d}\in \mathbb{Z}\)
注意,\(d\) 可以不是整数
\(\gcd(\frac{x}{d}, \frac{y}{d}) = \frac{1}{d}\gcd(x, y)\)
那么对于可行的 \(d\),设有 \(k\) 个,\(\gcd(\frac{x}{d}, \frac{y}{d})\)\(k\) 个,且为整数。
那就有 \(k = \gcd(x, y)\)
除去自己本身,就有 \(\gcd(x, y) - 1\) 在前面。
于是只需要求

\[\begin{aligned} \sum_{x=1}^{n}\sum_{y=1}^{m} \gcd(x, y) &= \sum_{d=1}^{\min(n, m)}d \sum_{x=1}^{n}\sum_{y=1}^{m} [\gcd(x, y) = d] \\ &= \sum_{d=1}^{\min(n, m)}d \sum_{x=1}^{n/d}\sum_{y=1}^{m/d} [\gcd(x, y) = 1] \\ &= \sum_{d=1}^{\min(n, m)}d \sum_{x=1}^{n/d}\sum_{y=1}^{m/d} \sum_{z|\gcd(x, y)}\mu(z) \\ &= \sum_{d=1}^{\min(n, m)}d \sum_{z=1}^{\min(n, m)}\mu(z)\sum_{x=1}^{n/d}\sum_{y=1}^{m/d}[z\mid \gcd(x, y)] \\ &= \sum_{d=1}^{\min(n, m)}d \sum_{z=1}^{\min(n, m)}\mu(z) \lfloor\frac{n}{dz}\rfloor \lfloor\frac{m}{dz}\rfloor \\ \end{aligned} \]

于是有了 \(O(n\sqrt{n})\) 做法。

继续推

\[\begin{aligned} \sum_{d=1}^{\min(n, m)}d \sum_{z=1}^{\min(n, m)}\mu(z) \lfloor\frac{n}{dz}\rfloor \lfloor\frac{m}{dz}\rfloor &= \sum_{d=1}^{\min(n, m)}d \sum_{z=1}^{\min(n, m) / d}\mu(z) \lfloor\frac{n}{dz}\rfloor \lfloor\frac{m}{dz}\rfloor \\ &= \sum_{d=1}^{\min(n, m)}d \sum_{dz=1}^{\min(n, m)}\mu(z) \lfloor\frac{n}{dz}\rfloor \lfloor\frac{m}{dz}\rfloor \\ \end{aligned} \]

换元 \(T = dz\)

\[\begin{aligned} \sum_{d=1}^{\min(n, m)}d \sum_{dz=1}^{\min(n, m)}\mu(z) \lfloor\frac{n}{dz}\rfloor \lfloor\frac{m}{dz}\rfloor &= \sum_{d=1}^{\min(n, m)}d \sum_{T=1, d | T}^{\min(n, m)}\mu(\frac{T}{d}) \lfloor\frac{n}{T}\rfloor \lfloor\frac{m}{T}\rfloor \\ &= \sum_{T=1}^{\min(n, m)}\lfloor\frac{n}{T}\rfloor \lfloor\frac{m}{T}\rfloor \sum_{d|T}d \mu(\frac{T}{d}) \end{aligned} \]

后面是 \(id * \mu = \varphi\)

\[\begin{aligned} \sum_{T=1}^{\min(n, m)}\lfloor\frac{n}{T}\rfloor \lfloor\frac{m}{T}\rfloor \sum_{d|T}d \mu(\frac{T}{d}) &= \sum_{T=1}^{\min(n, m)}\lfloor\frac{n}{T}\rfloor \lfloor\frac{m}{T}\rfloor \varphi(T) \end{aligned} \]

\(O(\min(n, m))\)

Sol 2
\(f(z)\)\(\gcd(x, y) = z\) 的对数,\(g(z)\)\(z | \gcd(x, y)\) 的对数。
\(g(z) = \lfloor\frac{n}{z}\rfloor \lfloor\frac{m}{z}\rfloor\)

\[f(z) = \lfloor\frac{n}{z}\rfloor \lfloor\frac{m}{z}\rfloor - \sum_{2z\le iz\le \min(n, m)} f(iz) \]

\(O(n\log{n})\)

P2303 [SDOI2012] Longge 的问题

\[\begin{aligned} \sum_{x=1}^{n} \gcd(x, n) &= \sum_{d=1}^{n}d \sum_{x=1}^{n} [\gcd(x, n) = d] \\ &= \sum_{d|n}^{n}d \sum_{x=1}^{n/d} [\gcd(x, n / d) = 1] \\ &= \sum_{d|n}d \varphi(n/d) \\ \end{aligned} \]

\(O(\sqrt{n})\) 枚举每个 \(d\)\(O(\sqrt{n})\)\(\phi\)

\[\sqrt{n} + \sum_{z|n} \sqrt{z} = d(n)\sqrt{n} \]

Sol 2
【洛谷题解】P2303 [SDOi2012]Longge的问题 - 粉兔 - 博客园

P13056 [GCJ 2020 #1B] Expogo

等价于把 \(X, Y\) 二进制表示下。
指数不交,且并集是 \(\mathbb{N}\) 的前缀。
先二进制表示,如果有交,需要通过一定方式转化为无交。
\(2^{i}+2^{i+1}+2^{i+2}+2^{j} = 2^{j+1} - 2^{i}\)
这个可以设计一个 dp 来判断。
无交过后,可以通过 \(2^i = 2^{i+1}-2^{i}\) 把前缀填满。
感觉这个判断很假啊。事实上,确实过不了。

P10638 BZOJ4355 Play with sequence

吉司机线段树板题。
注意,不要特判 \(-\infty + a = -\infty\) 这样的东西。
因为取 \(\max\) 可能把原来的 \(-\infty\) 减掉。

P13100 [FJCPC 2025] 众数T

考虑答案是 \(\min + \max\)
因为覆盖了 \(\min + \max\) 的情况是最多的。

考虑答案是 \(2 \max\)
只有一个最小值时,且其他值都是最大值。

[ABC196E] Filters

考虑刚开始 \(f(x) = x\)
然后复合一些函数。
最后形如两端直线,中间 \(k=1\) 的直线的形态。

CodeChef Modulo Equality

每次操作使一个 \(A_i\) 加一。
求最小操作次数,使 \(A_i\bmod B_i\) 都相等。

先找到最小的 \(B_i\),设为 \(minB\),把其他大于等于 \(minB\) 的先加到 \(0\)

考虑一个环,当前决策点是 \(x\)
左边的贡献是 \(x - y\),右边的贡献是 \(B_{y}-y+x\)
直接做就行。

CF1269B Modulo Equality

给定序列 \(a, b\),找到一个最小的数 \(x\),序列 \((a_i+x)\bmod m\) 排序后,每个元素与对应位置的 \(b_i\) 相等。

\(a_i\) 排序。
然后相当于一段后缀 \(-m\) 变到了最前面,每次增减 \(O(1)\) 个差值。
若某次差值集合与 \(b\) 相同,则找到答案。
哈希或 KMP 匹配。

P4249 [WC2007] 剪刀石头布

考虑容斥。
变为所有三元组减去不合法三元组。
不合法三元组一定有且仅有一个点指向另外两个点。
\(c_i\)\(i\) 指出去的边的数量。
最小化

\[\sum \frac{c_i(c_i-1)}{2} = \frac{1}{2}\left(\sum c_i^2 - \sum c_i \right) \]

后面这个是定值。
前面这个直接费用流。

CF600E Lomsat gelral

CF1767F Two Subtrees

四维莫队:CF1767F Two Subtrees

CF232E Quick Tortoise

好神的题。
CF232E Quick Tortoise - 洛谷专栏

UVA12716 GCD等于XOR GCD XOR

异或是二进制不进位加法或不退位减法,所以 \(x-y\le x \ \mathrm{xor} \ y \le x + y\)
假设 \(x\ge y\),设 \(\gcd(x, y) = m\),则 \(x = x_0m, y = y_0m\)\(x - y = m(x_0 - y_0)\gt m = \gcd(x, y)\)
所以 \(\gcd(x, y) = x \ \mathrm{xor} \ y = x - y\)
先枚举 \(z\),再枚举 \(y\)

posted @ 2025-08-31 19:27  Nazq  阅读(4)  评论(0)    收藏  举报