day 2 下午 骑士 基环树+树形DP
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int maxn=2e6+;
long long dp[maxn][];
long long w[maxn]; struct node
{
long long to,next,value;
}way[maxn];
long long tmp;
long long tot;
long long n,x;
long long head[maxn];
bool vis[maxn];
long long root;
long long father;
long long ans1,ans;
int read()
{
int flag = ;
char c = getchar();
while ((!isdigit(c)) && c != '-') c = getchar();
if (c == '-') flag = -, c = getchar();
int init = c & ;
while (isdigit(c = getchar())) init = (init << ) + (init << ) + (c & );
return init * flag;
}
void add(long long x,long long y,long long w)
{
way[++tot].next=head[x];
way[tot].to=y;
way[tot].value=w;
head[x]=tot;
}
void dfs(long long x,long long fa)
{
vis[x]=;
for(int i=head[x];i;i=way[i].next)
{
long long to=way[i].to;
if(to==fa)
{
continue;
}
if(vis[to])
{
root=to;
father=x;
tmp=way[i].value;
}
else
{
dfs(to,x);
}
}
}
void shu_dp(long long x,long long fa)
{
dp[x][]=;
dp[x][]=w[x];
for(int i=head[x];i;i=way[i].next)
{
long long to=way[i].to;
if(way[i].value==tmp||to==fa)
{
continue;
}
shu_dp(to,x);
dp[x][]+=max(dp[to][],dp[to][]);
dp[x][]+=dp[to][];
}
}
int main()
{
n=read();
for(int i=;i<=n;i++)
{
w[i]=read();
x=read();
add(i,x,i);
add(x,i,i);
}
for(int i=;i<=n;i++)
{
if(!vis[i])
{
dfs(i,);
shu_dp(root,);
ans1=dp[root][];
shu_dp(father,);
long long ans2;
ans2=dp[father][];
ans1=max(ans1,ans2);
ans+=ans1;
}
}
printf("%lld\n",ans);
return ;
}
day 2 下午 骑士 基环树+树形DP的更多相关文章
- BZOJ 1040 [ZJOI2008]骑士 (基环树+树形DP)
<题目链接> 题目大意: Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的 ...
- BZOJ 1040 骑士 基环树 树形DP
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1040 题目大意: Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫 ...
- 洛谷 P1453 城市环路 ( 基环树树形dp )
题目链接 题目背景 一座城市,往往会被人们划分为几个区域,例如住宅区.商业区.工业区等等.B市就被分为了以下的两个区域--城市中心和城市郊区.在着这两个区域的中间是一条围绕B市的环路,环路之内便是B市 ...
- 骑士 HYSBZ - 1040(基环树+树形dp)
Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在和平环境中 ...
- bzoj 1040: [ZJOI2008]骑士【基环树+树形dp】
没考虑可以连着两个不选--直接染色了 实际上是基环森林,对于每棵基环树,dfs找出一个环边,然后断掉这条边,分别对这条边的两端点做一边treedp,取max加进答案里 treedp是设f[u]为选u点 ...
- BZOJ 1040 ZJOI 2008 骑士 基环树林+树形DP
题目大意:有一些骑士.他们每个人都有一个权值.可是因为一些问题,每个骑士都特别讨厌还有一个骑士.所以不能把他们安排在一起.求这些骑士所组成的编队的最大权值和是多少. 思路:首先貌似是有向图的样子,可是 ...
- HDU6403 Card Game【基环树 + 树形DP】
HDU6403 Card Game 题意: 给出\(N\)张卡片,卡片正反两面都有数字,现在要翻转一些卡片使得所有卡片的正面的值各不相同,问最小翻转次数和最小翻转情况下的不同方案数 \(N\le 10 ...
- BZOJ2878 [Noi2012]迷失游乐园 【基环树 + 树形dp + 期望dp】
题目链接 BZOJ2878 题解 除了实现起来比较长,思维难度还是挺小的 观察数据范围发现环长不超过\(20\),而我们去掉环上任何一个点就可以形成森林 于是乎我们枚举断掉的点,然后只需求出剩余每个点 ...
- 【BZOJ-3572】世界树 虚树 + 树形DP
3572: [Hnoi2014]世界树 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1084 Solved: 611[Submit][Status ...
随机推荐
- js 判断对象是否为空
利用JSON.stringify var objData = {};JSON.stringify(objData) ==="{}" // true 第二种用原声js 方法 Obje ...
- pc vue 项目中的菜单权限控制
在pc 管理系统这种类型的产品,通常会涉及到账号权限的控制,不同的账号权限能浏览的功能模块是不同的,对应侧边栏菜单模块的显示也会不同. 场景一.(电商类管理系统) 登录 登录后,依次获取账号 toke ...
- Nexus搭建开发组的私有仓库
一.私有仓库的价值 开发Java应用系统,用到Maven.sbt和 Gradle等构建工具,在构建过程中一般需要从互联网下载依赖库,构建私有仓库就是为了在开发组或者部门内共用,从而节省整体的下载成本和 ...
- SQL创建和调用有默认值的存储过程
先创建一个有默认值的存储过程 create procedure usp_unpass ), --有默认值的参数放到最后 as select @score go 该存储过程有2个参数 ,其中@score ...
- PHP array_mulitsort
1.函数的作用:对多维数组进行排序 2.函数的例子: 例子一: <?php // http://php.net/manual/zh/function.array-multisort.php $m ...
- Dubbo+Zookeeper(一)Zookeeper初识
前面花了一段时间去学习SpringCloud的相关知识,主要是理解微服务的概念并使用SpringCloud的一系列组件实现微服务落地.学习这些组件本身是简单的,跟着操作一遍基本就会了,这也得益于Spr ...
- 简单理解TCP通信的三次握手
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接. 位码(可以理解为请求状态): 有6种标示:SYN(synchronous建立联机) ACK(acknowledg ...
- 9.Linux用户管理(下)
1. 为用户添加密码 [root才能执行] 1为新用户添加密码{只能是root} {密码尽可能的复杂} [0-9][a-Z][a-Z] [!@#$%^&]* [root@yinwucheng ...
- JAVA学习笔记-1.Tomcat&Servlet
##web相关概念 1.软件架构 1.C/S 2.B/S 2.资源分类 1.静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源, 静态资源可以直接被浏览器解析. * 如:html, css, ...
- ESP8266开发之旅 网络篇② ESP8266 工作模式与ESP8266WiFi库
在网络篇①中,博主主要讲解了Arduino上开发ESP8266的插件库 Arduino Core For ESP8266.但是,并没有讲到关于这个模块的工作模式,所以本篇讲着重讲解ESP826 ...