摘要: 题目链接 题意 : 给出 n 个串、然后给出一个问询串、问你对于问询串的每一个前缀、需要至少补充多少单词才能使得其后缀包含 n 个串中的其中一个、注意 '-' 字符代表退格 分析 : 多串的匹配问询自然想到 AC 自动机 或者 构建 Trie 图 首先将 N 个串丢到 Trie 图里面 对于每一个节 阅读全文
posted @ 2018-08-20 15:24 qwerity 阅读(230) 评论(0) 推荐(0) 编辑
摘要: FWT 是求多项式位元算卷积的一种高效方法 最常见的有 or、and、xor 这三种操作 void FWT(LL f[], int n, int op) { int mx = 0; while((1LL<<mx) < n) mx++; for (int i = 1; i <= mx; ++i) { 阅读全文
posted @ 2018-08-20 13:25 qwerity 阅读(293) 评论(0) 推荐(0) 编辑
摘要: FFT 实际是 DFT 的一种快速实现方法 可以将多项式的乘法从 O(n^2) 优化到 O(nlogn) 暂时没有看到很好的科普文章、原理自行百度吧 #define L(x) (1 << (x)) const double PI = acos(-1.0); const int maxn = (1<< 阅读全文
posted @ 2018-08-20 13:22 qwerity 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题意 : 求两个大数相乘的结果 分析 : 可以将数拆成多项式的形式 例如 12345 (1 * x^4) + (2 * x^3) + (3 * x^2) + (4 * x^1) + (5 * x^0) 其中 x == 10 那么两个数的相乘就可以变成两个多项式的相乘 可以利用 FFT 来优化 注意最 阅读全文
posted @ 2018-08-20 13:20 qwerity 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题意 : 给你一个a数组和b数组,构造出A[i][j]矩阵(A[i][j] = a[i xor j]) 给出等式 A * x = b ( mod p ) n等于4的时候有: A[0][0]*x[0] + A[0][1]*x[1] + A[0][2]*x[2] + A[0][3]*x[3] 阅读全文
posted @ 2018-08-20 13:03 qwerity 阅读(181) 评论(0) 推荐(0) 编辑