牛客 - 点对最大值(树的直径)
题目链接:点击查看
题目大意:给出 n 个点组成的一棵树,每个点和每条边都有权值,现在需要求出一对点 ( x , y ) ,使得点 x 到点 y 的唯一路径权值和最大,权值和包括点 x 和点 y 的权值以及路径上所有边的权值之和
题目分析:比赛时没注意到这是树的直径,在那里写了一个小时的换根dp也没写出来,导致也没时间去看其实很简单的 G 题,感觉亏死了
树的直径模板题,只不过加了个限制是路径上还需要加上两个端点的权值,只需要稍微修改一下就好了
代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<unordered_map>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e6+100;struct Node
{int to,w;Node(int to,int w):to(to),w(w){}
};vector<Node>node[N];int a[N],dp[N],ans;//dp[i]代表以点i为根时,权值和最大的一条链,包含了一个端点的权值void dfs(int u,int fa)
{dp[u]=a[u];for(auto t:node[u]){int v=t.to;int w=t.w;if(v==fa)continue;dfs(v,u);ans=max(ans,dp[u]+dp[v]+w);dp[u]=max(dp[u],dp[v]+w);}
}void init()
{for(int i=0;i<N;i++)node[i].clear();ans=-inf;
}int main()
{
#ifndef ONLINE_JUDGE
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
#endif
// ios::sync_with_stdio(false);int w;cin>>w;while(w--){init();int n;scanf("%d",&n);for(int i=2;i<=n;i++){int to,w;scanf("%d%d",&to,&w);node[to].push_back(Node(i,w));node[i].push_back(Node(to,w));}for(int i=1;i<=n;i++)scanf("%d",a+i);dfs(1,-1);printf("%d\n",ans);}return 0;
}
牛客 - 点对最大值(树的直径)相关推荐
- 牛客网 桃花(树的直径)
桃花 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 桃花一簇开无主,可爱深红映浅红. - ...
- 牛客网 NC207429 最大值 KMP
文章目录 1. 题目描述 1.1. Limit 1.2. Problem Description 1.3. Input 1.4. Output 1.5. Sample Input 1.6. Sampl ...
- 树的距离(牛客网树上主席树+dfs序)
链接:https://ac.nowcoder.com/acm/problem/14415 来源:牛客网 题目描述 wyf非常喜欢树.一棵有根数树上有N个节点,1号点是他的根,每条边都有一个距离,而wy ...
- 刷题记录:牛客NC53074Forsaken喜欢独一无二的树
传送门:牛客 题目描述: 众所周知,最小生成树是指使图中所有节点连通且边权和最小时的边权子集. 不过最小生成树太简单了,我们现在来思考一个稍微复杂一点的问题. 现在给定一个n个点,m条边的图,每条边e ...
- 牛客 - sequence(笛卡尔树+线段树)
题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a 和数列 b ,求 题目分析:不算难的题目,对于每个 a[ i ] 求一下贡献然后维护最大值就好,具体思路就是,先找出每个 a[ i ] 左 ...
- 牛客 - 血压游戏(虚树+dp)
题目链接:点击查看 题目大意:中文题,不难理解 题目分析:这个题目比赛的时候没来得及看,比赛结束后看到有大佬写了一篇长链剖分+线段树的题解就被吓到了(主要是感觉太麻烦了,懒得去补了),读完题后总感觉似 ...
- 牛客-桃花——一个计算多叉树直径的问题
文章目录 桃花 题目解析 解题代码 桃花 题目链接 题目解析 这题有点坑,我开始以为是直接找相同的一堆直接一下扫荡,具体来说就是找所有相连在一起的点有多少,然后我很快想到用并查集的方式去写这道题,但一 ...
- 牛客 - 骚区间(线段树+思维)
题目链接:点击查看 题目大意:给出一个 1 ~ n 的排列 a ,现在规定骚区间当且仅当 a[ l ] 是 [ l , r ] 这段区间内的次小值,同时 a[ r ] 是 [ l , r ] 这段区间 ...
- 牛客 - 求函数(线段树+区间合并/线段树+矩阵维护)
题目链接:点击查看 题目大意:现在有 n 个函数,每个函数都是诸如 f( x ) = k * x + b 的形式,只是每个函数的 k 和 b 都是相互独立的,现在给出两个操作: 1 pos k b:将 ...
最新文章
- DJango操作MySQL数据库
- 【转】winform回车变为tab
- 在Ubuntu Linux中获取上次访问的文件时间
- js html异步加载的属性,异步加载JS的五种方式
- 字符串最后一个单词的长度
- centos window系统安装django
- 常见的80道面试算法题
- 人脸识别活体检测之眨眨眼和张张嘴
- 强化学习基本概念及方法分类
- 开机黑屏显示html,电脑开机黑屏只显示光标怎么办?来看看几种原因分析及解决方法!...
- excel操作模块Openpyxl
- Android游戏开发教程汇总
- 利用Hessian矩阵的Frangi 滤波器-python版本
- Multi-Task Video Captioning with Video and Entailment Generation阅读笔记
- 【今日CV 计算机视觉论文速览 第138期】Mon, 1 Jul 2019
- Visitor(访问者)设计模式
- SwfObjects在页面中嵌入flash(SWF)
- 微信小程序播放音频,ios静音状态下无声音、音频播放创建多个等问题
- axios中的params和data的区别
- cmd批量打开网页和关闭网页的批处理代码
热门文章
- 得胜php100怎么样,优缺点评测得胜Q麦评价如何?怎么样呢?老司机透漏
- php dns更新,php_mzdns: 站群,大量域名 通过 dns 服务商 api 批量添加 ip 工具。你懂的~ 基于 mzphp2 框架。...
- Why choose MySQL?
- 初步认识Volatile-缓存一致性协议
- Redis中的Cluster总结
- break和continue-continue代码演练
- 编写Eureka入门案例
- 均值极差图控制上下限_年度质量回顾-单值移动极差
- C# 类、对象、方法和属性详解(重新排版,页面整洁)
- tomcat 访问去掉项目名 直接访问 localhsot