骑士(树形dp)
题意:给你一个基环树森林,每个点有一个权值,一条边上的两个节点不能同时选择。选取任意个节点,求最大权值和
对于每颗基环树:找环→断边→树形dp(没有上司的舞会)
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define MAXN 1000005
#define LL long long
using namespace std; inline int read()
{
int f=,x=;
char ch=getchar();
while(ch<'' || ch>'') {if(ch=='-') f=-; ch=getchar();}
while(ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
return x*f;
} int n,cnt=-;
int val[MAXN];
int v[MAXN<<],head[MAXN],nxt[MAXN<<];
int k1,k2,e;
bool book[MAXN];
LL f[MAXN][],nans,ans; void add(int x,int y)
{
v[++cnt]=y;
nxt[cnt]=head[x];
head[x]=cnt;
} void find_circle(int x,int fa)
{
book[x]=;
for(int i=head[x];i!=-;i=nxt[i])
{
int t=v[i];
if(t==fa) continue;
if(book[t])
{
k1=x;
k2=t;
e=i;
continue;
}
find_circle(t,x);
}
} void dfs(int x,int fa)
{
f[x][]=val[x];
f[x][]=;
for(int i=head[x];i!=-;i=nxt[i])
{
int t=v[i];
if(i==e || (i^)==e) continue;
if(t==fa) continue;
dfs(t,x);
f[x][]+=max(f[t][],f[t][]);
f[x][]+=f[t][];
}
} int main()
{
memset(head,-,sizeof(head));
int i;
int x;
n=read();
for(i=;i<=n;i++)
{
val[i]=read();
x=read();
add(i,x);
add(x,i);
}
for(i=;i<=n;i++)
{
if(!book[i])
{
find_circle(i,-);
dfs(k1,-);
nans=f[k1][];
dfs(k2,-);
nans=max(nans,f[k2][]);
ans+=nans;
}
}
printf("%lld",ans);
return ;
}
骑士(树形dp)的更多相关文章
- 【BZOJ-1040】骑士 树形DP + 环套树 + DFS
1040: [ZJOI2008]骑士 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3312 Solved: 1269[Submit][Status ...
- 【BZOJ1040】[ZJOI2008]骑士 树形DP
[BZOJ1040][ZJOI2008]骑士 Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情 ...
- 洛谷P2607 [ZJOI2008]骑士(树形dp)
题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里, ...
- 洛谷 P2607 [ZJOI2008]骑士 树形DP
题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各 界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里, ...
- [BZOJ1040][ZJOI2008]骑士(树形DP)
对于一个联通块内,有且只有一个环,即n个点n条边 那么找到那个环,然后任意断一条边,这个联通块就变成一棵树了,然后做树形DP就行了 对于断的边要记录下来DP时特判 Code #include < ...
- bzoj 1040: [ZJOI2008]骑士 树形dp
题目链接 1040: [ZJOI2008]骑士 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3054 Solved: 1162[Submit][S ...
- [luogu2607 ZJOI2008] 骑士 (树形dp)
题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里, ...
- BZOJ 1040 ZJOI 2008 骑士 树形DP
题意: 有一些战士,他们有战斗力和讨厌的人,选择一些战士,使他们互不讨厌,且战斗力最大,范围1e6 分析: 把战士看作点,讨厌的关系看作一条边,连出来的是一个基环树森林. 对于一棵基环树,我们找出环, ...
- 【环套树+树形dp】Bzoj1040 [ZJOI2008] 骑士
Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火 ...
- BZOJ_1040_[ZJOI2008]骑士_树形DP
BZOJ_1040_[ZJOI2008]骑士_树形DP 题意: Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各 界的赞扬.最近发生了一件可怕的事情,邪 ...
随机推荐
- 【原创】大叔问题定位分享(7)Spark任务中Job进度卡住不动
Spark2.1.1 最近运行spark任务时会发现任务经常运行很久,具体job如下: Job Id ▾ Description Submitted Duration Stages: Succeed ...
- php中echo、print、print_r、var_dump、var_export区别
(1) print和echo是语言结构,echo输出多个值,多个值之间用逗号分隔,无返回值:print只能输出一个值,有返回值.echo和print输出整型和字符串,没法打印布尔型,如果true,打印 ...
- word 内容控件属性编辑
场景: 别人发给自己一份word模板,基于统一性,里面包含了很多“内容控件”,一般情况下,只需要根据内容控件进行编辑即可,但如果想对内容控件本身做编辑操作,例如删除等. 操作: 单击 文件>选项 ...
- [转] 从零构建 vue2 + vue-router + vuex 开发环境到入门,实现基本的登录退出功能
这是一个创建于 738 天前的主题,其中的信息可能已经有所发展或是发生改变. 前言 vue2 正式版已经发布将近一个月了, 国庆过后就用在了公司的两个正式项目上, 还有一个项目下个月也会采用 vue2 ...
- lxml.etree.HTML(text) 解析HTML文档
0.参考 http://lxml.de/tutorial.html#the-xml-function There is also a corresponding function HTML() for ...
- json2mysql
import json import psycopg2 import sys conn = psycopg2.connect(dbname='dev', host='127.0.0.1', port= ...
- Content Provider的启动过程
--摘自<Android进阶解密> 第一步:query方法到AMS的调用过程 1)ApplicationContentResolver是ContextImpl中的静态内部类,继承自Cont ...
- 识别拖动与点击操作之zepto的bug
问题描述:给页面<a>标签绑定了tap事件,在移动设备上点击按钮貌似一切正常,可以响应.但是,把页面上下滑动几次之后,或者在滑动时手指滑动出移动屏幕之外,之后再点击按钮,就会发现第一次点击 ...
- Hibernate 映射一对一关联关系
基于外键的方式: 附上代码: public class Manager { private Integer mgrId; private String mgrName; private Departm ...
- Navicat premium 破解步骤
测试环境:MacOS High Sierra 10.13.3Windows版破解教程请看 https://www.52pojie.cn/thread-688820-1-1.html 破解思路依然是替换 ...