Recent 做题记录

奇异搞笑的写 INF 篇题解计划。

2023.9

LCT 相关和水题被移除了。

CF922D 考虑交换法即可。Livshits-Kladov 定理。

CF1528C 第一棵树上是一条链;第二棵树上使用数据结构维护贪心(小的区间比大的更优;树上具有包含/无交性质)。

ARC100E/CF1208F SOS dp 模板。

P1081 开车过程可以倍增优化。于是直接 dp 即可。

P5633 wqs 二分模板。

P4948

首先注意到的是本题不弱于 \(\sum_n n^k\),所以插值大概率是逃不掉的。

然后一个神秘的结论是:

\[\sum_{i=0}^n i^ka^i=a^ng(n)-g(0) \]

其中 \(g\) 为一 \(k\) 次多项式。这个结论是容易使用数学归纳法证明的(由于 \(k\) 次多项式在加减、移位下封闭),但是实在不清楚是怎么发现的。

\(g(i)\) 就是可以递推的,然后插值就可以了。关于 \(g(0)\),使用高阶差分就可以得出一个方程。

P5068

按照伤害值分成 \(O(n\log n)\) 段,这也是所有伤害值答案的总修改次数上限,因此是可能暴力移动答案的。快速找到需要移动的区间是容易的:挂到线段树上就可以了。

(闲话:离线的做 \(O(1)\) 询问哪些被修改是可以的(当 \(q>O(n)\)):挂到 ST 表上)

P1248

比较不知所云的 Johnson 算法。先按 \(sgn(a_i-b_i)\) 排序,然后再按 \(\min(a_i,b_j)<\min(a_j,b_i)\) 排序。

关键是据说有邻项交换需要满足“严格弱序”的说法,但是到现在我也不是很清楚,,,

P5488 生成函数的一个小应用。还没有知道更好的理解方式。

P7962

主要的关键性质是交换后的差分数组成单谷.

当时觉得这个结论十分奇异,但现在看来完全是能推的。dp 就是容易的了。

P1251(非网络流)

又是一个单谷题,只是使用的是贪心。

我需要确定买餐巾的个数。(甚至是凸的,根据费用流模型?)单谷性是容易理解的。

贪心的过程大概是认为餐巾都是预先买好的(感觉和最近连考题的 cf1949h 的有点像???),然后优先用新的,否则先尽量从前面透支慢洗再用快洗。

P8162 肯定需要所有人在一起办事,然后枚举一下协作者个数之后随便做就可以了。

P5907 换成线性插值就可以了。。。

P2901 可以使用 A* 通过的 k 短路。

A* 的大概思路是按照当前点代价加上到终点的估价,其中估价小于实际代价。

这里我估价为到终点最短路就可以了。感觉可持久化可并堆那玩意太复杂并且本来 k 短路就没见过。。

P4451 分式转(二阶)递推式的小练习。

P2534 IDA*。

P2519 经典读题错误。这个每个人实际上说的就是哪一段区间(极长)是得分相同的。选尽量多的区间使得相互不矛盾是 BIT 优化 dp。

P3147 直接倍增 dp 即可。但是另一种很蠢的想法是考虑权值和为 \(2^k\) 的区间然后分半。

P3287

一个显然的观察是一定是后缀加一。然后直接 BIT 优化 dp 即可。

P4381 奇史无比的季桓叔题目。这个题只需要求直径。要么跨越一段环,要么就是环的子树的直径。这些都是好做的。

P3647 直接考虑一个点是有没有上传蓝线的。比较麻烦的一点是我需要换根。但是换根也不是不能做。

ABC252H 因为 \(n,c\le 70\),所以实际上状态不会特别多。我虽然不会处理多 trie 问题,但是两个合并还是会的。所以直接 meet in middle 即可。

P4767 及其加强版

非常经典的 \(O(n\log^2 n)\) 做序列划分问题。证明一下四边形不等式然后 wqs 二分就可以了。这道题四边形不等式证明是容易的。

CF1423L 一眼看上去是异或高斯消元什么的,但是我要最大解。第二眼 meet in middle。

P4516 没什么意思而且很麻烦的树形 dp。

P2767 广义二项级数的组合意义(之一)。

P5395 经典的式子。一个导出方法是把下降幂式子

\[x^n=\sum_{i=0}^n {n\brace i}\binom xi i! \]

二项式反演掉。

P5824

比较有意思的是计算拆分数(给定部分),别的就是小学数学。这是付公主的背包 trick 的第一次看见(\(\ln\) 之后展开为 \(O(n\log n)\) 项相加再 \(\exp\) 回去)。

P5408

倍增 NTT。我需要从 \(f(x)\) 的系数求 \(f(x+n)\) 的系数,这个做一次乘法即可。

P6620

在当年省选定位不明的题目(D1T2)。

一个想法是把 \(x^k\binom nk\) 凑起来,有一个想法是 \(n\) 太大了用斯特林数搞一下,就结束了。

P5409 EGF 即可。

P5396:和 P5408 像啊,很像啊(?)

