[CF9D]How Many Trees?_动态规划_树形dp_ntt
How many trees?
题目链接:https://www.codeforces.com/contest/9/problem/D
数据范围:略。
题解:
水题。
$f_{i,j}$表示$i$个节点,最大深度为$j$的方案,$g_{i,j}=\sum\limits_{k = 1}^{j - 1} f_{i, k}$。
显然,如果我们枚举深度的话,可以用$ntt$优化卷积。
这里写的$O(n^3)$。
代码:
- #include <bits/stdc++.h>
- #define setIO(s) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout)
- #define N 2010
- using namespace std;
- typedef long long ll;
- const int mod = 998244353 ;
- int qpow(int x, int y) {
- int ans = 1;
- while (y) {
- if (y & 1) {
- ans = (ll)ans * x % mod;
- }
- y >>= 1;
- x = (ll)x * x % mod;
- }
- return ans;
- }
- int f[N][N], g[N][N], a[N], b[N];
- int main() {
- // setIO("count");
- int n, h;
- cin >> n >> h ;
- f[1][1] = 1;
- g[0][0] = 1;
- for (int dep = 1; dep <= n; dep ++ ) {
- g[dep][0] = 1;
- }
- for (int dep = 2; dep <= n; dep ++ ) {
- g[dep][1] = 1;
- }
- for (int dep = 2; dep <= n; dep ++ ) {
- // for (int i = 1; i <= n; i ++ ) {
- // a[i] = f[dep - 1][i], b[i] = g[dep - 1][i];
- // }
- // a * a + 2 * a * b
- for (int l = 0; l <= n; l ++ ) {
- for (int r = 0; r <= n; r ++ ) {
- if (l + r + 1 <= n) {
- (f[dep][l + r + 1] += (ll)f[dep - 1][l] * f[dep - 1][r] % mod) %= mod;
- (f[dep][l + r + 1] += (ll)f[dep - 1][l] * g[dep - 1][r] % mod * 2 % mod) %= mod;
- }
- }
- }
- for (int i = 1; i <= n; i ++ ) {
- g[dep][i] = (g[dep - 1][i] + f[dep - 1][i]) % mod;
- }
- // printf("Dep : %d\n", dep);
- // for (int j = 1; j <= n; j ++ ) {
- // printf("%d ", f[dep][j]);
- // }
- // puts("");
- }
- int ans = 0;
- for (int i = h; i <= n; i ++ ) {
- (ans +=
- f[i][n]) %= mod;
- }
- cout << ans << endl ;
- return 0;
- }
[CF9D]How Many Trees?_动态规划_树形dp_ntt的更多相关文章
- [bzoj1855][Scoi2010]股票交易_动态规划_单调队列
股票交易 bzoj-1855 Scoi-2010 题目大意:说不明白题意系列++...题目链接 注释:略. 想法:这个题还是挺难的. 动态规划没跑了 状态:dp[i][j]表示第i天手里有j个股票的最 ...
- [bzoj3622]已经没有什么好害怕的了_动态规划_容斥原理
bzoj-3622 已经没有什么好害怕的了 题目大意: 数据范围:$1\le n \le 2000$ , $0\le k\le n$. 想法: 首先,不难求出药片比糖果小的组数. 紧接着,我开始的想法 ...
- [bzoj4282]慎二的随机数列_动态规划_贪心
慎二的随机数列 bzoj-4282 题目大意:一个序列,序列上有一些数是给定的,而有一些位置上的数可以任意选择.问最长上升子序列. 注释:$1\le n\le 10^5$. 想法:结论:逢N必选.N是 ...
- [bzoj1879][Sdoi2009]Bill的挑战_动态规划_状压dp
Bill的挑战 bzoj-1879 Sdoi-2009 题目大意: 注释:$1\le t \le 5$,$1\le m \le 15$,$1\le length \le 50$. 想法: 又是一个看数 ...
- [bzoj1047][HAOI2007]理想的正方形_动态规划_单调队列
理想的正方形 bzoj-1047 HAOI-2007 题目大意:有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 注释:$2\le a, ...
- [luogu1156]垃圾陷阱_动态规划_背包dp
垃圾陷阱 luogu-1156 题目大意:Holsteins在距离地面D英尺的地方,FJ间隔时间ti会往下扔第i个垃圾.Holsteins对待每一个垃圾都会选择吃掉或者垫高.Holsteins有10个 ...
- [bzoj1195][HNOI2006]最短母串_动态规划_状压dp
最短母串 bzoj-1195 HNOI-2006 题目大意:给一个包含n个字符串的字符集,求一个字典序最小的字符串使得字符集中所有的串都是该串的子串. 注释:$1\le n\le 12$,$1\le ...
- [bzoj1708][Usaco2007 Oct]Money奶牛的硬币_动态规划_背包dp
Money奶牛的硬币 bzoj-1708 Usaco-2007 Oct 题目大意:在创立了她们自己的政权之后,奶牛们决定推广新的货币系统.在强烈的叛逆心理的驱使下,她们准备使用奇怪的面值.在传统的货币 ...
- [bzoj1606][Usaco2008 Dec]Hay For Sale 购买干草_动态规划_背包dp
Hay For Sale 购买干草 bzoj-1606 Usaco-2008 Dec 题目大意:约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单 ...
随机推荐
- 2019暑期金华集训 Day5 树上数据结构
自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查 ...
- WARNING: You are using pip version 19.1.1, however version 19.2.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
pip3 install --upgrade pip
- Android 照片上传
解释全在代码中: // 拍照上传 private OnClickListener mUploadClickListener = new OnClickListener() { public void ...
- CodeForces 1202F(数论,整除分块)
题目 CodeForces 1213G 做法 假设有\(P\)个完整的循环块,假设此时答案为\(K\)(实际答案可能有多种),即每块完整块长度为\(K\),则\(P=\left \lfloor \fr ...
- dhcp自动分配地址
- GO语言strconv包的使用
Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换. strconv包 strconv包实现了基本数据类型与其字符串表示的转换,官方文档中文版. string与int类型转换 Ato ...
- wcf必知必会以及与Webapi的区别
快速阅读 介绍wcf中的信息交换模式MEP以及数据在传输过程中的序列化,endpont的介绍和wcf的三种实例模式以及安全模式 以及和Webapi的简单对比. wcf介绍 支持跨平台. 支持多种协议 ...
- TL-WR941N路由器刷DD-WRT和OPENWRT教程及使用花生壳
今天没事做,于是决定把自己的TL-WR941N路由器刷成OPENWRT系统的.虽然说没买小米路由,但是刷成OPENWRT系统的话还是能增强不少的功能.下面写出经过一下午折腾的详细安装步骤,同样适用于其 ...
- Unity火爆插件Behavior Designer行为树插件学习
如果要让游戏里的角色或者NPC能执行预设的AI逻辑,最简单的用IF..ELSE...神器既可以实现, 但是再复杂的一般用经典的状态机来切换状态,但是写起来比较麻烦.相对的,行为树(Behavior T ...
- Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'kindergarten.n.stuMChkTime' which is not functionally dependent on columns in GROUP BY clause; this is in
错误原因: sql _mode中only _full _group _by不兼容的问题 解决思路: 既然是only _full _group _by不兼容,那就把它去掉就好啦 show var ...