【树形dp】Bzoj 1040骑士】的更多相关文章

Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在和平环境中安逸了数百年的Z国又怎能抵挡的住Y国的军队.于是人们把所有的希望都寄托在了骑士团的身上,就像期待有一个真龙天子的降生,带领正义打败邪恶.骑士团是肯定具有打败邪恶势力的能力的,但是骑士们互相之间往往有一些矛盾.每个骑士都有且仅有一个自己最厌恶的骑士(当然不是他自己),他是绝对不…
如果m=n-1,显然这就是一个经典的树形dp. 现在是m=n,这是一个环套树森林,破掉这个环后,就成了一个树,那么这条破开的边连接的两个顶点不能同时选择.我们可以对这两个点进行两次树形DP根不选的情况. 那么答案就是每个森林的max()之和. # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # in…
[题目大意] 有n个骑士,给出他们的能力值和最痛恨的一位骑士.选出一个骑士军团,使得军团内没有矛盾的两人(不存在一个骑士与他最痛恨的人一同被选入骑士军团的情况),并且,使得这支骑士军团最具有战斗力,求战斗力的最大值. [思路] 首先yy一下,可以知道这是一个基环森林.我们可以用以下方法: 首先在每一棵基环树的环上任意找到一条边(用dfs来实现),记它的两个端点为u和v.然后删掉这条边(我这里用的方法是记录u,v在对方容器中的位置,并在后续操作中忽略这条边).由于u和v不能同时取,在删掉u和v之间…
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1040 题目大意: Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在和平环境中安逸了数百年的Z国又怎能抵挡的住Y国的军队.于是人们把所有的希望都寄托在了骑士团的身上,就像期待有一个真龙天子的降生,带领正义打败邪恶.骑士团是肯定具有打败邪恶势力的能…
原题 给出n个点n条边和每个点的点权,一条边的两个断点不能同时选择,问最大可以选多少. //图是一张基环外向树森林 是不是很像舞会啊- 就是多了一条边. 所以我们考虑一下对于一棵基环外向树,拆掉一条在环上的边,变成一棵树.在这个树上以断边的一个断点为根,跑舞会,就得到了这棵树的最大值(根选和根不选了两种).考虑到对于拆下来的内一条边,也要满足断点不能同时选择,所以此时得到的答案中,根不选一定是正确的,但是根选不一定是正确的(因为我们不知道此刻另一个断点是否被选择). 那么我们强制该点不选,然后更…
题目内容 洛谷链接 有\(n\)位骑士,每个人的战力可能不同,并且每一个人都有且仅有一个憎恨的人,互相憎恨的人不能在同一队中. 求组合为一个骑士队的最大战斗力. PS:可以去看看题目背景学学历史(雾) 输入格式 第一行包含一个正整数\(n\),描述骑士团的人数. 接下来\(n\)行,每行两个正整数,按顺序描述每一名骑士的战斗力和他最痛恨的骑士. 数据范围 \(n ≤ 1 000 000\),每名骑士的战斗力都是不大于$ 1 000 000$的正整数. 输出格式 输出最大战斗力. 样例输入 3 1…
这题真不爽,各种WA,写个题解浏览器还挂了,真不爽. 所以不多说了,就说关于判断是否是父节点的问题,不能直接判,会有重边,这种情况只能用编号判,传进去入边的编号,(k^1) != fa,这样就可以了. 要注意的细节很多啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊! 上代码: #include <cstdio> #include <cstring> #include <cstdlib>…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1040 [题意] 给一个基环森林,每个点有一个权值,求一个点集使得点集中的点无边相连且权值和最大. [思路] 注意题目中的有向边其实就是无向边.然后有多个联通块,每个联通块中有且仅有一个环. 如果没有环的话可以用树形DP,解决这个问题. 设f[i][0],f[i][1]分别表示以i为根,不选/选i时的最大权值.则有转移式: f[i][0]=sigma{ max(f[son(i)][0]…
题目大意:有一些骑士.他们每个人都有一个权值.可是因为一些问题,每个骑士都特别讨厌还有一个骑士.所以不能把他们安排在一起.求这些骑士所组成的编队的最大权值和是多少. 思路:首先貌似是有向图的样子,可是一个人讨厌还有一个人.他们两个就不能在一起.所以边能够看成是无向的. n个点,n条无向边,好像是一颗基环树. 但事实上这是一个基环树林,由于题中并没有说保证图一定联通. 然后就能够深搜了,处理出每个联通块. 事实上每个联通块就是一个基环树,在这个基环树上进行树形DP.求出最大值,然后累加到答案上.…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1040 [题目大意] 给出环套外向树森林,求最大权独立集. [题解] 我们对于每个连通块,找到环上的一条边拆开,对于边的两端分别做树形DP, 假设两端点位x和y,那么不包含x的dp值涵盖了是否包含y两种情况, 同理,以y为根的也是,因为边的两端不能同时取到,因此对于两者取最大值即可. 代码中f[x]表示包含x的dp值,g[x]表示不包含x的dp值. [代码] #include <cst…