刷题杂记 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


同学分享 Pt.4


2024.11.12

  • T1

    如果仅仅判断括号匹配是否有解,我们不需要管具体哪个左括号匹配哪个右括号。只要前缀中 ( 数量 \(\ge\) ) 数量且最终数量相等即可。

  • T2

    用到一种叫做“广义串并联图”的东西。在做图论题时,如果发现一度点、二度点的存在不影响答案,就可以将它们缩掉。最终得到的图一定满足 \(n' \le 2(n-m), m' \le 3(n-m)\)

  • T4

    \(l,r\) 分别表示 \(x\) 左、右第一个大于它的位置,则 \(x\) 在笛卡尔树上的子树为 \([l+1, r-1]\) 区间。


2024.11.13

  • T1

    简单数论(?)题

  • T2

    数据太水导致可以用滚动数组过掉

    首先,noip 的字符串匹配题,一定要考虑 KMP。

    然后本题可以认为运用了“子序列匹配 \(\rightarrow\) 子串匹配”的 Trick。

  • T4

    仅判断是否可行的题目往往都使用如下性质:

    1. 弱化需要维护的信息。

    2. 可以构造某种非常简单的有解方法。

    譬如本题中,我们可以将“统计不同颜色出现次数,统计是否和为 \(len\)”弱化为“统计出现奇数次颜色出现次数,统计和是否为 \(len\)”。


2024.11.14

  • T1

    简单双指针题。

  • T2

    二分答案 / 数据结构优化 DP。

  • T3

    精妙哈希题。

    1. 因为存在异或操作,所以联想到异或哈希。容易解决 \(k=1\)

    2. 通过二进制分组容易解决 \(k = 2\) 的匹配问题。(二进制分组解决两两匹配问题。)

    3. \(k = 3\) 可以通过两次二进制分组解决,具体讨论一下即可。


2024.11.15

  • T1

    简单二分答案。

  • T2

    DP 优化方法:观察发现 DP 为卷积形式,且卷积式子完全相同,容易使用快速幂优化卷积过程

    题解中还提供了另一种优化方法:钦定每次加入的都是份数最小的堆,则最新的堆大小一定不会超过 \(m/i\),所以可以做到调和级数的复杂度。主要思想:

    1. 通过钦定枚举顺序的方法优化 DP 复杂度。

    2. 最优性 DP 不一定需要做到完美枚举,可以有重复枚举部分。这有时可以帮助我们进行优化。

  • T3

    超级无敌巧妙的计数题。

    1. 发现题目为点积的形式。通过对称性,化点积为卷积,容易化简式子。

    2. 考虑通过将一边的值取反,将相等转化为和为 \(0\)。同时发现值域可以进行平移,于是转化为 \(2n\)\([0, m]\) 间的数和为 \(nm\) 的方案数。

    后面就容易用钦定容斥解决了。

  • T4

    这个性质就已经足够变态了。“按 \(y\) 排序然后检查……”

    这告诉我们考试毫无头绪时可以猜一猜试一下。


2024.11.16

  • T1

    “增加操作一定对一段后缀整体进行。”看,凭直觉有了结论,后面就很简单了。

  • T2

    神秘“纳什均衡”。这里的纳什均衡指的是那种同时进行决策的题目。

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