BZOJ1040: [ZJOI2008]骑士 树套环DP
- 题意:一个图n个点n条边保证点能互相到达,ab有边意味着ab互相厌恶,求一个集合,使得集合里元素最多而且没有人互相厌恶
- 删去环上一条边树形dp,比如删掉的边连着a,b,那么先dp出不选a的最大值,再dp出不选b的最大值。
- 如果每次找到环删边的方法是直接把边断掉,这样会出现一个Bug就是a有指向b的边,b有指向a的边,这样形成的环其实不需要删掉
- 解决办法:就是建边的时候如果是上面的情况a b之间就建了两条边,那这样把重边删去就行了(删完之后就break掉)
- 代码:
#include <bits/stdc++.h>
#define nmax 1000010 using namespace std;
typedef long long ll;
vector <int> g[nmax];
int n, in, a, b, cnt;
ll d[nmax][]={}; // dp[u][1] = sum dp[v][0] + zl[u] dp[u][0] = sum max(dp[v][0],dp[v][1]+x[v])
int zl[nmax], vis[nmax]={}; void dfs(int u, int fa){
d[u][] = zl[u];
for (int i=; i<g[u].size(); i++) {
int v = g[u][i];
if(v==fa || v==) continue;
dfs(v, u);
d[u][] += d[v][];
d[u][] += max(d[v][], d[v][]);
}
} void fr(int u, int fa){
cnt++;
vis[u] = ;
for (int i=; i<g[u].size(); i++) {
int v = g[u][i];
if(v == fa || v == ) continue;
if( vis[v] ) { a=u; b=v; }
else fr(v, u);
}
} inline void del(int x, int y){
for (int i=; i<g[x].size(); i++) if( g[x][i] == y ) { g[x][i] = ; break; }
} inline void init(int u, int fa){
d[u][] = d[u][] = ;
for (int i=; i<g[u].size(); i++) {
int v = g[u][i];
if( v==fa || v== ) continue;
init(v, u);
}
} int main(){
cin >> n;
for (int i=; i<=n; i++) {
scanf("%d%d", &zl[i], &in);
g[in].push_back(i);
g[i].push_back(in);
}
ll ans=, ta;
for (int i=; i<=n; i++) {
if(vis[i]) continue;
cnt = ; //这个树套环的节点个数
fr(i, );
del(a, b);
del(b, a);
dfs(a, );
ta = d[a][];
init(i, );
dfs(b, );
ta = max(ta, d[b][] );
init(i, );
ans += ta;
}
cout << ans << endl;
return ;
}(⓿_⓿)
BZOJ1040: [ZJOI2008]骑士 树套环DP的更多相关文章
- luogu2607/bzoj1040 [ZJOI2008]骑士 (基环树形dp)
N个点,每个点发出一条边,那么这个图的形状一定是一个基环树森林(如果有重边就会出现森林) 那我做f[0][x]和f[1][x]分别表示对于x子树,x这个点选还是不选所带来的最大价值 然后就变成了这好几 ...
- 2018.11.06 bzoj1040: [ZJOI2008]骑士(树形dp)
传送门 由题可知给出的是基环森林. 因此对于每个基环森林找到环断开dpdpdp两次就行了. 代码: #include<bits/stdc++.h> using namespace std; ...
- BZOJ_1040_[ZJOI2008]骑士_树形DP
BZOJ_1040_[ZJOI2008]骑士_树形DP 题意: Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各 界的赞扬.最近发生了一件可怕的事情,邪 ...
- BZOJ1040: [ZJOI2008]骑士(奇环树,DP)
题目: 1040: [ZJOI2008]骑士 解析: 假设骑士\(u\)讨厌骑士\(v\),我们在\(u\),\(v\)之间连一条边,这样我们就得到了一个奇环树(奇环森林),既然是一颗奇环树,我们就先 ...
- [BZOJ1040][ZJOI2008]骑士(环套树dp)
1040: [ZJOI2008]骑士 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5816 Solved: 2263[Submit][Status ...
- [bzoj1040][ZJOI2008]骑士_树形dp_基环树_并查集
骑士 bzoj-1040 ZJOI-2008 题目大意:n个骑士,每个骑士有权值val和一个讨厌的骑士.如果一个骑士讨厌另一个骑士那么他们将不会一起出战.问出战的骑士最大atk是多少. 注释:$1\l ...
- 【洛谷】2607: [ZJOI2008]骑士【树形DP】【基环树】
P2607 [ZJOI2008]骑士 题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一 ...
- 初涉基环外向树dp&&bzoj1040: [ZJOI2008]骑士
基环外向树dp竟然如此简单…… Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发 ...
- 【环套树+树形dp】Bzoj1040 [ZJOI2008] 骑士
Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火 ...
随机推荐
- 【译文连载】 理解Istio服务网格(第三章 流控)
第3章 流控.............................................................................................. ...
- 01-Maven
今日知识 1. Maven 2. 依赖管理 2. 项目构建 Maven 1. Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 2. Ma ...
- 还是端口回流问题 TCP协议解析
还是上一篇的问题 在一内部局域网中, client 内网地址为 10.0.0.2 web 服务器内网地址为 10.0.0.1 外网地址为 211.6.15.1 域名为 xx ...
- 根据map中的某一key进行排序(快速排序实现)
/** * @author Gaoxl * 根据key值排序,要求key值能够转为Long类型(快速排序) * @param maps * @param key * @return */ public ...
- 解决 webpack-dev-server 不能使用 IP 访问
webpack 是众所周知很好用的打包工具,在开发 vue 项目时,vue-cli 就集成了 webpack.我们启一个服务:npm run dev然后在浏览器可是使用 http://localhos ...
- Linux安装Redis,在测试阶段即make test出现“You need tcl 8.5 or newer in order to run the Redis test”问题解决方案
Linux安装Redis,在测试阶段即make test出现"You need tcl 8.5 or newer in order to run the Redis test"问题 ...
- 进阶之路 | 奇妙的Window之旅
前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习清单: Window&WindowManagerService Window&Window ...
- java8 常用代码
1. 使用java8 提取出 list 中 bean 的某一属性 public static void main(String[] args) { List<Student> stuLis ...
- 全文检索以及Lucene的应用
全文检索 一.什么是全文检索? 就是在检索数据,数据的分类: 在计算机当中,比如说存在磁盘的文本文档,HTML页面,Word文档等等...... 1.结构化数据 格式固定,长度固定,数据类型固定等等, ...
- go 函数传递结构体
我定义了一个结构体,想要在函数中改变结构体的值,记录一下,以防忘记 ep: type Matrix struct{ rowlen int columnlen int list []int } 这是一个 ...