![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
题解
文章平均质量分 85
Recalling_Clouds
千般荒凉,以此为梦;万里蹀躞,以此为归。
展开
-
P4224 [清华集训2017]简单数据结构 题解
(本文是基于队爷 @s_r_f 所写题解的完善和补充) 可以发现,如果我们暴力地枚举一个数的因数或倍数,时间复杂度是可接受的。 对于前者,单次复杂度为 O(n)O(\sqrt n)O(n);对于后者,由于题目保证了 C≤10C \leq 10C≤10,所以单次的均摊复杂度应为调和级数 O(lnn)O(\ln n)O(lnn)。 所以,我们可以考虑直接模拟题意中的操作。 首先,我们设 fif_ifi 为以 iii 开头的最长上升倍数子序列的长度。同时,为了方便统计答案的第二项,我们再设一个 fcnti原创 2022-01-13 21:01:01 · 160 阅读 · 0 评论 -
P3736 [HAOI2016]字符合并 题解
发现 2≤k≤82 \leq k \leq 82≤k≤8,于是可以考虑状压 DP。 我们可以设 f[l][r][S]f[l][r][S]f[l][r][S] 表示区间 [l,r][l, r][l,r] 经过若干次操作变成 01 串 SSS 的最大分数。 基于贪心的思想,我们一定要使得整个 01 串最终不可操作,所以 01 串 SSS 的长度不超过 k−1k - 1k−1,否则 SSS 可以继续进行合并,直到其长度小于等于 k−1k - 1k−1。 那么我们有一个很暴力的做法: 对于 l,rl, rl,r,枚原创 2022-01-12 10:42:43 · 187 阅读 · 0 评论 -
CF721C Journey 题解
首先可以发现,本题实际上类似一个 DAG 上的背包问题。 那么我们有一个很显然的做法: 设 f[v][t]f[v][t]f[v][t] 表示从点 111 到达点 vvv,路径长度为 ttt 的所有方案中的最大点数,转移方程平凡,这里略去。 但是 T≤109T \leq 10^9T≤109 ,这样做空间会炸飞。 可喜的是,答案一定是小于等于 nnn 的,同时 n≤5000n \leq 5000n≤5000,这启发我们可以考虑 O(n2)O(n^2)O(n2) 空间的算法。 我们换个角度思考:既然枚举距离求点的原创 2022-01-12 10:40:59 · 193 阅读 · 0 评论 -
AT4438 [AGC028D] Chords 题解
可以发现,如果把环断开成为一条链,那么线段的交实际上就类似于区间的交。 所以,我们可以考虑用连通块 SSS 中涉及到的编号最小的点 LLL 和编号最大的点 RRR 所构成的区间 [L,R][L, R][L,R] 来表示 SSS。 下文我们称 [L,R][L, R][L,R] 为连通块 SSS 的表示区间。 那么对于一个已经连好边的图,我们可以发现一个性质: 对于两个不同的连通块,它们的表示区间要么是包含关系,要么交集为空。 这个性质是有利于统计的,因为我们不必考虑方案中产生的交区间对不同连通块的影响了原创 2022-01-12 10:36:57 · 108 阅读 · 0 评论