随笔分类 -  codeforces

摘要:对于两种权值的分别贪心维护,最后枚举一种权值选多少个,另一个二分出来,总复杂度 \(2\log\)。 点击查看代码 #include<cstdio> #include<iostream> #include<queue> typedef long long ll; inline int min(con 阅读全文
posted @ 2022-05-28 14:57 cunzai_zsy0531 阅读(33) 评论(0) 推荐(0)
摘要:题面 统计一个后缀和数组 \(suf_i\),其中 ) 为 \(1\),( 为 \(-1\),那么一个子串 \(s_{l,r}\) 是一个合法括号序列,当且仅当 \(\min_{l\leq k \leq r}suf_k\geq suf_{r+1}\),并且 \(suf_l=suf_{r+1}\)。 阅读全文
posted @ 2022-05-18 21:35 cunzai_zsy0531 阅读(101) 评论(0) 推荐(0)
摘要:题面 虽然 \(n,m\leq 5000\),但是这题是 \(O((n+m)|\Sigma|)\) 的。首先建 \(S\) 的 SAM,拿 \(T\) 上去跑可以得到 \(T\) 每个前缀的匹配区间(在 \(S\) 中只出现一次)。接着建 \(T\) 的 SAM,也可以求出每个前缀在 \(T\) 中 阅读全文
posted @ 2022-05-18 21:17 cunzai_zsy0531 阅读(51) 评论(0) 推荐(0)
摘要:题面 循环同构的话很容易想到把串延长一倍,跑的时候找所有长度为 \(n\) 的公共子串的出现次数即可。 点击查看代码 const int N=3e6+13; char s[N<<1]; int nxt[N<<1],len[N<<1],ptot=1,lastpos=1,cnt[N<<1]; std:: 阅读全文
posted @ 2022-05-18 21:13 cunzai_zsy0531 阅读(42) 评论(0) 推荐(0)
摘要:Post time: 2022-04-09 13:48:24 官方题解对 \(\log+1\) 结论的归纳证明: Now let's prove the key idea: let's prove by induction that if all numbers are less than \(2k 阅读全文
posted @ 2022-04-22 16:06 cunzai_zsy0531 阅读(35) 评论(0) 推荐(0)
摘要:Post time: 2022-03-28 15:56:21 A wonderful proof of \(k\leq 2\) in Problem.F, which \(k\) is the the minimum number of subsegments required. written b 阅读全文
posted @ 2022-04-22 11:59 cunzai_zsy0531 阅读(77) 评论(0) 推荐(0)
摘要:Post time: 2021-10-29 18:22:46 题面 贡献一个官方题解做法的详细解释。 首先注意到一个贪心的思路,从前往后如果能够使某一段长度 \(=x\) 就一定会使其 \(= x\) 或 \(\geq x\)。 考虑设一个函数 \(f(pos,x)=npos\) 表示当限制长度为 阅读全文
posted @ 2022-04-21 22:23 cunzai_zsy0531 阅读(25) 评论(0) 推荐(0)
摘要:Post time: 2021-07-24 13:22:43 题面 给定长度为 \(n\) 的数互不相同的序列 \(a\)。求 \[ p_k=\sum_{1\leq i,j\leq k} a_i\bmod a_j(1\leq k\leq n) \] 首先把原式分成两类求: \[ s_k=\sum_{ 阅读全文
posted @ 2022-04-21 22:14 cunzai_zsy0531 阅读(35) 评论(0) 推荐(0)
摘要:Post time: 2021-07-24 13:05:12 题面 一道心理阴影题。 题意已经很明显了,\(O(n^2)\) 做法就是,对于每个 \(k\),求最少多少次交换可以使一个排列变为另一个排列。做法是说,对于同一个数,若它在两个排列中的位置不同(记这样的数的总数为 \(s\)),就建一条连 阅读全文
posted @ 2022-04-21 21:57 cunzai_zsy0531 阅读(28) 评论(0) 推荐(0)
摘要:Post time: 2021-03-31 18:36:23 考虑直接模拟。开一个数组 \(f_i\) 表示第 \(i\) 个位置能够取到的时间,没有取到设为 \(-1\)。每一次的加或乘操作一步一步做即可。 以加法为例:设这一轮需要加的数为 \(x\),最多加的次数为 \(y\)。用一个数组 \( 阅读全文
posted @ 2022-04-21 20:17 cunzai_zsy0531 阅读(25) 评论(0) 推荐(0)
摘要:Post time: 2021-02-01 18:33:46 传送门 这题是一道典型的区间dp。我们考虑一个矩形 \((x_1,y_1,x_2,y_2)\) (左上和右下角),它的最小答案显然可以通过从中间切开,左边和右边合并来计算。于是我们得到了一个动态规划基础模型:由小问题得出大问题答案。 设 阅读全文
posted @ 2022-04-21 19:58 cunzai_zsy0531 阅读(51) 评论(0) 推荐(0)
摘要:Post time: 2020-09-07 19:33:53 题目链接 Link 首先我们考虑建边,如果我们把某一个公主的两个潜在丈夫连一条边,边权为 \(w_i\),如果选了某一条边,就相当于是选了一个公主。 接下来我们考虑什么情况下我们的选边是合法的。首先考虑树的情况,如果我们选择了 \(k\) 阅读全文
posted @ 2022-04-21 14:43 cunzai_zsy0531 阅读(76) 评论(0) 推荐(0)