摘要: 可以发现,假如在序列中遇到一个数为 \(2\) ,也就是有两个子节点,那么接下来的全部数字都是描述左树的,一直到左树被遍历完成. 这让你想到了什么? 当然是DFS啦. 根据DFS我们有下面这样的存图思路: 假如遇到 \(2\) ,新建一个节点,分别对这个节点递归左右子树 假如遇到 \(1\) ,新建 阅读全文
posted @ 2024-02-16 22:02 HaneDaniko 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 该题目是一道树上背包问题,题目的全部思路已写在 树上背包问题 中. 该题目代码只供辅助理解. struct edge{ int to,w; }; vector<edge> e[1001]; int n,m,f[1001][1001]; void dfs(int s){ for(edge i:e[s] 阅读全文
posted @ 2024-02-16 21:23 HaneDaniko 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 树上背包问题的使用场景 当一个问题满足树的结构,而且需要让我们选取某些边或某些点,使权值取到最值。这样的问题是树上背包问题. 树上背包模板 树上背包问题使用dfs. 一般来说,树上背包问题的基本框架如下图: void dfs(int s){ for(i:遍历s的全部子节点){ dfs(i); for 阅读全文
posted @ 2024-02-16 20:47 HaneDaniko 阅读(31) 评论(0) 推荐(1) 编辑
摘要: 先帝创业未半,忽闻岸上踏歌声,铮铮然有京都声。公大笑乐,添酒回灯重开宴,移船相近邀相见。奈何夏水襄陵,欲渡黄河冰塞川,行路难,行路难!!! 遂出,便舍船,从口入。复行数十步,沿溯阻绝。曰:山回路转不见君,必有留爷处!怒而飞,其翼若垂天之云。其视下也,一屠晚归,担中肉尽。其人曰:天果积气,日月星宿,不 阅读全文
posted @ 2024-02-16 12:10 HaneDaniko 阅读(32) 评论(0) 推荐(0) 编辑
摘要: #1 HDK: 嗯..开一维这个已有状态,再开两位维这个坐标,嗯对,再开一维这个选择与否啊. HDK: 这傻逼题怎么这么难写😥. HDk: 我跟你们说,写DP别他妈乱开,乱开你写到土里也写不出来. #2 (一群人正在打羽毛球) CTH的羽毛球从学校围栏飞到牛棚里去了. CTH:(不可名状的尖叫) 阅读全文
posted @ 2024-02-16 11:57 HaneDaniko 阅读(99) 评论(1) 推荐(5) 编辑
摘要: 同机房大佬也写了这道题的 题解. 我在另一篇 题解 中提到了这类问题的通解,接下来我们依照此通解思考该题. 问题处理 首先我们来定义三角形的表示方式. 定义 \(f[i][j]\) 表示三角形 \((i,j)\) 的最大边长,其中三角形 \((i,j)\) 为垂直顶点坐标为 \((i,j)\) 的三 阅读全文
posted @ 2024-02-16 10:27 HaneDaniko 阅读(21) 评论(0) 推荐(1) 编辑
摘要: 同机房大佬也写了这题的 题解. 通解分析 此类问题我通常喜欢归纳成一类,即阻碍联通的坐标DP. 既然是阻碍联通,那么此类问题的通用思路是这样的: 首先将dp数组图形化. 一般用一个特定图形上的特定点来标识整个图形. 比如假如我需要找正方形的最大面积,我可以用左下角坐标来表示整个正方形. 找三角形最大 阅读全文
posted @ 2024-02-16 08:31 HaneDaniko 阅读(24) 评论(2) 推荐(1) 编辑
/**/