树形dp
lemondinosaur
转圈圈 不停转圈圈 然后摔倒
展开
-
2019.12.07【NOIP提高组】模拟A 组
JZOJ 3918 蛋糕题目把一个矩阵横切三刀,竖切三刀,问当中的子矩阵总和最小的最大能是多少分析首先相当暴力的方法就是暴力切的位置然后用前缀和,时间复杂度应该是O(n6)O(n^6)O(n6),但是这个东西是二分的套路,考虑二分答案,首先竖切三刀,然后O(n)O(n)O(n)判断,只要能分成4段或以上即为合法代码#include <cstdio>#include &...原创 2019-12-13 22:06:23 · 273 阅读 · 0 评论 -
2019.11.06【NOIP提高组】模拟 B 组
解题报告JZOJ 3843 寻找羔羊题目分析代码JZOJ 3844 统计损失题目分析代码JZOJ 3845 简单题题目分析代码JZOJ 3843 寻找羔羊题目给定一个由小写字母组成的字符串,寻找包含agnus的子串的个数。注意:当且仅当两个子串的起始位置和终点不同时,这两个子串属于不同的子串。分析若找到一个羔羊单词,那么计算左右可扩展的范围,乘起来再求和即可代码#include ...原创 2019-11-06 15:32:41 · 393 阅读 · 0 评论 -
#tarjan,树形dp,dfs序#洛谷 2515 软件安装
题目分析题目乍一看不就是树上背包O(n2m)O(n^2m)O(n2m)吗,再加个dfs序优化就可以O(nm)O(nm)O(nm)了,其实不然,因为有些软件先行条件是会形成一个环的,所以还要用tarjan缩点,由于思路比较简单,主要考码题能力,所以就不多说了代码#include <cstdio>#include <cctype>#include <cst...原创 2019-10-28 20:39:17 · 149 阅读 · 0 评论 -
2018.07.07【2018提高组】模拟C组
前言今天各种水分,就水到了50分,(dalao太强了)题目JZOJ 1494 密码题目大意:高精度乘法(题目数据范围:102410241024,实际数据范围1024102410^{24},一堆WA了) 由于比较水,所以直接贴代码!(压8位)代码#include <cstdio>#include <cctype>#includ...原创 2018-07-07 22:31:09 · 189 阅读 · 0 评论 -
2019.01.24【NOIP提高组】模拟 B 组
第一次AKJZOJ 3912 超氧化钾题目分析代码JZOJ 3903 艰难的选择题目分析代码JZOJ 3914 人品问题题目分析代码后续JZOJ 3912 超氧化钾题目求∑i=1yxmod&amp;ThinSpace;&amp;ThinSpace;y\sum_{i=1}^yx \mod y∑i=1yxmody分析那么这道题其实高仿余数求和的题目,my 题解那么首先这个式子可以改写成...原创 2019-01-24 12:24:29 · 413 阅读 · 0 评论 -
2018.12.22【NOIP提高组】模拟B组
解题报告JZOJ 2700 数字题目分析代码JZOJ 3511 cza的蛋糕题目分析代码JZOJ 3519 灵能矩阵题目分析代码后续JZOJ 2700 数字题目设S(n)为各位数字之和,且当n&gt;9时,S(n)=S(S(n))设S(n)为各位数字之和,且当n&gt;9时,S(n)=S(S(n))设S(n)为各位数字之和,且当n>9时,S(n)=S(S(n))如果一...原创 2018-12-26 17:51:45 · 177 阅读 · 0 评论 -
#树形dp#JZOJ 1167 洛谷 1040 加分二叉树
题目大意给出一棵二叉树的中序遍历,规定叶子节点的加分是1,对于非叶子节点,分数是左右孩子和该节点的分数的和,求最大加分的二叉树及其前序遍历分析可以用类似于记忆化搜索的树形dp,f[l][r]=dp(l,k−1)∗dp(k+1,r)+f[k][k]f[l][r]=dp(l,k−1)∗dp(k+1,r)+f[k][k]f[l][r]=dp(l,k-1)*dp(k+1,r)+f[k][k...原创 2018-07-09 16:57:02 · 154 阅读 · 0 评论 -
#树形dp#JZOJ 1661 洛谷 2015 二叉苹果树
题目在一棵二叉苹果树上,保留k根枝条,使剩余的苹果数最大。分析树形dp,f[i][j]f[i][j]f[i][j]表示第i个节点保留j根枝条的最大苹果数 状态转移方程:f[当前的点][j]=max(f[当前的点][j−k−1]+f[孩子][k]+e[i].w)f[当前的点][j]=max(f[当前的点][j−k−1]+f[孩子][k]+e[i].w)f[当前的点][j]=\m...原创 2018-07-09 07:34:53 · 196 阅读 · 0 评论 -
#树形dp,二次扫描换根法#poj 3585 Accumulation Degree
题目求一棵树的最大流分析这道题可以用树形dp解决,以任意一个点为源点求出每个点的流量,再用二次扫描换根法找到最优的根 流量求法:if (deg[e[i].y]==1) d[x]+=e[i].w; else d[x]+=min(d[e[i].y],e[i].w);//度为1就是边权,否则要综合子节点去考虑动态规划:if (deg[x]==1) f[e[i].y]=d...原创 2018-08-20 10:30:10 · 271 阅读 · 0 评论 -
#tarjan,树形dp#洛谷 3387 【模板】缩点
题目给定一个nnn个点mmm条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。分析那么这道题首先要把环缩点,然后在有向无环图跑一遍dp,但是tarjan还是很难理解代码#include <cstdio>#include <cctype>#incl...原创 2019-04-07 10:52:59 · 199 阅读 · 0 评论 -
2019.07.10【NOIP提高组】模拟 A 组
解题报告BZOJ 3257 JZOJ 3347 树的难题分析代码BZOJ 3258 JZOJ 3348 秘密任务分析代码JZOJ 3379 查询题目分析代码BZOJ 3257 JZOJ 3347 树的难题题目分析树形dp,设dp[x][i][j]dp[x][i][j]dp[x][i][j]表示第xxx个点,有无黑点,白点个数为jjj,若j≥2j\geq 2j≥2视作2的最小代价那么dp...原创 2019-07-11 15:10:33 · 287 阅读 · 0 评论 -
2019.08.10【NOIP提高组】模拟 A 组
解题报告JZOJ 3736 数学题题目分析代码JZOJ 3737 挖宝藏题目分析代码JZOJ 3738 理想城市 IOI 2012 Ideal City题目分析代码JZOJ 3736 数学题题目分析代码#include <cstdio>#include <cctype>#define rr register#define swap(a,b) (a^...原创 2019-08-11 15:23:38 · 327 阅读 · 0 评论 -
#第二类斯特林数,树形dp#洛谷 4827 JZOJ 1940 BZOJ 2159 Crash的文明世界
题目分析ans(x)=∑i=1n∑j=0kS(k,j)j!Cdis(i,x)jans(x)=\sum_{i=1}^n\sum_{j=0}^kS(k,j)j!C_{dis(i,x)}^jans(x)=i=1∑nj=0∑kS(k,j)j!Cdis(i,x)j=∑j=0kS(k,j)j!∑i=1nCdis(i,x)−1j+Cdis(i,x)−1j−1=\sum_{j=0}^kS(k,j)j...原创 2019-08-24 12:03:40 · 145 阅读 · 0 评论 -
#树形dp#BZOJ 2152 洛谷 2634 聪聪可可
题目在一棵nnn个点的树上找两个可以相同的点,问这两点间路径和是3的倍数的概率分析树形dp,方程比较简单,但是求答案比较难,所以详见代码,时间复杂度O(n)O(n)O(n)代码#include <cstdio>#include <cctype>#define rr registerusing namespace std;const int N=2001...原创 2019-10-05 09:01:19 · 136 阅读 · 0 评论 -
2018年10月30日提高组
解题报告JZOJ 5913 林下风气题目分析代码JZOJ 5194 盟主的忧虑题目分析代码JZOJ 5907 轻功题目分析代码JZOJ 5194 盟主的忧虑题目分析代码JZOJ 5907 轻功题目分析代码JZOJ 5194 盟主的忧虑题目分析代码JZOJ 5907 轻功题目分析代码JZOJ 5194 盟主的忧虑题目分析代码JZOJ 5907 轻功题目分析代码JZOJ 5913 林下风气题目问...原创 2018-10-30 16:24:54 · 508 阅读 · 0 评论 -
2018_9_23 模拟赛
今日比赛前言:JZOJ 5775 农夫约的假期题目分析代码JZOJ 5776 小x游世界树题目分析代码前言:感觉自己越来越渺小了JZOJ 5775 农夫约的假期题目在一个平面,有nnn个点,找出一个点使nnn个点到该点的曼哈顿距离(∑abs(xi−xj)+abs(yi+yj))(\sum abs(x_i-x_j)+abs(y_i+y_j))(∑abs(xi−xj)+abs(yi+...原创 2018-09-23 14:20:49 · 521 阅读 · 0 评论 -
#基环树,树形dp#洛谷 2607 JZOJ 1723 骑士
题目有环的没有上司的舞会分析那么有环那就不是树形dp了,如何处理环,可以先连起来,树形dp,再把环断掉,再跑一次树形dp,两次的最大值即为答案代码#include <cstdio>#include <cctype>#define rr registerusing namespace std;const int N=1000010; long long ...原创 2019-01-28 12:06:14 · 162 阅读 · 0 评论 -
#单调队列,树形dp#ssl 2443 2570 bzoj 2500 幸福的道路
题目求分析代码#include &amp;lt;cstdio&amp;gt;#define N 1000001struct node{int y,w,next;}e[N]; struct rec{int w,num;}d1[N],d2[N];int ls[N],n,m,q1[N],q2[N];int in(){ int ans=0; char c=getchar(...原创 2018-08-17 16:56:45 · 205 阅读 · 0 评论 -
#树形dp#洛谷 1352 jzoj 1662 codevs 1380 没有上司的舞会
题目在一棵关系树上,父节点是子节点的上司,如果有子节点,那么不可以有它们的父节点,每个节点都有值,求选择节点的最大值。分析树形dp,首先找到根,有两种可能 f[x][0]表示不选节点x的最大值,f[x][1]表示选节点x的最大值(初始值就是节点的值)f[x][0]表示不选节点x的最大值,f[x][1]表示选节点x的最大值(初始值就是节点的值)f[x][0]表示不选节点x的最大...原创 2018-07-14 10:43:46 · 130 阅读 · 0 评论 -
#树形dp#洛谷 2014 codevs 1378 jzoj 1486 选课
题目在N门选修课中选择M门选修课,选修课可能需要学习先修课,求可得到的最大学分。分析用树形dp,f[x][v]f[x][v]f[x][v]表示以x为根的子树中选修v门课的最大学分, f[x][v]=max∑numi=1ci=v−1(f[son][ci])+score[x]f[x][v]=max∑i=1numci=v−1(f[son][ci])+score[x]f[x][v]=...原创 2018-07-14 11:56:35 · 220 阅读 · 0 评论 -
#树形dp#jzoj 1982 数字转换
题目如果一个数x的约数和(不包括它本身,下同)比它本身小,那么x可以变成它的约数和;如果对于某个y>x且y的约数和为x,那么x也可以变成y。例如,4可以变为3,1可以变为7。限定所有的数字变换在不超过n的正整数范围内进行,求不断进行数字变换且没有重复数字出现的最多变换步数。分析这道题是求树的最长链,d1id1id1_i表示以i为根的树到叶子节点的最大值,d2id2id2_...原创 2018-07-14 15:06:24 · 601 阅读 · 0 评论 -
#树形dp#jzoj 1663 洛谷 2016 战略游戏
题目最少安排多少士兵使士兵能瞭望所有的路(在一棵树上)分析用树形dp, f[x][0]表示在点x不放士兵的最少安排数,f[x][1]表示放士兵的最少安排数(初始值为1)f[x][0]表示在点x不放士兵的最少安排数,f[x][1]表示放士兵的最少安排数(初始值为1)f[x][0]表示在点x不放士兵的最少安排数,f[x][1]表示放士兵的最少安排数(初始值为1) 明显可得f[x...原创 2018-07-14 15:33:28 · 296 阅读 · 0 评论 -
#树形dp#jzoj 2005 皇宫看守
题目宫殿间可以相互看见,在看守全部宫殿的前提下,使花费的经费最少。分析f[i][0]表示i节点在父节点可看到时,以i为根的子树需要安排的最少士兵数f[i][0]表示i节点在父节点可看到时,以i为根的子树需要安排的最少士兵数f[i][0]表示i节点在父节点可看到时,以i为根的子树需要安排的最少士兵数 f[i][1]表示i节点在子节点可看到时,以i为根的子树需要安排的最少士兵数f...原创 2018-07-14 17:37:58 · 413 阅读 · 0 评论 -
#树形dp#洛谷 3354 河流
题目一颗有N+1个结点的树,树中的每个结点可能会生产出一些产品。这些产品要么就地加工(要有加工厂才行),要么运送到它的父亲结点那儿去。现在在整棵树的根结点处已经有了一个产品加工厂,而且所有的产品最终必须在某个加工厂加工才行。由于运费昂贵,不可能将所有的产品都运送到根节点处加工。现在决定在树中的某些结点新增总共K个加工厂,现在要你选择这K个加工厂的厂址。 分析树形dp,用兄弟孩子...原创 2018-07-15 18:01:09 · 170 阅读 · 0 评论 -
#树形dp#JZOJ 1087 鱼肉炸弹
题目有n栋楼房,两栋楼房可以看见当且仅当中间的楼房不高于两栋楼房,使用炸弹可破坏某一栋楼房,问使用K枚炸弹使得能看见楼房i的楼房数的最大值最小。分析树形dp,容易得出 f[x][i+j]=min(f[x][i+j],max(f[l][i],f[r][j])+b[x])f[x][i+j]=min(f[x][i+j],max(f[l][i],f[r][j])+b[x])f[x][...原创 2018-07-16 14:42:45 · 277 阅读 · 0 评论 -
#树形dp#jzoj 1824 debug
题目删去最少的边,使每个节点的度不超过2。分析考虑一个邻接点不是叶子节点的点,那么优先选择割断与父亲节点的边。 why? First:如果该点只有一个叶子节点,那么删去与叶子节点的边不需要这么做 Second:如果该点有多个叶子节点,保留一条原来被删除与叶子节点之间的边,得到的仍然是一个最优解 所以就可以构造出算法,从最下方的非叶子节点开始,当度超过2,那么累加删去的边...原创 2018-07-16 19:59:59 · 156 阅读 · 0 评论 -
#树形dp#jzoj 1010 洛谷 3155 叶子的颜色
题目对于每个叶结点u,定义c[u]为从u到根结点的简单路径上第一个有色结点的颜色。给出每个c[u]的值,设计着色方案,使得着色结点的个数尽量少。分析这道题可以用树形dp,f[x][0/1]f[x][0/1]f[x][0/1]表示x点不着色/着色的最小着色结点个数, 容易得到f[x][0]=∑min(f[son][0]−1,f[son][1])f[x][0]=∑min(f[so...原创 2018-07-17 20:19:12 · 276 阅读 · 0 评论 -
2018.02.07【GDOI2018】模拟 B组 & C组
感受到了绝望JZOJ NO.1 教主的花园当没有墙的直接求曼哈顿距离,否则二分求最近的出口。三种情况:(1)没有墙(2)出口在两点之间(3)出口在两点之外#pragma GCC optimize(2)#include <cstdio>#include <algorithm>#include <原创 2018-02-21 14:37:50 · 194 阅读 · 0 评论 -
2018.02.08【GDOI2018】模拟C组
终于结束了。。。JZOJ NO.1 【GDOI2005】积木分发作为最水的一道题。快排需要的积木,从小到大模拟,给不了NO,否则就YES。#pragma GCC optimize(2)#include <cstdio>#include <algorithm>#include <cctype>using namespace std;...原创 2018-02-21 18:14:26 · 241 阅读 · 0 评论 -
2018.07.12【2018提高组】模拟C组
前言:OTL(again)JZOJ 4272 序章-弗兰德的秘密题目求两棵树的最大同构(自(tai)行(cao)百(shuai)科(le))分析树形dp,f[i][j]f[i][j]f[i][j]表示第1棵树的用iii当根节点和第2棵树的用jjj当根节点的最大同构 可得f[i][j]=max(f[i.son][j.son]+1)f[i][j]=max(f[...原创 2018-07-12 22:30:42 · 180 阅读 · 0 评论 -
JZOJ 3419 最大利润#树形动态规划#
Description 政府邀请了你在火车站开饭店,但不允许同时在两个相连接的火车站开。任意两个火车站有且只有一条路径,每个火车站最多有50个和它相连接的火车站。 告诉你每个火车站的利润,问你可以获得的最大利润为多少。 最佳投资方案是在1,2,5,6这4个火车站开饭店可以获得利润为90树形dp,f[i]表示选择这个车站的最大利润,g[i]表示不选择这个车站的最...原创 2018-02-20 17:47:18 · 231 阅读 · 0 评论