摘要:
题目链接 写出朴素的生成函数后用等比数列求和公式化简 10!=3628800 \(10^6\)级别 中国剩余定理可用于处理没有平方因子的合数为模数的情况 本题中的模数2004含有平方因子,可以先用扩展Lucas定理求组合数再用中国剩余定理,更简便的方法是,考虑到本题中只需要除以n!,在过程中对200 阅读全文
摘要:
比赛链接 E题有多次对不同区间的询问,显然不可能通过一次排序解决问题呀 阅读全文
摘要:
题目链接 Splay树维护权值,数组模拟修改 点击查看代码 #include <bits/stdc++.h> using namespace std; int a[1000005]; int root,tot; int read1() { char cc=getchar(); while(!(cc> 阅读全文
摘要:
在【区间翻转】一题中,序列始终为二叉平衡树的中序遍历 阅读全文
摘要:
阅读全文
摘要:
题目链接 独立过了一道NOI的题,开心~ 我的做法是后缀数组+单调栈+st表,并没有用到并查集 点击查看代码 #include <bits/stdc++.h> using namespace std; string s; int sa[300005],rk[20][300005],r[300005] 阅读全文
摘要:
题目链接 添加分隔符的目的是给偶数长度的回文串一个中心,本题只要求奇数长度的回文串,那么这一步就可以省略了;而且,字符串加法非常慢 利用回文串的另一半所携带的信息,注意不能超出回文串的范围 在manacher算法的过程中,我们可以顺便得到以字符串中任意一个字符为中心的最长回文串的长度 边修改边询问, 阅读全文
摘要:
题目链接 AC自动机解决的是“每个模式串在文本串中出现”的问题 和“阿狸的打字机”那道题很类似,也是把询问全部放到树上,拓扑排序一遍求解 点击查看代码 #include <bits/stdc++.h> using namespace std; string s; int t[200005][26], 阅读全文
摘要:
单向边森林不能通过dfs找环 抽象的题目需要通过模拟样例理解题意 列表模拟样例 链式前向星双倍空间(边&边的访问函数) 点击查看代码 #include <bits/stdc++.h> using namespace std; const int mod=1000000007; long long a 阅读全文
摘要:
题目链接 AC自动机的fail指针构成了失配树 把询问全部放到树上,离线dfs处理(第一遍dfs在fail树上进行,刻画x的出现;第二遍dfs在trie树上进行,利用系统栈刻画y的每个状态) 点击查看代码 #include <bits/stdc++.h> using namespace std; s 阅读全文