
【算法】FFT与NTT
文章平均质量分 87
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3160】万径人踪灭
【题目链接】点击打开链接【思路要点】枚举对称中心,设关于该中心对称点的个数为\(x\),以该点为中心的最长回文子串长度为\(y\),那么该点对答案的贡献应为\(2^x-\lfloor\frac{y+1}{2}\rfloor\)。其中对称点的个数可以通过FFT或bitset压位求出,最长回文子串长度可以用Manacher算法求出。时间复杂度\(O(\frac{N^2}{w})\)或\(O(NLogN...原创 2018-02-26 16:35:18 · 403 阅读 · 0 评论 -
【CodeForces】Mail.Ru Cup 2018 Round 1 (Div. 1 + Div. 2) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Elevator or Stairs?【思路要点】按照题意计算两种方式的用时,取较优的方案采纳。时间复杂度 O(1)O(1)O(1) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5...原创 2018-10-21 14:28:31 · 929 阅读 · 1 评论 -
【CodeForces553E】Kyoya and Train
【题目链接】点击打开链接【思路要点】考虑一个暴力 dpdpdp ,记 dpi,jdp_{i,j}dpi,j 表示在点 iii 处,时刻 jjj 最优决策的期望花费。则有dpi,j={x+dist(i,N)j&amp;gt;T0i=N,j≤TMini⇒e∈E{costi,e+∑k=1tpi,e,k∗dpe,j+k}i≠N,j≤Tdp_{i,j}=\left\{\begin{a...原创 2018-11-19 12:30:06 · 441 阅读 · 0 评论 -
【省内训练2018-11-23】Bishop
【思路要点】先考虑一个子问题,在 N∗NN*NN∗N 棋盘的主对角线及其右下方放置 KKK 个不能互相攻击的车,求方案数 f(N,k)f(N,k)f(N,k)。考虑最后一行的放置情况,有递推式 f(N,k)=f(N−1,k)+(N−k+1)∗f(N−1,k−1)f(N,k)=f(N-1,k)+(N-k+1)*f(N-1,k-1)f(N,k)=f(N−1,k)+(N−k+1)∗f(N−1,k−...原创 2018-11-24 17:02:24 · 368 阅读 · 3 评论 -
【CodeForces623E】Transforming Sequence
【题目链接】点击打开链接【思路要点】记 dpi,jdp_{i,j}dpi,j 表示数列的前 iii 项的并有 jjj 位,枚举数列的第 i+1i+1i+1 位使得数值的并增加了 kkk 位,则将 2j∗(j+kk)∗dpi,j2^j*\binom{j+k}{k}*dp_{i,j}2j∗(kj+k)∗dpi,j 加入 dpi+1,j+kdp_{i+1,j+k}dpi+1,j+...原创 2019-03-12 14:32:38 · 294 阅读 · 0 评论 -
【LOJ2983】「WC2019」数树
【题目链接】点击打开链接【思路要点】op=0op=0op=0 ,算一算两棵树的公共边数即可。时间复杂度 O(N)O(N)O(N) 或 O(NLogN)O(NLogN)O(NLogN) 。op=1op=1op=1 ,考虑枚举蓝树上的一个边集 SSS ,强制红树上同样存在这些边,计算将剩余 N−∣S∣N-|S|N−∣S∣ 个联通块连成一棵树的方案数,更新答案。上述算法中,枚举蓝...原创 2019-03-31 21:13:53 · 673 阅读 · 0 评论 -
【HDU5279】YJC plays Minecraft
【题目链接】点击打开链接【思路要点】令 fi,gi,hif_i,g_i,h_ifi,gi,hi 表示 iii 个点的有标号树、森林、111 号与 iii 号点不连通的森林的个数。那么答案应为 2N∏i=1Ngai−∏i=1N(gai−hai)2^N\prod_{i=1}^{N}g_{a_i}-\prod_{i=1}^{N}(g_{a_i}-h_{a_i})2Ni=1∏N...原创 2019-04-10 17:02:29 · 439 阅读 · 0 评论 -
【校内训练2019-04-12】绝对伏特加
【思路要点】考虑 ∏aiF\prod a_i^F∏aiF 的组合意义,即对于每一种颜色,找到一个关键点,重复 FFF 次。考虑交换求和顺序,我们首先决定每种颜色被找到的关键点,剩余的没有被选中的位置任意涂色。令关键点的指数型生成函数为 G(x)=∑i=0kS(k,i)×i!i!xi=∑i=0kS(k,i)xiG(x)=\sum_{i=0}^{k}\frac{S(k,i)\times i...原创 2019-04-17 13:37:55 · 338 阅读 · 0 评论 -
【LOJ2554】「CTSC2018」青蕈领主
【题目链接】点击打开链接【思路要点】值域连续的区间的交和并均为值域连续的区间,因此一个合法输入应当能够构成一个树形结构。考虑一个节点的子树,其对应的区间值域连续,且在后续的考虑中,我们会避免使其出现在更大的连续区间中,因此我们可以等效地将其看做一个数。因此,记 fif_ifi 表示长度为 i+1i+1i+1 的,去掉最后一个元素后不存在非平凡连续区间的排列个数, sis_i...原创 2019-04-19 21:25:43 · 793 阅读 · 2 评论 -
【LOJ3058】「HNOI2019」白兔之舞
【题目链接】点击打开链接【思路要点】首先,求出 LLL 的任意原根 ggg ,以及其 kkk 次单位根 www 。记初始给定的矩阵为 matmatmat ,那么答案 anstans_tanst 应当满足anst=∑i=0L(Li)(mati)x,y[i%k=t]ans_t=\sum_{i=0}^{L}\binom{L}{i}(mat^i)_{x,y}[i\%k=t]anst...原创 2019-04-25 11:33:13 · 582 阅读 · 0 评论 -
【LOJ3120】「CTS2019」珍珠
【题目链接】点击打开链接【思路要点】记 Lim=Min{D,N−2M}Lim=Min\{D,N-2M\}Lim=Min{D,N−2M} 。答案即为N!∑i=0Lim(ex+e−x2+yex−e−x2)D[xN][yi]N!\sum_{i=0}^{Lim}(\frac{e^x+e^{-x}}{2}+y\frac{e^x-e^{-x}}{2})^D[x^N][y^i]N!i=0∑...原创 2019-05-30 13:56:47 · 430 阅读 · 0 评论 -
【省内训练2019-06-06】计数
【思路要点】考虑枚举一对颜色相等的位置 i,ji,ji,j ,计算它们的贡献,则有Ans=∑i=1N∑j=i+1N[ci=cj]2j−i−1∑k=0min{i−1,N−j}(i−1k)×(N−jk)Ans=\sum_{i=1}^{N}\sum_{j=i+1}^{N}[c_i=c_j]2^{j-i-1}\sum_{k=0}^{min\{i-1,N-j\}}\binom{i-1}{k}\tim...原创 2019-06-10 17:03:30 · 225 阅读 · 0 评论 -
【LOJ575】「LibreOJ NOI Round #2」不等关系
【题目链接】点击打开链接【思路要点】见 官方题解 。(反正也是我写的)时间复杂度 O(NLog2N)O(NLog^2N)O(NLog2N) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 262144;const int P = 998244353;typedef l...原创 2019-07-07 20:03:40 · 1383 阅读 · 0 评论 -
【2019 江苏省队集训】Day1 解题报告
【T1】 光影交错【思路要点】NNN 轮后仪式仍然进行的概率为 (1−p)N(1-p)^N(1−p)N ,当 p=10−5p=10^{-5}p=10−5 时,取 N>107N>10^7N>107 可以保证该概率在 10−2010^{-20}10−20 以内,因此忽略这部分情况不会导致精度要求不能接受的误差产生。记 f(i)f(i)f(i) 表示出现 ii...原创 2019-07-02 14:13:33 · 1440 阅读 · 1 评论 -
【LOJ555】抢红包
【题目链接】点击打开链接【思路要点】考虑 M=0M=0M=0 的做法,记 P(x,y)P(x,y)P(x,y) 表示经过 (x,y)(x,y)(x,y) 的概率,也即 (x+yx)AyBx\binom{x+y}{x}A^yB^x(xx+y)AyBx ,并记 Ft(x)=∑i=0tP(i,t−i)×xiF_t(x)=\sum_{i=0}^{t}P(i,t-i)\times x^i...原创 2019-07-06 16:32:43 · 444 阅读 · 0 评论 -
【CodeForces】Avito Code Challenge 2018 (Div. 1 + Div. 2) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Antipalindrome【思路要点】当所有字符相同,答案为 000 。否则,若原串为回文串,删去其最后一个字符一定会使其变成非回文串,因此答案为 N−1N-1N−1 ,否则答案为 NNN 。时间复杂度 O(N)O(N)O(N) 。【代码】#include<bits/stdc++.h...原创 2018-10-25 19:56:20 · 423 阅读 · 0 评论 -
【CodeChef】Lucas Theorem
【题目链接】点击打开链接【思路要点】考虑subtask1,我们很容易可以得到一个动态规划的解法。注意到行与行之间转移的卷积本质,我们可以用FFT快速计算出DP数组的某一行,可以通过subtask2。原题中N非常大,我们不可能求得DP数组的第N行。考虑多项式x(x+1)(x+2)(x+3)…(x+p-1),在模质数p意义下,应当等于x^p-x。因为我们打表发现这两个多项式拥有...原创 2018-07-01 21:10:54 · 473 阅读 · 0 评论 -
【LOJ2320】「清华集训 2017」生成树计数
【题目链接】点击打开链接【思路要点】由于场。时间复杂度\(O(DC^2+D^2+TD^2LogN)\),其中\(C=165,D=146\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXM = 65;const int MAXN = 262144;const int MAXLOG = 20;const ...原创 2018-06-24 20:43:36 · 1862 阅读 · 3 评论 -
【BZOJ3992】【SDOI2015】序列统计
【题目链接】点击打开链接【思路要点】先求出\(M\)的原根,然后我们就可以把乘法转化为加法。然后NTT快速幂求出数集的\(N\)次方就行了,注意虽然多项式的次数界会不断上升,但由欧拉定理,我们可以将次数界重新降低至\(M\),相当于每乘一次,做一次取模。时间复杂度\(O(MLogNLogM)\)。【代码】#include<bits/stdc++.h>using namespace s...原创 2018-03-01 15:40:43 · 243 阅读 · 0 评论 -
【CodeForces528D】Fuzzy Search
【题目链接】点击打开链接【思路要点】FFT匹配字符串的问题,由于字符集较小,我们可以分别检验每个字符是不是匹配。具体做法就是把T翻转,然后FFT,检验每个位置匹配的字符数是否等等于该字符出现次数。时间复杂度\(O(|S|Log|S|)\)。【代码】/*Advanced FFT with smaller constant*/#include<bits/stdc++.h>using n...原创 2018-03-12 13:09:09 · 401 阅读 · 0 评论 -
【CodeForces632E】Thief in a Shop
【题目链接】点击打开链接【思路要点】NNT+快速幂即可。本题测试点20会卡NNT模数998244353,建议使用双模数。时间复杂度\(O(N+K*Max\{A_i\}LogK*Max\{A_i\})\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 1048576;const int P = 998...原创 2018-03-12 19:27:42 · 286 阅读 · 0 评论 -
【CodeForces286E】Ladies' Shop
【题目链接】点击打开链接【思路要点】首先,如果问题有解,必定存在一组解为\((a_1,a_2,...,a_N)\),这一点是充要的。充分性显然,对于必要性,我们假设问题有解,令这组解为\((p_1,p_2,...,p_k)\),但\((a_1,a_2,...,a_N)\)不是一组合法的解,即\((a_1,a_2,...,a_N)\)可能组合出\((a_1,a_2,...,a_N)\)以外的\(M\...原创 2018-03-13 11:01:50 · 315 阅读 · 0 评论 -
【CodeForces300D】Painting Square
【题目链接】点击打开链接【思路要点】首先,很重要的一点:“The bear chooses some row and some column inside the chosen square.”一句中,“Some”一词应译为“某个”而不是“一些”。很显然,只有边长为大于等于3的正方形能被操作,并且每一次的操作方式是唯一的:沿中心将正方形分成四个等大的小正方形。我们令操作次数为\(M\),表示大小为...原创 2018-03-13 12:37:27 · 443 阅读 · 0 评论 -
【CodeForces438E】The Child and Binary Tree
【题目链接】点击打开链接【思路要点】按照题解的做法,我们可以通过多项式开根、多项式求逆来求解本题。(但是我不会,也不想学)我们来考虑一种比较容易的做法,首先:$$dp_s=\sum_{c_i+j+k=s}dp_j*dp_k$$也就是说,我们只有知道了\(s\)较小的\(dp\)值,才能计算出\(s\)较大的\(dp\)值。考虑分治,对于区间\([L,R]\),令\(Mid=\lfloor\frac...原创 2018-03-13 18:28:05 · 287 阅读 · 0 评论 -
【CodeForces472G】Design Tutorial: Increase the Constraints
【题目链接】点击打开链接【思路要点】先写一发bitset交上去试试,时间复杂度\(O(\frac{NQ}{w})\),其中\(w=64\),结果是T了,大概要12s才能跑出满数据。正解是分块FFT,令分块大小为\(Size\),进行\(O(\frac{N}{Size})\)次FFT,处理出\(O(\frac{N}{Size})\)个\(T\)的后缀与\(S\)的每个长度为\(|T|\)的子串能够匹...原创 2018-03-14 10:44:17 · 420 阅读 · 0 评论 -
【BZOJ3456】城市规划
【题目链接】点击打开链接【思路要点】令\(f_i\)为当\(N=i\)时,原问题的答案。显然有\(f_1=1\)。当\(i>1\),考虑用\(i\)个点的简单无向图的个数减去\(i\)个点的简单无向图中不连通的个数。考虑经典思路:枚举1号节点所在连通块的大小\(j\),则有\(f_i=2^{\binom{i}{2}}-\sum_{j=1}^{i-1}f_j*\binom{i-1}{j-1}*...原创 2018-05-18 14:51:18 · 446 阅读 · 0 评论 -
【BZOJ3625】小朋友和二叉树
【题目链接】点击打开链接【思路要点】令多项式\(F_i=f_i\),\(C_i=[i\ exist\ in\ c]\),则有\(F\equiv F*F*C+1(mod\ x^{m+1})\)。解这个方程,有\(F\equiv \frac{1\pm\sqrt{1-4C}}{2C}(mod\ x^{m+1})\)。分式上下同乘\(1\mp\sqrt{1-4C}\),有\(F\equiv \frac{4...原创 2018-05-18 17:05:32 · 441 阅读 · 0 评论 -
【BZOJ4503】两个串
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 400005#define P acos(-1)template <typename T> void read(T &x) { x = 0; int f = 1; char c = ...原创 2018-05-20 18:18:09 · 317 阅读 · 0 评论 -
【BZOJ4259】残缺的字符串
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1048576#define P acos(-1)template <typename T> void read(T &x) { x = 0; int f = 1; char c =...原创 2018-05-20 19:56:29 · 170 阅读 · 0 评论 -
【BZOJ3509】【CodeChef】COUNTARI
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005#define MAXV 30005#define MAXM 405#define P acos(-1)template <typename T> void read(T &am...原创 2018-05-20 20:25:58 · 271 阅读 · 0 评论 -
【BZOJ3771】Triple
【题目链接】点击打开链接【思路要点】分别考虑丢失1把、2把、3把斧子的方案数。定义多项式\(A\),满足\(A_i=[i\ exist\ in\ input]\)。丢失1把斧子的方案数显然就是\(A_i\)。丢失2把斧子的方案数可以通过容斥原理计算,考虑先计算出\(B=A^2\)。对于一种方案\((x,y)\),当\(x=y\),它会被计算1次,否则它会被计算2次,我们只希望统计\(x\ne y\...原创 2018-05-21 18:42:52 · 313 阅读 · 0 评论 -
【CodeForces】CodeForces Round #485 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接【Div.2 A】Infinity Gauntlet【思路要点】按照题意模拟即可。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> voi...原创 2018-06-05 15:43:52 · 659 阅读 · 0 评论 -
【BZOJ4555】【TJOI2016】求和
【题目链接】点击打开链接【思路要点】\(f(n)=\sum_{i=0}^{N}\sum_{j=0}^{i}S(i,j)*2^j*j!\)\(=\sum_{i=0}^{N}\sum_{j=0}^{N}S(i,j)*2^j*j!\)\(=\sum_{j=0}^{N}2^j*j!\sum_{i=0}^{N}S(i,j)\)\(=\sum_{j=0}^{N}2^j*j!\sum_{i=0}^{N}\fra...原创 2018-06-21 17:01:26 · 230 阅读 · 0 评论 -
【BZOJ5093】【Lydsy1711月赛】图的价值
【题目链接】点击打开链接【思路要点】显然每个点对于答案的贡献可以分开考虑,枚举点的度数\(i\),可知\(Ans=N*\sum_{i=0}^{N-1}\binom{N-1}{i}*i^k*2^{\binom{N-1}{2}}\)。因此,我们本质上需要解决的问题是求解\(Ans'=\sum_{i=0}^{N}\binom{N}{i}*i^k\)。展开\(i^k\),有\(Ans'=\sum_{i=0...原创 2018-06-21 20:49:55 · 412 阅读 · 0 评论 -
【CodeForces773F】Test Data Generation
【题目链接】点击打开链接【思路要点】题目给出的限制等价于: NNN 为奇数, aNa_NaN 为偶数, aNg\frac{a_N}{g}gaN 为奇数。考虑枚举 aNa_NaN 的因子 222 的个数,并令 ggg 也含有那么多因子 222 ,则问题转化为了:求有多少个长度为奇数的递增序列,满足最后一位也为奇数,且长度在 NNN 以内,值域在 VVV 以内。记 odd...原创 2019-08-26 16:07:59 · 367 阅读 · 0 评论