83: 模拟赛 树形dp】的更多相关文章

$des$ $sol$ 维护每个点的子树中的信息以及非子树的信息 $code$ #include <bits/stdc++.h> using namespace std; #define gc getchar() inline int read() { ; char c = gc; ') c = gc; + c - ', c = gc; return x; } #define Rep(i, a, b) for(int i = a; i <= b; i ++) ; ], g[N][]; i…
[10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件结束终止. 每一个测试用例的第一行包含整数n,m和k. 第二行包含n个整数,即s1,s2,-,sn. 输出 对于每一个测试用例,输出一个表示结果的整数. 样例输入 3 2 2 1 2 1 4 2 2 1 2 1 2 样例输出 2 4 提示 \(1 ≤ n ≤ 10^5:1 ≤ m ≤ min{n -…
https://nanti.jisuanke.com/t/41403 2019沈阳网络赛D题 树形dp.一棵树,求任意两个点的距离之和.u-v和v-u算两次.两点之间的距离分为三类,模3等于0,1,2三类,最后输出这三类的总和. 第一种方法.直接累加.遍历到一个点的时候.先计算答案.答案加上所有已经遍历过得点到他的距离之和.同时该点也要加上这个值,同时要加上数量.每次先搜到底统计往下遍历的值,然后回溯的时候统计 回溯的值.因为每次只计算了之前的点到他的距离之和,所以最后的结果要乘以2,因为u-v…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6201 题意:给出一棵树,每个点有一个权值,代表商品的售价,树上每一条边上也有一个权值,代表从这条边经过所需要的花费.现在需要你在树上选择两个点,一个作为买入商品的点,一个作为卖出商品的点,当然需要考虑从买入点到卖出点经过边的花费.使得收益最大.允许买入点和卖出点重合,即收益最小值为0. 解法:我们设1为根节点,假设一开始一个人身上的钱为0.我们设dp[i][0]表示从根节点走到i及其子树并中任一点买…
设定每个节点的上限和下限,之后向上更新,判断是否出现矛盾 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<map> using namespace std; #define MOD 1000000007 ; ; typedef long lon…
给出1-n的序列插入一个bst: 给出T组询问,包含n,h分别代表点数为n,高度为h的树,求所有插入顺序的合法方案数,模1e9+7 样例输入 1 2  1 样例输出 2 #include<bits/stdc++.h> #define LL long long #define rep(i,x,y) for(register int i=x;i<=y;i++) using namespace std; inline int read(){ ,f=;char ch=getchar(); ;ch…
题目描述 儿时的玩具总是使我们留恋,当小皮还是个孩子的时候,对玩具更是情有独钟.小皮是一个兴趣爱好相当广泛且不专一的人,这这让老皮非常地烦恼.也就是说,小皮在不同时刻所想玩的玩具总是会不同,而有心的老皮也会尽量满足他的要求,帮他买一些新玩具. 一开始小皮有一个长度为\(N\)的玩具序列 , 小皮的玩具可以用\(a,b,c,...,z26\)个英文字母表示,小皮可能会有\(q\)种需求,每种需求可以用一个二元组\((x,y)\)表示代表在此时最喜欢\(x\)这种玩具,他希望老皮帮他买回\(y\)个…
没有原题... 囧.. [问题描述] 游戏规则是这样,有n(1<=n<=100)行格子,第一行由n个格子,第二行有n-1个格子,第三行由n-2个格子,……以此类推,第n行有1个格子.要求再这些格子上摆放棋子.摆放的时候要注意,每一个格子只能放一个棋子.同一行的格子摆放必须遵守从左至右的顺序,在一行内从左至右摆放时不能跳过某个格子来摆放.每一行放的棋子数不能超过上一行的棋子数. 输入文件(diagrams.in):仅1行,一个正整数n. 输出文件(diagrams.out):仅1行,方案总数.…
$code$ #include <cstdio> #include <cstring> #include <algorithm> using namespace std; ], l = , r = , ans = ; ][], P[], Q[]; bool check(int L) { memset(dp, , sizeof(dp)); memset(P, , sizeof(P)); memset(Q, , sizeof(Q)); ; i <= n; i++) f…
题目来源:by lzz \(Description\) 给定一张有向图,求对于哪些点,删除它和它的所有连边后,图没有环. \(n\leq 5\times10^5,m\leq 10^6\). \(Solution\) 题目等价于求所有环的交集. 首先两个特判:如果原图没有环,输出所有点:如果删掉原图的某个环后,仍存在环,输出\(0\).这也是不少分了. 先求出图中的某个环,环交当然在这个环上.我们只需要处理这个环. 把环拆成链,发现所有除它外的环只有两种情况: 对于第一种情况, 如果做过这个链的S…