题目传送门 传送点I 传送点II 传送点III 题目大意 给定一个棵$n$个点的有根树和整数$D$,给这$n$个点标号,要求每个节点的标号是正整数,且不超过父节点的标号,根节点的标号不得超过D. 很容易地能得到$O(nD)$的动态规划:设$f[i][j]$表示$i$号点标为$j$在它的子树内的方案数. 写写它的转移方程:$f[i][j] = \prod_{s \in Son(i)}\sum_{k = 1}^{j} f[s][k]$. 设$g[i][j]=\sum_{k = 1}^{j}f[i][…
给一个树,每个点的权值为正整数,且不能超过自己的父节点,根节点的最高权值不超过D 问一共有多少种分配工资的方式? 题解: A immediate simple observation is that we can compute the answer in $O(nD) $with a simple dynamic program. How to speed it up though? To speed it up, we need the following lemma. Lemma 1: F…
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…
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)\)的求解. 当然不…
[CF995F]Cowmpany Cowmpensation(多项式插值) 题面 洛谷 CF 题解 我们假装结果是一个关于\(D\)的\(n\)次多项式, 那么,先\(dp\)暴力求解颜色数为\(0..n\)的所有方案数 这是一个\(O(n^2)\)的\(dp\) 然后直接做多项式插值就好了,公式戳这里 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inclu…
[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…
题目传送门 传送门I 传送门II 题目大意 给定一个$n\times m$的网格,每个格子上要么填$1$,要么填$-1$,有$k$个位置上的数是已经填好的,其他位置都是空的.问有多少种填法使得任意一行或一列上的数的乘积为$-1$. $1 \leqslant n, m \leqslant 10^{3}$,$1 \leqslant k < \max (n, m)$. $k$的范围醒目.那么意味着至少存在一行或者一列为空. 假设空的是一行.那么剩下的行只需要满足那一行的乘积为$-1$,而空的这一行对应…
题目传送门 神奇的门I 神奇的门II 题目大意 有$n$组学生要上课2次课,有$m$个教室,编号为$1$到$m$.要确定有多少种不同的安排上课的教室的方案(每组学生都是本质不同的),使得它们满足: 每组学生第一次上课的教室的编号小于等于第二次上课的教室的编号. 第$i$间教室在第一次上课时,恰好有$x_{i}$组学生在场. 第$i$间教室在某次上课时,中间包含的学生组数不能超过$y_{i}$. 输出答案模$10^{9} + 7$. 因为第一次上课恰好有多少人,所以这个方案数是可以直接用组合数,暂…
ZS the Coder and Chris the Baboon has explored Udayland for quite some time. They realize that it consists of n towns numbered from1 to n. There are n directed roads in the Udayland. i-th of them goes from town i to some other town ai (ai ≠ i). ZS th…
codeforces description 一棵\(n\)个节点的树,给每个节点标一个\([1,m]\)之间的编号,要求儿子的权值不大于父亲权值.求方案数.\(n\le3000,n\le10^9\) sol 可以证明答案是关于\(m\)的一个\(n\)次多项式.我不会证. 如果\(P(x)\)是关于\(x\)的\(n\)次多项式,则有 \[P(x)=\sum_{i=0}^{n}(-1)^{n-i}P(i)\frac{x(x-1)...(x-n)}{(n-i)!i!(x-i)}\] 可见杜教\(…