[做题记录] 2022年1月开始的刷题记录 (一)

Fail 说明不独立做出
Accept 说明独立做出

【Shoi2015】超能粒子炮·改

Accept
拿Lucas推推式子就好。

【BZOJ】神犇和蒟蒻

Accept
\(\mu\) 的情况显然是 \(1\)
根据恒等式 \(\varphi(ij) = \varphi(i)\varphi(j)gcd(i, j)\frac{1}{\varphi(gcd(i, j))}\)
可以得到 \(\varphi(i^2) = i\varphi(i)\) 。杜教筛即可。

【BZOJ】 上学路线

Accept
经典容斥。

\(f_i\) 表示到 \(i\) 点的路径条数, 枚举路径经过的第一个点, 那么就是 \(f_j\) 乘一个组合数。

【BZOJ】 DZY Loves Math IV

Accept
求:

\[\sum_{i = 1}^n\sum_{j = 1}^m\varphi(ij) \]

其中 \(n \leq 10^5, m \leq 10^9\)

考虑暴力枚举 \(n\)
设一个 \(f(n, m) = \sum_{i = 1}^m\varphi(in)\)
考虑套路地处理 \(n\)
\(n = \prod o_i^{a_i}, q = \prod o_i, p = \frac{n}{q}\)
那么有:

\[f(n, m) = p\sum_{i = 1}^m\varphi(iq) \\ = p\sum_{i = 1}^m\varphi(i)\varphi(q) gcd(i, q) \frac{1}{\varphi(gcd(i, q))} \\ = p\sum_{i = 1}^m\varphi(i)\sum_{d | gcd(i, q)}\varphi(\frac{q}{d})\\=p\sum_{d|q}\varphi(\frac{q}{d})f(d, \lfloor\frac{m}{d}\rfloor) \]

注意 \(n = 1\) 的时候可以直接杜教筛带走, 暴力递归即可。

中间那个变化就是对 \(gcd(i, q)\)\(\varphi(d)\) 之类的代替, 然后观察到互质直接乘就好。

【JLOI2015】 有意义的字符串

Accept

观察到这个形式很像递推, 直接补项然后递推, 去掉最后一项就好。

【UR #4】 追击圣诞老人

Fail

看起来就像 \(k\) 短路。
那么考虑每次找到最小的序列然后扩展, 可以对每个点可以访问到的边开堆, 然后树上倍增和可持久化左偏树优化一下求堆可以做到时空两 \(\log\)
考虑用树剖优化这个过程, 那么用一个数对 \((x, y)\) 表示一条链上的堆, 每次只要支持链上求最小值就好, 可以用树剖实现。
预处理一下链上前缀 \(\min\) 可以做到 \(n \log_2 n\)
由于卡空间, 用 \(set\) 维护答案集合, 多于 \(k\) 就干掉。

【UR #5】 怎样更有力气

Fail
一看就是按照 \(w\) 排序。
不知道怎么处理连通块的问题, 记住拿度数最小点去讨论所有点的套路就好了。

【UR #5】 怎样跑的更快

Accept
考虑把 \(gcd\) 代表的函数用别的函数反演掉, 几次之后可以得解。

【UR #6】 智商锁

Fail
不太像人做的。。。
分四个组, 取小点跑生成树然后 \(\textit{meet on middle}\)

【UR #6】 懒癌

Fail
可以在出阴间模拟赛的时候搬。
可以根据决策办法得到一个状压dp, 然后分析性质到图上以后转化为图论解决, 不太会。

【清华集训2014】玛里苟斯

Fail
发现 \(k \geq 3\) 可以暴力。
\(k \leq 2\) 可以直接讨论。

【UR #2】猪猪侠再战括号序列

Accept
被惯性思维误导了。
看到括号序列自然对应到折线上去反而有点迷茫。
考虑直接从左往右扫, 考虑把所有右括号变成左括号, 直接每次看到右括号就去找个左括号翻过来就好。

【UR #2】树上GCD

