摘要:
发现dig(i)的质因数,只可能有2,3,5,7,所以函数值只有大约1e6左右种。用数位DP求出,每个函数值的出现次数。然后做四维前缀和。再容斥,得到答案。 阅读全文
摘要:
发现所有序列,都能被整合为一个特定的形式,这样就解决了本质不同的问题。然后对这种特定形式计数,用到插板法。简单推一推组合数的式子。 阅读全文
摘要:
枚举x。一个x可行当且仅当,0,1,...,2^x-1都能被表示为S的一个子集的异或和。可以对S建线性基判断。然后每个值会对应一个S的子集,也就是对应一个S的线性基的子集。我们要构造一种方案,把2^x个S的线性基的子集排列,使得相邻两数只有一个二进制位不同。可以用格雷码 阅读全文
摘要:
n为偶数时先手必胜。n为奇数时,所有数之和mod 2n=n,所以只需要找出一个和是n的倍数的方案即可。容易证明,一定存在一种方案,把mod n=0,1,2,...,n-1的数各选一次 阅读全文
摘要:
可以证明,我们总能通过巧妙地安排删除顺序,使得所有“理论上能被删除的数”都被删掉。那么,对于前i个数里最多能删多少个,容易得到递推式 f(i) = f(i-1) + [i>=a(i) and f(i-1)>=i-a(i)]。区间询问。我们对每个i,预处理出使得它能被删掉时,前面最多ban掉多少个数。预处理可以二分+主席树求。询问可以直接在主席树上查询。 阅读全文
摘要:
把覆盖,转化成插入,由此可以得到一个O(n^2)的DP。观察DP转移,发现答案是一堆短多项式的乘积。一般做法是分治FFT,不过本题里可以用倍增+二项式定理去掉一个log。 阅读全文
摘要:
提高十连测。大家快去氪金! 阅读全文
摘要:
设dp(i)表示i棵树必胜的方案数(第一棵树的根可以任意,所有根的方案数加起来)。转移时在前面添加一棵树。枚举添加的这棵树的根。发现系数之和可以预处理出来。不过对每个根都预处理一次,复杂度就是n^2了,所以要换根。求出系数之后,用矩阵快速幂优化这个DP即可。 阅读全文
摘要:
正睿2019CSP赛前冲刺,大部分是戴大爷的题,质量很高,能学到一些有用的套路 阅读全文
摘要:
2019年CSP前的六校联考,那时候大家难度还没有飙起来,还是有不少好题的。 阅读全文
摘要:
m=n-1时一定有解,策略是取最小的和最大的原材料拼成一道菜,然后转化为m,n分别小1的子问题递归下去。m>=n时,可以先取最大的原材料,直到m=n-1。m=n-2时,用DP将所有原材料,划分成两个m=n-1的集合。DP的状态设计比较巧妙,同时需要用到bitset优化 阅读全文
摘要:
先做一个二维DP:dp[u][i]表示点u的祖先边中离它最近的,颜色为1的边,深度为i,此时节点u子树内的边的染色方案数。然后把第二维搬到线段树上,做线段树合并 阅读全文
摘要:
朴素DP,设dp[i][u]表示第i个时刻在第u个点,总共得到的最大愉悦值。用矩阵快速幂优化,需要重新定义一种max运算的矩阵乘法,它也具有结合律。拆边可以完成转移。改成拆点可以进一步优化复杂度。我们要对k个美食节间的每一段时间单独做一次快速幂,太慢了。发现转移矩阵是一样的,可以预处理转移矩阵的2^x幂,就变成log T次向量乘矩阵的乘法。时间复杂度O((5n)^3 log T + k*(5n)^2 log T) 阅读全文
摘要:
NOI2020游记 阅读全文
摘要:
树形DP。设dp[u][x]表示,u的所有祖先(不含u)对u的贡献和为x时,u的子树内最少还需要进行多少次操作。设u和它的祖先的贡献和为y。则dp[u][x]可以从sum(dp[v][y]) + [y!=x] 转移过来。x可能很大,不过可以证明,我们只需要考虑所有l,r这些端点。所以离散化一下即可 阅读全文