摘要:
神TM毒瘤线段树优化DP......新姿势get。 题意:有n个村庄,在里面选不多于k个建立基站。 建立基站要ci的费用。如果一个村庄方圆si内没有基站,那么又要支出wi的费用。求最小费用。 解:很显然想到DP,f[i][j]表示前i个村庄里面放了j个基站,其中第i个一定选的最小费用。费用只统计不超 阅读全文
摘要:
以前看到过,但是搞不倒。知道了算法之后就好搞了。 题意:给定两个长为n的序列,你可以把某个序列全部加上某个数c,变成循环同构序列。 求你操作后的min∑(ai - bi)² 解: 设加上的数为c,那么得到一个柿子:∑(ai - bi + c)² 拆开:∑ai2 + ∑bi2 - 2∑aibi + n 阅读全文
摘要:
题意:你有若干把斧头,河神拿了你的1/2/3把斧头,问可能拿了你的斧头的总价值,每个总价值有多少种方案。 斧头价值不大于40000 解: 很容易想到是FFT,构造函数之后A + A² + A3即可。 然后发现漏洞百出,这道题的难点是在容斥上...... 首先只选一个的不用管了,肯定对。 然后考虑选两 阅读全文
摘要:
气死了,FFT了半天发现是NTT... 1004535809 这个东西是NTT模数,原根为3。 题意:给定集合,元素的大小不超过M。用这些元素组成长为n的序列,要求乘积模M为k,求方案数。 n <= 1e9,M是质数 解:有一个10分的暴力DP... 正解首先考虑加起来模M为k。 我们可以考虑构造多 阅读全文
摘要:
题意:对于k = 0 ... n求 解: 首先把i变成从0开始 我们发现a和b的次数(下标)是成正比例的,这不可,于是反转就行了。 反转b的话,会发现次数和是n + k,这不可。 反转a就很吼了。 这个东西恰好是卷积出来的第n - k项的系数。 所以我们把a串反转,然后用a与b卷积,最后再反转输出即 阅读全文
摘要:
题意:给定k,只含有ACGT的字符串S和T,求T在S中出现了多少次。 字符匹配:如果S的[i - k, i + k]中有字符x,那么第i位可以匹配x。 解: 首先预处理:f[i][j]表示S的第i位能否匹配j。差分一下即可。 然后按照FFT的套路,枚举每种字符,算一遍有多少个匹配。四种字符加起来,如 阅读全文
摘要:
题意: 解: 介绍两种方法。 首先可以把那个最后除的qi拆掉。 ①分前后两部分处理。 前一部分可以看做是个卷积。下面的平方不拆开,直接看成gi-j即可。 后一部分按照套路,把循环变量改成从0开始,反转q,之后也是卷积。 ②直接构造函数卷积。 题解。 我写的第一种。 1 #include <cstdi 阅读全文
摘要:
题意:给定只有ab的字符串,求其中不连续非空回文子序列的个数。 解:用所有回文子序列减去回文子串。 容易想到枚举中线。 设f[i]表示以i为中线,回文字符的个数。那么回文子序列就是∑(2f[i] - 1) 怎么求f[i]呢?卷积! 我们考虑把i变成中线 * 2,那么f[i] = ( ∑(s[j] = 阅读全文
摘要:
题意:给定两个串s,t。其中t可能含有?,可以代表任一字符。 求t在s中一共出现了多少次。 解: 我有个想法是在后缀自动机上DFS,然后发现不记忆化会超时,记忆化又不对。 正解是FFT。我们发现如果把问号看做0,那么两个字符匹配就是(a - b)b = 0 然后整串匹配就是∑(a - b)²b = 阅读全文
摘要:
介绍一种求拓扑序的方法。 枚举每个点,沿反图DFS,之后把自己加入拓扑序。 阅读全文