摘要: A 对点权取 \(\ln\) 变成加法就行了。 #include <bits/stdc++.h> #define fi first #define se second #define db double #define U unsigned #define P std::pair<int,int> 阅读全文
posted @ 2020-10-19 21:33 RainAir 阅读(76) 评论(0) 推荐(0) 编辑
摘要: A 我们考虑序列的最后一个数字 \(x\),那么 \(>x\) 的数字在排名中就没有贡献了,所以我们只能让前面 \(<x\) 的数尽量靠前。贪心的想我们肯定让这个 \(x\) 尽量大,也就是说如果把越大的数放在后面,那么就会有更多小的数在前面。 于是答案等价于求反过来的最大字典序。 #include 阅读全文
posted @ 2020-10-18 21:36 RainAir 阅读(115) 评论(0) 推荐(0) 编辑
摘要: A 枚举每个矩形,前缀和优化即可。 #include <bits/stdc++.h> #define fi first #define se second #define db double #define U unsigned #define P std::pair<int,int> #defin 阅读全文
posted @ 2020-10-18 21:14 RainAir 阅读(125) 评论(0) 推荐(0) 编辑
摘要: A. 寿司晚宴 暴力 dp 是设 \(f_{S_1,S_2}\) 表示两个人选的质因子的集合,转移直接预处理每个数的集合转移。 这种题肯定是按照 \(\sqrt n\) 分类讨论:对于 \(\leq \sqrt n\) 的质数只有 \(8\) 个,先状压,然后将其他的数字,如果最大的质因子 \(> 阅读全文
posted @ 2020-10-15 21:59 RainAir 阅读(60) 评论(0) 推荐(0) 编辑
摘要: A 考虑对串的反串建后缀树,答案就是叶子节点个数。 注意到这时的叶子节点一定是一段前缀,如果一个前缀 \(s[1\ldots i]\) 是叶子节点当且仅当它不属于任何一个点的 border 集合,所以问题变成了求每个前缀的 border 集合的并的大小,用 kmp 解决即可。 这里发现一个结论:每个 阅读全文
posted @ 2020-10-15 21:23 RainAir 阅读(66) 评论(0) 推荐(0) 编辑
摘要: A. 序列分割 容易发现分割顺序并不影响答案。 因为你确定下来最终状态后,设每段的和分别为 \(x_1,x_2,\ldots x_m\),发现你这个分割实际上是统计了 \(\prod_{i < j} x_ix_j\)。(每次都是统计跨过某个点的所有对,然后递归) 所以我们可以设计一个 dp:\(f_ 阅读全文
posted @ 2020-10-14 21:51 RainAir 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 因为某些原因晚了半小时打,然后就疯狂挂题,从前二(或许?)挂到了倒一 A 可以考虑哈希。这里可以给每个值随机一个哈希值,合并操作定义为异或。 考试的时候写的N模好像 T 飞了。。事实上这个数据一模数就能过 #pragma GCC optimize("Ofast") #include <bits/st 阅读全文
posted @ 2020-10-14 17:01 RainAir 阅读(62) 评论(0) 推荐(0) 编辑
摘要: A 前面的 # 都贪心只填一个 ),用最后一个 # 调整即可。 还是最后扫一遍判断比较靠谱。。尝试 \(O(1)\) 特判挂了。。 B 设 \(f_i\) 表示最后一个区间右端点选在 \(i\) 的概率,我们对于每个点 \(i\),处理出 \(l_i\) 表示最大的数满足 \([l_i,i]\) 包 阅读全文
posted @ 2020-10-13 22:01 RainAir 阅读(64) 评论(0) 推荐(0) 编辑
摘要: A 发现限制形如选了一条边之后,不能选和它端点相同的边。 我们建一张新图,新图中的点代表原图中的边,如果两个边不能同时选就连边。首先可以证明问题一定有解:因为这个问题等价于对于每个弱连通分量找出一个环,而只要出度入度都为 \(1\) 就一定有环,所以这种情况下更有环。 我们发现原图的一种答案对应了新 阅读全文
posted @ 2020-10-13 15:07 RainAir 阅读(67) 评论(0) 推荐(0) 编辑
摘要: A 类似后缀数组算本质不同串的思路,考虑 \(S\) 的第 \(i\) 个前缀和第 \(i+1\) 个前缀有多少个都会被计算,发现被算重的后缀等价于 \(T\) 中 \(S[i+1]\) 的出现次数。 举个例子: abc abc 第 1 个前缀和第二个前缀都会算到 abc,原因是第一个前缀是 "a" 阅读全文
posted @ 2020-10-12 21:48 RainAir 阅读(169) 评论(2) 推荐(0) 编辑