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


    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
    根据榕树之心的经典结论发现只有重心是可能的, 那么暴力即可。

  • 相关阅读:
    基于Linux的v4l2视频架构驱动编写
    eclipse中的快捷键
    单例模式
    Java集合之LinkedHashMap
    Java集合之HashMap
    Java集合之LinkedList
    Java集合之ArrayList
    Java垃圾回收机制
    JVM的内存区域划分
    Java并发编程:Thread类的使用
  • 原文地址:https://www.cnblogs.com/clover4/p/15798578.html
Copyright © 2020-2023  润新知