P2791

和 P6620 差不多的暴力推狮子题目。一个感觉是这类题目就和当时初二疯狂练的建系暴力差不多……现在觉得没什么意思。

P5590 那么到任意路径每个点也是等长的。差分约束结束。

P4630 圆方树一下,然后 \(c\) 必须在 \(s-f\) 路径上。

CF487E 这一类考虑全部路径的题目都可以想想圆方树。这差不多就是圆方树上两方的最短距离,,,

CF1361E

NOI 树形图!首先一个点是好点的充要条件是 dfs 树只有横叉边和返祖边。这道题我可以随机到一个好点。(判断好点并不是很容易。。)然后一个点只需要看子树内(不唯一就寄)连向的点的好坏就可以了。

P5900 MSET 的最初应用。这里的方程就是 \(F=MSET(F)\)(如果有根)。这里在 \(\bmod x^n\) 意义下作的牛迭时候和付公主的背包差不多了。

P6667 做法比较多,比较通行的方法是下降幂和斯特林数那一坨。

但是这个学的时候的是 Binomial Sum。这里可以参见我的 Poly 课件了,虽然我有点小忘记了(还是理解不深刻)

P6597 无标号无根树计数带上儿子个数限制 \(k\) 的做法。

终于不需要 MSET 这个麻烦玩意了。这里的想法是使用 Burnside 引理计数:枚举所有 \(x\in S_k\),求出在 \(x\) 作用下不变的子树构造。比方说我要求全部相同就是 \(F(x^3)\)

P2801 一个常见的复杂度 \(O(q\sqrt{n\log n})\) 不要变成 \(O(q\sqrt n\log n)\) 的关键是散块修改使用归并。

P4500 异常困难且复杂,并且目前我还对这道题没有什么非常优秀的想法或者理解,所以暂且搁置。

P8879

现在想了 INF 年才会,,,

我最好的肯定是 \(b_i=a_i/2\),但是不能完成。

转而考虑最优 \(b\) 序列的性质,必要条件是

\[\sum_{i=L}^n b_i-\frac {a_i}2\ge 0\ \]

现在我考虑调优。如果全部递增,直接做;否则遇到一个小的,一个想法是向前取平均值直到合法。

我们必须说明这是最优的。只需注意到平均值甚至小于第一个数就可以了,从而怎么动甚至在每个位置都是劣的。

2023.10

类欧题被去掉了。

CF582D 整个数位地皮就是一坨史,这个题就是史中的袅。

CF961G 略显繁琐的推狮子题。

CF765F

经典老提。

支配对做法:现需要拆为 \(a_i>a_j,a_i-a_j,i>j\) 部分和对称的。这一部分找点是容易的,而若已找到 \(a_i-a_j\),则需要找 \(a_i-a_k\)\(a_k<\frac{a_i+a_j}{2}\),否则 \(k\) 将在 \(j\) 处贡献。因此差每次至少减半,需要找的只有 \(\log\) 段。

分块做法:

好处是可以在线,并且只需要依赖排序后相邻的才有贡献。

分块,块内暴力处理,块间双指针然后前缀一下。散块到整块双指针处理一下每个点到每个块的答案,然后前缀一下,就可以处理散块贡献,

P4548 有一个停时定理的解释,但是一般的做法是 PGF。

\(f_i\) 为正好在 \(i\) 时刻停止的概率,\(g_i\)\(i\) 时刻尚未停止的概率。

需要得到两个式子:首先显然 \(f_i=g_{i-1}-g_{i}\)

一个想法是在后面加一个 \(S\) 串(这里设 \(n\) 为字符串长度,\(m=|\Sigma|\)),这样的概率是 \(m^{-n}\)。现在我枚举已有的 border 长度,就有:

\[g_im^{-n}=\sum_{k\text{ is a border}}f_{i+n-k}m^{-(n-k)} \]

转写为生成函数即可。

P2491

首先考虑 \(s=+\infty\);这个时候容易证明,答案是直径。

否则类似地,答案是直径上的一段。双指针什么的一下就可以了。

CF1867F

观察:如果一个子树不和 \(G\) 任意子树同构,其祖先均不和任意 \(G\) 子树同构,子孙均和某 \(G\) 子树同构。

因此,只需找到最小的这样子树就可以了(然后向上延申)。这是容易的。

P4345

比较少见的 Lucas 辅助推狮子。考虑到 mod 很小,使用 Lucas 定理把指标降下去。

P4707 经典(?)的 min-max 容斥,然后用 dp 计算答案的题目。最后一次/多次出现的题目都可以考虑 min-max 容斥。

CF960G 比较香的一点是我从大到小插入不会改变之前的值的性质,放首/尾各为前/后缀最大值。因此写出生成函数式子 \(xy(x+y)(x+y+1)\dots (x+y+n-1)\),用斯特林数展开上升幂。

P3214 构式题面,但是一个观察是第三个条件实际上是消去一个集合;第二个条件去重容斥掉即可。

