刷题杂记 Pt.4

2024.11.5

  • T1

    • 顶括号的整除分块:有一个与底括号类似的结论,即若区间的整除值为 \(x\),则区间的左端点 \(l = \lceil n/x \rceil\)

    • 题解中给了另外一种做法,如果对每个不同的除数都只计算一次贡献,那么就可以在 \(O(V \ln V * \log_2 V)\) 的时间复杂度内解决。

    当时做这道题的时候不知道为什么大样例的行末出现了空格。。。然后有点武断了,肉眼比对过了大样例就没有管,结果其实大样例挂了。而这个问题实际可以通过写 fc /w file.out file.ans 解决。

  • T2

    • 说来离谱。我在平凡 \(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)\) 的平移方式。

  • T3

    如果会李超线段树的话就是个板子。

    这道题告诉我们:李超线段树的应用条件就是看能不能做 Update 的那个贪心,我估计本质是导数得恒为正数或恒为负数?

    relevant:P4097 【模板】李超线段树 / [HEOI2013] SegmentP4655 [CEOI2017] Building Bridges(李超树维护斜率优化)


2024.11.6

这场属于是考炸了(

总分 80pts,只写了 T3 qwq

  • T1

    其实这道题感觉是在我能力范围内的,为什么没有场切呢?

    两个关键点我都想到了:

    1. 按照数码从大到小贪心,尽量往前挪。

    2. 对于最后的 \(w \approx 18\) 个数,做 \(2^w\) 的枚举算法。

    但是我并没有将它们有机地结合在一起。我觉得有我没有预先实现部分分的原因。

  • T2

    考场上完全没看

  • T3

    如果直接做的话会讨论很多情况,或许图论建模会好一点?


2024.11.7

  • T1

    简单题我不想多说什么。

  • T2

    这道题真的是太巧妙了。思路很多种,但如果选的方法不优写起来就很麻烦。有两种较优的实现方案:

    1. 判定法。枚举选的另两个砝码 \(c, d\),然后枚举 \(a, b, c, d\) 的重量分配、再跑一遍判定是否可能合法(看了这种做法后感觉自己太唐了。。。)。这种做法告诉我们如果值域很小可以考虑在值域上做枚举

    2. DP 法。这个方法最具有普适性。出发点是这样的:这个题不好做的问题在于 \(a, b\)\(c, d\) 之间不独立,那么我们就试着去像最短路那样处理它们之间的关系。这个方法告诉我们不要光想着去 ad-hoc,要注意结合我们所会的算法比如最短路 / DP 来解决问题。

  • T3

    考场上写了个错误的对拍器致场上场下共调试 2h 这里有一个调试 DP 的技巧:记录方案。

    这道题还值得记录的一点就是它所使用的性质:看不到广告的节点,钦定它放广告一定更优。这样我们就将三类节点化为了两类节点,简化了条件。其它就是一些 DP 的 dirty work 了。


2024.11.9

  • T1

    简单题。

  • T2

    分析性质然后转数据结构维护题。

    实现上注意去重函数会将多余的数放到末尾,这意味着我们可能需要严格的越界判断。

    来自 way 的数据结构节省空间方法:

    • 离散化。

    • 不写结构体,写多个数组。(因为有对齐规则。)


同学分享 Pt.1

  • P9527 [JOISC2022] 洒水器

    1. “将相邻节点划分为子树内节点以及祖先节点”的意识。

    2. 恶心的地方在于模数不为质数不一定存在逆元,无法除法去重,我们只有利用某种性质去重。观察发现,如果对于当前节点,依旧 \(< 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:神秘构造题。。。。“暂时忽略”。。。?

  • P9220 「TAOI-1」椎名真昼:?

  • Strictly Positive Matrix:好像是可以的图论建模。

  • Count Paths:提供了可能的处理树上路径问题的思路——按照 DFS 序做树上 DP(区别于按照子树的树上 DP)。

  • Minimax Problem:见到 min/max,做二分答案,于是问题能够转化为 0/1 问题,在本题就可以接着做二进制数问题了。


同学分享 Pt.2


同学分享 Pt.3

posted @ 2024-11-06 15:04  David_Mercury  阅读(9)  评论(0编辑  收藏  举报