01 2019 档案

摘要:大漩涡传送门 标签是树形dp,但其实没啥必要用dp。 显然数据给出的是树形结构,要求所有叶子节点到根节点路径长度相同,可以想到自下向上地进行维护。 首先从根节点dfs,找到叶子节点后向上回溯,先维护父节点的所有子节点到父节点最大边权。 然后维护ans,ans为最大边权减去所有到子节点的边权。因为边权 阅读全文
posted @ 2019-01-31 09:17 .Terena 阅读(146) 评论(0) 推荐(0)
摘要:银月城传送门 树形dp+1 状态好想得不得了:定义f[i][j]为i点在j步以内的所有奶牛数 转移方程的初步形式也很容易得出来:f[i][j]=sum(f[s][j-1]) 但是这样会有一个问题,如果j>1,对于每个子结点s,都有继续向下推下去,但这样显然会重复累加一些边。 所以需要减去重复累加的边 阅读全文
posted @ 2019-01-30 16:28 .Terena 阅读(133) 评论(0) 推荐(0)
摘要:银月城传送门 又一道区间的dp。 状态dp[i][j]表示队列中i——j可行的排列方法。 首先定义边界:对于每一个点,dp[i][i]=1(显然) 然后导一下状态转移方程,大区间必然由小区间转移而来,但是转移方法可以有多种。完成区间排列的最后一步,既可以由在左边插入i完成,也可以通过在右边插入j完成 阅读全文
posted @ 2019-01-30 16:13 .Terena 阅读(112) 评论(0) 推荐(0)
摘要:不稳定的传送门 基础区间的dp题 状态很容易得出:dp[i][j]表示区间i——j可以合成的最大数。 状态转移方程很显然:if (dp[i][k]==dp[k+1][j]) dp[i][j]=max(dp[i][j],dp[i][k]+1) 那么只需要先枚举结点,在以该结点为中心向两边枚举长度即可, 阅读全文
posted @ 2019-01-30 09:09 .Terena 阅读(125) 评论(0) 推荐(0)
摘要:铁炉堡传送门 一道树状dp,在处理子问题上的做法真的就是单纯的标准dfs树状dp。从叶子节点向上枚举可以得到每个节点的最大子树,但这题的问题在于,没有给出根节点,而且每个节点都可以作为根节点。 那么我们只需要枚举每个结点作为根节点时的情况。在每种情况中,遍历与根结点相连的结点,求出以该节点为根节点的 阅读全文
posted @ 2019-01-29 21:35 .Terena 阅读(139) 评论(1) 推荐(0)
摘要:传送门 声明几个定义: 1.二分图 对于一个图G=(V,E),若能将其点集分为两个互不相交的两个子集X、Y,使得X∩Y=∅,且对于G的边集V,若其所有边的顶点全部一侧属于X,一侧属于Y,则称图G为一个二分图。 2.二分图匹配 对于一个二分图G的子图M,若M的边集E的的任意两条边都不连接同一个顶点,则 阅读全文
posted @ 2019-01-21 10:41 .Terena 阅读(158) 评论(1) 推荐(0)
摘要:应用的是dijkstra算法,这种算法的思想类似于贪心。 首先,将所有点分为已知最短路和未知最短路两类。开始时,只有出发点的最短路已知,为0,其余点都标记为正无穷。我们要求出出发点到所有点的最短路径,因此进行点数轮循环,每轮循环中,遍历与已知点间有边相连的点,更新与出发点的最短路径。然后从所有更新的 阅读全文
posted @ 2019-01-21 09:12 .Terena 阅读(270) 评论(0) 推荐(0)
摘要:借着题解系统得梳理一下对于线段树的理解 先建立一个结构体为下面代码实现打基础 首先,什么是线段树呢?线段树属于完全二叉树,其中每一个子节点而言,都表示整个序列中的一段子区间。由第一层结点储存单个元素,每个子节点不断向自己的父亲节点传递信息,而父节点存储的信息则是他的每一个子节点信息的整合。 用数组建 阅读全文
posted @ 2019-01-20 23:31 .Terena 阅读(173) 评论(1) 推荐(0)
摘要:多重背包问题模版 传送门 问题介于完全背包和01背包之间,不同在于每个物品有确定的数量。 看到这道题的第一思路相比一定是把每种物体分成若干个个体然后01背包跑一遍。但如果总物体数太多的话,显然肯定会无情超时,因此我们要在分割每种物体时应用一点技巧来进行优化。 这里用到的是二进制进行分割优化。 首先要 阅读全文
posted @ 2019-01-19 15:35 .Terena 阅读(173) 评论(0) 推荐(0)
摘要:传送门 动规基础部分,不废话了看代码肯定能懂 阅读全文
posted @ 2019-01-19 09:20 .Terena 阅读(82) 评论(0) 推荐(0)
摘要:校内集训的第二天,讲解了bfs、dfs和dp。 今天的重点主要是01背包问题,这里就简单谈谈一种理解得比较好的做法。 传送门 读完题后可知,本题与应用于贪心算法中的背包问题有本质上的不同,那就是每件物品带有自己的权重,常规的贪心思路不可行,因此要借助动态规划来实现。 大体思路为将当前问题通过类似于递 阅读全文
posted @ 2019-01-18 22:16 .Terena 阅读(261) 评论(0) 推荐(0)