SP22343 和 min-max 有关的计算可以考虑最值分治。但是好像不行。我还是直接分治。枚举一下 min/max 在哪边,搞搞单调栈,,看上去是十分可做的(只是很麻烦)

P3343

考虑积分求概率密度什么的可以搞出一个有点奇怪的做法(?)

斯特林反演可以处理连通块的容斥问题:钦定有 \(k\) 个连通块和恰好有 \(k\) 个连通块之间是斯特林繁衍的关系。这样,我只需考虑钦定有 \(k\) 个连通块了。(虽然这个 dp 并不是很容易,。,)

P4211 先差分。扫描 \(r\),需要对所有 \(z\) 累加贡献。这就相当于对 \(1\to z\) 的链每个点子树 \(+1\)。搞成链加一查询到根路径和即可。

P3176 由于矩阵乘法有分配律,直接把矩阵作为 dp 值。

ABC246H 认为一个子序列生成方式为从后往前做尽量取后面的值,这样我就可以 dp 了。修改 DDP 即可。

P3571 神秘!!结论。为策略为在前 dep 层花 dep 次覆盖(dep 为某深度),下面的每次都能顶满 \(k\)。然后斜率优化。

P4091 有限微积分的小应用。需要先把斯特林数拆开。

P3349 利用子集反演去掉 dp 的排列限制。

P5591 \(i\bmod k\)\(\lfloor \frac ik\rfloor\) 都可以使用单位根反演化简。

P3188 现在看上去没什么神秘的。按照 \(a\times 2^b\)\(b\) 从大往小扫描,并枚举一下体积。如果 \(V\ge 1000\) 就直接视为 INF。还需枚举下传多少个到 \(b-1\)

2023.11

去掉了 string 题。为什么?(note:震撼世界的十天)

CF1806F2

考虑 \(k=1\)。假设序列不重:不难证明总是选择最小数和某数合并。因此,最终答案缩出来的是一个包含 \(a_1\)\(k+1\) 元集合和别的散的。求答案枚举去掉的重数个数即可。假设现在需要 \(t\) 元集合(去掉删重数)。

一个神秘的想法是:把方案调整:选取最小未选取的,删去最大选取的。计算得到:这样变得更优,当前 \(t-1\) 小全选取。

gcd 拥有的性质:只有 \(\log\) 次变化。这样就可以在 \(O(n\log^2 V)\) 解决问题。

P4151 dfs 树跑出一条路径之后,新路径的权值相当于异或上若干个环:而这些环构成的线性基相当于返祖边和树链构成的,由于异或。这个结论在其他题目也有一些应用。

P8867 缩边双,边双内部的边没有任何影响。之后限制就是每两个选了点的边双之间的桥必须全选,这个直接树形 dp 即可。

P5320 高级做法不会,一般做法是推狮子然后在模意义二次域下做运算。

CF1559E 首先对 gcd 容斥算下系数,这不是我们莫反吗。然后 \(n\) 非常小直接做就可以了。

P6864 括号串相关神秘。操作一会增加一个后缀匹配串并且答案会增加后缀匹配串个数。操作二使答案 \(+1\),后缀匹配串变为 \(1\)。矩阵维护,结束!

P7706 闹钟题。注意到 \(\min\) 是假的,合并的时候枚举一下 \(j\) 取哪边即可。

P6617 利用一个偏序性质,如果 \(a_i=a_j\),且 \(i,j\) 的前驱一样,\(j\) 就废了。这样,一次修改只需要修改 \(O(1)\) 个值。

P9061 去维护那个阶梯状物上的点。阶梯有个好处:关于 \(x,y\) 均单调且相对顺序一致,这告诉我们可以使用平衡树维护阶梯上的点。每个点进入阶梯是二维数点。每次询问操作熔池得到需要计算 \(x\le X,y\le Y\) 的已覆盖点和若干次二维数点;修改需要拿一段数来打覆盖 tag,这是平衡树可以做到的。

P7739 看上去就只是直接使用矩阵维护

ARC110F 神秘连考题。观察到(怎么观察到??)一次性给一个位置操作 \(n\) 次会让他变 \(0\)。于是从后往前操作每个 \(n\) 次就结束了。

CF1746F 经典的哈希。哈希之后求个和,看看是不是 \(k\) 的倍数即可。

P7111 根号分治相关的多项式。

P5828 两个做法。

考虑容斥割边数量。设熔池出来被钦定的边双连通块大小为 \(a_i\),根据某 Clue 结论,方案书为 \(n^{m-2}\prod a_i\),加上熔池系数变形为 \(-\frac 1{n^2}\prod (-na_i)\)。直接做。

第二个想法考虑有根。设无向连通图为 \(D\),边双是 \(B\),枚举根的边双连通块大小,得到:

\[D=\sum_i\frac{b_ix^i\exp(iD(x))}{i!}=B(x\exp(D)) \]

需要拉饭!还只能求一项。

P4755 最值分治。

2023.12

posted @ 2024-09-09 21:37  British_Union  阅读(14)  评论(2编辑  收藏  举报