刷题杂记 Pt.4
2024.11.5
-
-
顶括号的整除分块:有一个与底括号类似的结论,即若区间的整除值为 \(x\),则区间的左端点 \(l = \lceil n/x \rceil\)。
-
题解中给了另外一种做法,如果对每个不同的除数都只计算一次贡献,那么就可以在 \(O(V \ln V * \log_2 V)\) 的时间复杂度内解决。
当时做这道题的时候不知道为什么大样例的行末出现了空格。。。然后有点武断了,肉眼比对过了大样例就没有管,结果其实大样例挂了。而这个问题实际可以通过写
fc /w file.out file.ans
解决。 -
-
-
说来离谱。我在平凡 \(O(nm^2)\) DP 的基础上加了一个卡常优化就过了。具体的复杂度分析如下:
\[T = \sum_{i=1}^n \sum_{j=i}^{m-n+i} \sum_{k=i}^j 1 = \sum_{i=1}^n \sum_{j=1}^{m-n+1} j = \dfrac{1}{2}n(m-n+2)(m-n+1) \]我们只用算一个近似值:
\[2T \approx S = n^3 - 2mn^2 + m^2n \]为了计算上式的最值,我们将其求导:
\[S' = 3n^2 - 4mn + m^2 \]解 \(S' = 0\) 有 \(n = m, \dfrac{1}{3}m\)。故当 \(n = \dfrac{1}{3}m\) 时 \(T\) 有近似最大值 \(\dfrac{2}{27}m^3\),取 \(m = 2000\) 大概为 \(592592592\),可以卡过。
所以说为什么把时限开那么大???正解的时限远远达不到该上界啊???
-
关于正解:其实这应该通过 EGF 来理解吧?可以发现我们的朴素 DP 能够等价于如下 EGF 相乘的结果:
\[m! * [x^m] \prod_{i=0}^{n-1} \sum_{k=0}^m \dfrac{2^{ik}}{k!} x^k \]然后容易发现,卷积顺序可以任意改变;并且对于每一个 \(i\),我们都可以通过乘上 \(2^{wk}\) 平移得到 \(i+w\) 的值,而这个平移的性质对于若干 \(i\) 卷积后的结果依然是成立的。于是想到做倍增,这样就只用计算 \(\log n\) 次卷积即可得到答案。
这是一种特殊的倍增优化 DP。感觉应用范围非常窄,首先 DP 基本就只能是卷积型的,然后你必须满足做卷积的多项式之间能够存在 \(O(len)\) 的平移方式。
-
-
如果会李超线段树的话就是个板子。
这道题告诉我们:李超线段树的应用条件就是看能不能做
Update
的那个贪心,我估计本质是导数得恒为正数或恒为负数?relevant:P4097 【模板】李超线段树 / [HEOI2013] Segment、P4655 [CEOI2017] Building Bridges(李超树维护斜率优化)
2024.11.6
这场属于是考炸了(
总分 80pts,只写了 T3 qwq
-
其实这道题感觉是在我能力范围内的,为什么没有场切呢?
两个关键点我都想到了:
-
按照数码从大到小贪心,尽量往前挪。
-
对于最后的 \(w \approx 18\) 个数,做 \(2^w\) 的枚举算法。
但是我并没有将它们有机地结合在一起。我觉得有我没有预先实现部分分的原因。
-
-
考场上完全没看 -
如果直接做的话会讨论很多情况,或许图论建模会好一点?
2024.11.7
-
简单题我不想多说什么。
-
这道题真的是太巧妙了。思路很多种,但如果选的方法不优写起来就很麻烦。有两种较优的实现方案:
-
判定法。枚举选的另两个砝码 \(c, d\),然后枚举 \(a, b, c, d\) 的重量分配、再跑一遍判定是否可能合法(看了这种做法后感觉自己太唐了。。。)。这种做法告诉我们如果值域很小可以考虑在值域上做枚举。
-
DP 法。这个方法最具有普适性。出发点是这样的:这个题不好做的问题在于 \(a, b\) 和 \(c, d\) 之间不独立,那么我们就试着去像最短路那样处理它们之间的关系。这个方法告诉我们不要光想着去 ad-hoc,要注意结合我们所会的算法比如最短路 / DP 来解决问题。
-
-
考场上写了个错误的对拍器致场上场下共调试 2h这里有一个调试 DP 的技巧:记录方案。这道题还值得记录的一点就是它所使用的性质:看不到广告的节点,钦定它放广告一定更优。这样我们就将三类节点化为了两类节点,简化了条件。其它就是一些 DP 的 dirty work 了。
2024.11.9
-
简单题。
-
分析性质然后转数据结构维护题。
实现上注意去重函数会将多余的数放到末尾,这意味着我们可能需要严格的越界判断。
来自 way 的数据结构节省空间方法:
-
离散化。
-
不写结构体,写多个数组。(因为有对齐规则。)
-
同学分享 Pt.1
-
-
“将相邻节点划分为子树内节点以及祖先节点”的意识。
-
恶心的地方在于模数不为质数不一定存在逆元,无法除法去重,我们只有利用某种性质去重。观察发现,如果对于当前节点,依旧 \(< d\),则该节点也一定还存在 \(\le d\) 的祖先,故可以每次就在相距恰好 \(d\) 距离的节点更新。(写得有点乱。。。意会即可。。。)
-
-
P11202 [JOIG 2024] 名前 / Name:DP 优化,用表示从哪里来的二进制数替换字符集。
-
[ARC183C] Not Argmax:排列数计数可以等价为笛卡尔树计数,笛卡尔树有性质“根节点为子树所代表区间中最值”,于是可以做区间 DP。类似思想题目:CF1748E
-
[ARC175C] Jumping Through Intervals:感觉这个题和 ARC001D 好像:多个区间之间走曼哈顿路径,求最短路,尽量取区间相交的部分。
-
P9977 [USACO23DEC] Bovine Acrobatics S:考虑物品往哪些序列里放,而非维护当前的序列。。。
-
P8093 [USACO22JAN] Searching for Soulmates S:感觉是不错的贪心综合题,问题在分析每种操作的顺序,以及每种操作内部怎么操作。
-
P8095 [USACO22JAN] Cereal 2 S:神秘构造题。。。。“暂时忽略”。。。?
-
Strictly Positive Matrix:好像是可以的图论建模。
-
Count Paths:提供了可能的处理树上路径问题的思路——按照 DFS 序做树上 DP(区别于按照子树的树上 DP)。
-
Minimax Problem:见到 min/max,做二分答案,于是问题能够转化为 0/1 问题,在本题就可以接着做二进制数问题了。
同学分享 Pt.2
-
P9981 [USACO23DEC] Minimum Longest Trip G:DAG 逐层处理 / “哈希+倍增”求字符串大小关系
-
P9017 [USACO23JAN] Lights Off G:最关键的是利用异或的消去律,将贡献变为独立的。还有代表元素节省状态数量。
-
[ARC175D] LIS on Tree 2:还是过会儿自己研究一下吧。。。
-
Fib-tree:清新结论题。
-
The Omnipotent Monster Killer:不太能理解……
同学分享 Pt.3
-
[ARC173C] Not Median:分析以简化枚举范围;类似 manacher 的均摊复杂度算法。
-
[ARC170C] Prefix Mex Sequence:大概思想是设计一种能够“动态调整”的 DP 方程。(复习:连续段 DP)
-
[ARC170D] Triangle Card Game:应该就是分类讨论题。
-
hdu7464 比特跳跃:利用或的“不减”性质,比特跳跃最多使用一次。且可以发现从 1 开始跳跃在大部分情况下都是很优的,除非存在 \(w(1, 2^i) = 0\),于是对于所有 \(x \bmod 2^{i+1} = 2^i\) 连接 \((x, 2^i)\) 即可。
-
[ARC140D] One to One:提前钦定某部分贡献。。。