摘要:
题意:给一棵树,在树中删除一些边,使得有一个连通块刚好为p个节点,问最少需要删除多少条边?思路: 因为任一条边都可能需要被删除,独立出来的具有p个节点的连通块可能在任意一处地方。先从根开始DFS,然后进行树DP,dp[t][i]表示在以t为根的子树中删除i个点需要删除多少条边。dp[t][n-p]... 阅读全文
摘要:
题意:给定一棵树,n个节点,其中有m个叶子表示的是用户,其他点表示中转器, 每条边都有权值,每个用户i愿意给的钱w[i],问如果在不亏钱的情况下能为多少用户转播足球比赛?思路: 其实就是要选出部分叶子节点,其花费=所选叶子权值 - 经过的所有边权(每条边只算1次花费)。 那么对于每个节点,可以考... 阅读全文
摘要:
题意:给一个树形图,n个节点,n-1条有向边,要求选一个节点作为根,使需要改变方向的边的数目最少。并输出所有可能作为根的点。思路: 先随便一个点进行DFS,计算将每棵子树的边全部往下时,所需要的费用down[i]。还是那个点进行DFS,这次就要求答案了,尝试将每个点t作为根,那么以t作为根的总费用... 阅读全文
摘要:
题意:给定一棵带边权的n个节点的树,首先要求出每个点的最长路,然后写成序列d[1],d[2]...d[n],然后求满足 区间最大值-区间最小值 2 #include 3 #include 4 #include 5 #include 6 #define pii pair 7 #define I... 阅读全文
摘要:
题意:给定一棵n个节点的树,要在某些点上建设消防站,使得所有点都能够通过某个消防站解决消防问题,但是每个点的建站费用不同,能够保证该点安全的消防站的距离上限也不同。给定每个点的建站费用以及最远的消防站距离上限,求保证该树安全的最小花费。思路: 要选择部分点来建站解决消防问题,而总花费是有最优解的。... 阅读全文
摘要:
题意:给一棵树,n个节点,给定一个数k,求任意满足dist(a,b) 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define pii pair 8 #define INF 0x3f3f3f3f 9 #... 阅读全文
摘要:
题意:求树的重心,若有多个重心,则输出编号较小者,及其子树中节点最多的数量。思路: 树的重心:指的是一个点v,在删除点v后,其子树的节点数分别为:u1,u2....,设max(u)为其中的最大值,点v的max(u)是所有点里面最小的,称v为树的重心。 如何求任一重心?按树形来看,max(v)可以... 阅读全文
摘要:
题意:给一棵树,问每个点到其他点的最远距离是多少?思路: 按两次深搜,第一次求每个点的后代中最远的距离以及次远距离,第二次就可以从上往下逐个更新答案了。当一棵树形成了,那么每个点只有两个方向可能会有最远距离,一个是经过其父亲,一个是经过其某个孩子。当在第二次深搜时往下推时要注意,经过父亲到达本节点... 阅读全文
摘要:
题意:给一棵树,每个节点都有权值,要求选择部分节点出来,使得权值之和最大,但是每对(父亲,儿子)中最多只能挑一个。思路: 比较入门的题,每个节点可以选也可以不选。若当前节点选的话,孩子必须全部不选;若当前节点不选,则孩子可以选也可以不选。 1 #include 2 #define pii pai... 阅读全文
摘要:
题意:有一个n*m的矩阵,其中部分格子已经涂黑,部分涂白,要求为其他格子也上黑/白色,问有多少种涂法可以满足一下要求: (1)任意2*2的子矩阵不可以同色。 (2)所有格子必须上色。 (3)只能有两个连通分量(即1黑1白)。 注:1 2 #include 3 #include 4 ... 阅读全文