Description 有一棵树,现在要给每个节点赋一个在1到D之间的权值,问有多少种方案满足任意一个节点的权值都不大于其父亲的权值. n<=3000,D<=1e9 题面 Solution 容易发现 \(f(D)\) 是一个 \(n\) 次多项式. 求出 \(f(1),f(2),...,f(n+1)\) 之后拉格朗日插值即可. #include<bits/stdc++.h> using namespace std; const int N=3010,mod=1e9+7; int n…
传送门 题意: 给出一颗树,每个结点有取值范围\([1,D]\). 现在有限制条件:对于一个子树,根节点的取值要大于等于子数内各结点的取值. 问有多少种取值方案. 思路: 手画一下发现,对于一颗大小为\(sz\)的数,最终的答案为一个\(sz+1\)次为最高次幂的多项式. 因为节点数\(n\leq 3000\),所以暴力求出后插值即可. 简略证明:对于一个链,显然,一个长度为\(x\)的链,最终的结果为\(x+1\)次的多项式:考虑两条链的合并:长度为\(x\)的链和长度为\(y\)的链,显然两…
题意:一个数,每个节点取值是1-d,父亲比儿子节点值要大,求方案数 题解:\(dp[u][x]=\prod_{v}\sum_{i=1}^xdp[v][i]\),v是u的子节点,先预处理出前3000项,如果d大于3000,用这些结果插值即可 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) //#pragma GCC optimize("unroll-loops") //#pragm…
[CF995F]Cowmpany Cowmpensation(多项式插值) 题面 洛谷 CF 题解 我们假装结果是一个关于\(D\)的\(n\)次多项式, 那么,先\(dp\)暴力求解颜色数为\(0..n\)的所有方案数 这是一个\(O(n^2)\)的\(dp\) 然后直接做多项式插值就好了,公式戳这里 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inclu…
题目:http://codeforces.com/contest/622/problem/F 设 f(x) = 1^k + 2^k + ... + n^k 则 f(x) - f(x-1) = x^k 因为差值是 k 次的,所以 f 的次数应该是 k+1: 算出 k+2 个值就可以用拉格朗日插值求解了: 但是 k^2 会 T: #include<iostream> #include<cstdio> #include<cstring> #include<algorit…
The Sum of the k-th Powers There are well-known formulas: , , . Also mathematicians found similar formulas for higher degrees. Find the value of the sum modulo 109 + 7 (so you should find the remainder after dividing the answer by the value 109 + 7).…
CF995F Cowmpany Cowmpensation Solution 这道题目可以看出我的代码能力是有多渣(代码能力严重退化) 我们先考虑dp,很容易写出方程: 设\(f_{i,j}\)表示以\(i\)为根的子树中\(i\)的值为\(j\),那么转移为: \[ \begin{aligned} f_{i,j}=\prod_{v\in son_u}\sum_{k=1}^j{f_{v,j}} \end{aligned} \] 这个东西很明显可以前缀和优化变成\(O(n^2)\)的求解. 当然不…
拉格朗日插值优化DP 模拟赛出现神秘插值,太难啦!! 回忆拉格朗日插值是用来做什么的 对于一个多项式\(F(x)\),如果已知它的次数为\(m - 1\),且已知\(m\)个点值,那么可以得到 \[F(k) = \sum_{i=1}^{m} y_i \prod_{i \neq j} \frac{k-x_j}{x_i - x_j} \] 所以,如果我们知道要求的东西是一个次数比较友好的多项式且容易求出一些点值,那么就可以把答案插出来. 来看两道例题 CF995F Cowmpany Cowmpens…
[CF995F]Cowmpany Cowmpensation 题面 树形结构,\(n\)个点,给每个节点分配工资\([1,d]\),子节点不能超过父亲节点的工资,问有多少种分配方案 其中\(n\leq3000,d\leq10^9\) 题解 先上一个\(O(nd)\)的\(dp\): 设\(f[u][j]\)表示点\(u\)分配的工资为\(j\)的方案数 那么转移时: 先转移\(f[u][j]=\prod_{v\in son_u}f[v][j]\) 再转移\(f[u][j]=f[u][j]+f[u…
常系数齐次线性递推 具体记在笔记本上了,以后可能补照片,这里稍微写一下,主要贴代码. 概述 形式: \[ h_n = a_1 h_{n-1}+a_2h_{n-2}+...+a_kh_{n-k} \] 矩阵乘法是\(O(k^3 \log n)\) 利用特征多项式可以做到\(O(k^2\log n)\) 特征多项式 特征值和特征向量 特征多项式 \[ f(\lambda) = \mid M - \lambda I\mid \] 是关于\(\lambda\)的\(n\)次多项式 根据\(Cayley-…