bzoj1040(ZJOI2008)骑士——基环树】的更多相关文章

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1040 基环树的模板. 套路就是把环断开,先把一端作为根节点,强制不选:再把另一端作为根节点,强制不选. 人家的这个判断环的方法真好!还顺便没有连上环的那条边,省下了在函数里判断. 别忘了有多棵基环树! #include<iostream> #include<cstdio> #include<cstring> #define ll long long using n…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1040 题目给出了$n$个点和$n$条无向边,即一棵基环树或者基环树森林. 如果题目给的关系是在一棵树上,就是一道经典的树形DP.现在我们考虑转化一下. 我们先找到那个环上的任意一条边,端点为u,v.加上这条边的影响仅仅是不能同时选择u和v. 所以我们考虑去掉这条边再分类讨论.如果不选u,那么v任意选:如果不选v,那么u任意选.那么DP的时候强制不走这条边,同时取两种不选根节点的最大值作为…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题意概括 有n个人,每一个人有一个最恨的人. 并且,每一个人有一个权值. 一个人不可以和他最恨的人同时被选中. 现在请你求出在这n个人中选出一些人,使得其权值和最大. (题解在“心塞史”后面) 心塞史 注:蒟蒻第一次遇见这种基环树题QAQ. 先看样例. 3 10 2 20 3 30 1 Ⅰ 瞬间开心. 随便选了一道,居然是水题? 这种类似的题目我貌似做过,好像是找几个环就可以了? 当然,于是我找完环,打完线性动归,一交wa…
1040: [ZJOI2008]骑士 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5816  Solved: 2263[Submit][Status][Discuss] Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各 界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在和平环境 中安逸了数百年的Z国又怎能抵挡的住Y国的军队.于是人…
P2607 [ZJOI2008]骑士 本题本质上就是树dp,和没有上司的舞会差不多,只不过多了一个对基环树的处理. #include<iostream> #include<cstring> #include<string> #include<cstdio> #define ll long long using namespace std; const int maxn=2e6; int n,cnt; ll val[maxn]; int root; int h…
<题目链接> 题目大意: Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在和平环境中安逸了数百年的Z国又怎能抵挡的住Y国的军队.于是人们把所有的希望都寄托在了骑士团的身上,就像期待有一个真龙天子的降生,带领正义打败邪恶.骑士团是肯定具有打败邪恶势力的能力的,但是骑士们互相之间往往有一些矛盾.每个骑士都有且仅有一个自己最厌恶的骑士(当然不是他自己),他是绝…
一类基环树dp都是这个套路吧 随便拆掉环上的一条边 然后跑树形dp,设\(f[i][0/1]\)表示以第\(i\)个人为根的子树,第\(i\)个人选或不选,能收获的最大值 以断点\(u,v\)为根分别跑基环树,每个连通块答案就是 \(max(f[u][0],f'[v][0])\) 血:两个骑士可能相互憎恨,形成重边…
N个点,每个点发出一条边,那么这个图的形状一定是一个基环树森林(如果有重边就会出现森林) 那我做f[0][x]和f[1][x]分别表示对于x子树,x这个点选还是不选所带来的最大价值 然后就变成了这好几个环上不能选相邻的点,最大的价值和 我们把这个环从N到1处断开,然后钦定一下1选还是不选,统计一下答案就可以了. #include<bits/stdc++.h> #define pa pair<int,int> #define ll long long using namespace…
Code: #include<algorithm> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; const int maxn=1000000+233; const int N=1000000+233; int A[N],B[N]; ll G[N],F[N]; int head[maxn*2],nex[maxn…
骑士 bzoj-1040 ZJOI-2008 题目大意:n个骑士,每个骑士有权值val和一个讨厌的骑士.如果一个骑士讨厌另一个骑士那么他们将不会一起出战.问出战的骑士最大atk是多少. 注释:$1\le n,atk\le 10^6$. 想法:树形dp的一道好题qwq.大师说是基环树的一道裸题.什么是基环树?就是一个点数条边的连通图,这样的连通图有且只有一个环.证明:挖坑代填. 那么这道题,首先如果两个骑士A讨厌B,其实和B讨厌A的效果是一样的,所以我们连双向边.那么对于任意的连通块,一定存在一个…