12 2023 档案

摘要:题目链接 很显然,按照右端点从小到大排序,对于每段区间尽量地贪心放在靠右的位置即可。 中间用 std::set 维护当前还是 \(0\) 的位置,以及树状数组维护区间 \(1\) 的个数。 点击查看代码 #include <bits/stdc++.h> #define FL(i, a, b) for 阅读全文
posted @ 2023-12-31 21:30 徐子洋 阅读(19) 评论(0) 推荐(0)
摘要:题目链接 考虑拆贡献。 显然答案可以拆成对于所有 \(s_i\) 的每一个后缀的反串,作为前缀在所有串中的出现次数的加和。 这个东西字典树维护一下就行了。 不知道是谁考场上写哈希赛后被人对着模数卡掉了 点击查看代码 #include <bits/stdc++.h> #define FL(i, a, 阅读全文
posted @ 2023-12-31 21:28 徐子洋 阅读(55) 评论(0) 推荐(0)
摘要:题目链接 题目本质就是对一个多项式 \(F\) 进行等比数列求和得到 \(G\)(\(F_i\) 表示 \(i\) 在序列 \(A\) 中的出现次数),求 \(G\) 所有下标 \(>0\) 的位置的权值和。 显然,\(M\) 固定就可以直接做了。但 \(M\) 不固定,所以我们只能暴力枚举 \(M 阅读全文
posted @ 2023-12-31 21:26 徐子洋 阅读(21) 评论(0) 推荐(0)
摘要:定义与形式 给定一个大小为 \(n\times n\) 的矩阵 \(A\),则行列式 \[\det(A)=|A|=\sum_{p} (-1)^{\pi(p)} \prod A_{i,p_i} \]其中的 \(p\) 是一个 \(1\sim n\) 的排列,\(\pi(p)\) 为排列 \(p\) 的 阅读全文
posted @ 2023-12-30 16:27 徐子洋 阅读(327) 评论(0) 推荐(0)
摘要:考虑拆贡献。 显然答案可以拆成对于所有 $s_i$ 的每一个后缀的反串,作为前缀在所有串中的出现次数的加和。 这个东西字典树维护一下就行了。 不知道是谁考场上写哈希赛后被人对着模数卡掉了 #include <bits/stdc++.h> #define FL(i, a, b) for(int i = 阅读全文
posted @ 2023-12-10 08:35 徐子洋 阅读(7) 评论(0) 推荐(0)
摘要:题目链接 考虑容斥:拿满足条件 \(1\) 的方案数减去满足条件 \(1\) 但不满足条件 \(2\) 的方案数就是答案。 满足条件 \(1\) 但不满足条件 \(2\) 的方案可以用 \(\text{Manacher}\) 算法 \(O(n)\) 计算。 对于满足条件 \(1\) 的总方案数,我们 阅读全文
posted @ 2023-12-09 19:51 徐子洋 阅读(20) 评论(0) 推荐(0)
摘要:题目链接 对于一种元素 \(v\),假设它在给出可重集合中出现了 \(t\) 次,那么容易把它表示成基础的生成函数形式:\(1+x+x^2+x^3+\dots+x^t\)。 显然,把所有元素的生成函数卷一下就是答案。但是这样最坏情况为 \(O(nm\log n)\)的,不能通过这道题。 在思考优化方 阅读全文
posted @ 2023-12-09 09:44 徐子洋 阅读(15) 评论(0) 推荐(0)