Fail
没有想到可以对长度根号分治这个事情。
直接祖先关系的直接处理, \(d \leq \sqrt{n}\) 的做树形 \(dp\)\(d\ge\sqrt{n}\) 的情况启发式合并, 最多只会合并 \(\sqrt{n}\) 次。每种处理方式都是维护一个桶存距离是 \(d\) 的倍数的点有多少个。
话说这个dp的转移方式好神秘哦(。

[POI2010]MOS-Bridges

Accept
混合图欧拉回路的板板。

【UR #4】元旦激光炮

Accept
对每个数组取 \(k / 3\) 讨论就可以得到一个 \(100\) 次的做法。
同时对三个数组下标二分可以做到 \(3 \log_2n\)
大概就是每次取所有的 \(mid\) 然后决策一下其中一个的最小值就好了。

【BZOJ 4403】序列统计

Accept
憨憨题。
显然是一个隔板法可以解决的问题, 一个上指标求和就好了。

【BZOJ 3394】Sum

Accept
杜教筛模板。
记得 \(\phi \ * \ I = Id\)
函数 \(f\) 里面带 \(i\) 的, 在函数 \(g\) 里面配一个 \(i\) 就好。

「JOISC 2018 Day 1」道路建设

Accept
看起来是个LCT写一发WA了。
发现离散化挂了, 伞兵。

[POI2010]TEL-Teleportation

Accept
有意思的题。
考虑把图分为六个部分 \(A, B, C, D, E, F\)
A, F 就是起点终点, B, E 可以确定, 然后 C, D, 看连边, 自由点随便找一个丢就好。

[POI2010]KOL-Railway

Accept
有一个经典的结论是 \(i < j < k\) 且 $a_k < a_i < a_j $ 等价于 \(i, j\) 不能进入同一个栈。
那么有一个暴力就是根据这个直接连边, 然后每次贪心染色就好。
但是这样建图的复杂度是 \(n^ 2\) 的, 考虑优化。
由于我们只需要知道每个点染色情况, 其实可以对每个连通块保留一棵生成树。
考虑进行这样一个操作, 将 \(i\) 从小到大加入, 然后每次找一条边连上(可能找不到)。
即手上有一个 \(j\), 在前面找一个 \(i\), 使得 后面存在点 \(k\), 满足要连边的这个条件就可以找到一条边。
考虑用可并堆维护所有联通块里面的 \(a_i\) 最小点, 然后处理一个后缀最小值, 每次取出 \(a_i\) 最小的合并就行。

[POI2010]ANT-Antisymmetry

Accept
直接manacher就行。

[POI2010]CHO-Hamsters

Accept
憨题。
每次枚举一个字符串转移, 矩阵优化就好。

[POI2010]KOR-Beads

Accept
调和级数枚举一下哈希一下完事了。

[POI2010]MOT-Monotonicity 2

Accept
随便树状数组维护一下转移就行。

[POI2010]GRA-The Minima Game

Accept
虽然不知道怎么做, 但是可以发现就直接选一段最大的部分, 那就可以有简单的 \(n^2\) dp, 可以简单做一个前缀优化。

[POI2011]KON-Conspiracy

Fail
很好, 有被教育到。
首先判方案有个 \(2-SAT\) 的 sb 做法相信是个人就会。
但是有个很简单的做法。
发现在团里面点度数大于独立集, 那么就可以直接从度数大往小了加, 每次能加就加。
然后最后发现拿出去不超过两个点, 暴力枚举 \(n\) 种答案是否合法就行。

[POI2011]SEJ-Strongbox

Fail
观察到如果 \(x\) 是密码那么 \(2x\) 也是。
可以观察到一定有最小 \(x | n\) 的性质。
那么可以大力枚举然后剪枝啥的搞搞就好。

[POI2011]ROZ-Difference

Accept
枚举最大的字符最小的字符,做归并即可。

[POI2011]SMI-Garbage

Fail
降智了。
保留要跑的边搞欧拉回路就好了。

[POI2011]TEM-Temperature

Accept
双指针扫就完了。

[POI2011] DYN-Dynamite

Accept
难得一次写对这种贪心。
记录子树里面里 \(x\) 最远的未选择点和最近的选择点就可以考虑子树内外的覆盖情况了。
那么二分答案以后贪心判断即可。

[POI2011]PRO-Programming Contest

Accept
简单的费用流模型, 但是会TLE。
不难发现可以动态增边, 这样就可以了。

[POI2011]PAT-Sticks

Accept
小木棍排序以后选三条最大的边存下就好。

[POI2011]INS-Inspection

Accept
根据榕树之心的经典结论发现只有重心是可能的, 那么暴力即可。

posted @ 2022-01-20 16:46  HN-wrp  阅读(68)  评论(7编辑  收藏  举报