题目背景

珂朵莉放假了,她打算去唐山旅行。

题目描述

我们简单地把唐山的共 nn 个景点看成是一棵树,有 n-1n−1 条边将它们连接起来,每个景点有一个游览指数 v_ivi​。珂朵莉的假期时间不长,她只打算参观连续的恰好 kk 个景点。珂朵莉很可爱,所以她希望她所参观的景点里游览指数最低的景点的游览指数最高,她现在想知道其最高值是多少。

输入输出格式

输入格式:

第一行两个整数 n,k

接下来共 n−1 行每行两个整数 a b ,表示这两个景点相连

接下来 n 个整数 vi​

输出格式:

一个整数,如题描述

输入输出样例

输入样例

4 2
1 2
1 3
2 4
1 2 4 3
输出样例
2

说明

对于百分之三十的数据

n,k,v≤100

对于百分之六十的数据

n,k,v≤500

对于百分之百的数据

k≤n≤100000

1≤vi​≤1000000

这道题用二分枚举k上最小的最大值

然后check()判断树上是否有一条符合条件的链长度>=k;

用fir记录当前节点儿子中最长链长度,sec为当前节点儿子中第二长链,g[]为第一加第二+1等于当前节点为根节点时满足条件的最长链的长度(前提是当前节点满足条件)。

思想就是这样;

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
int pre[*maxn],last[maxn],other[*maxn],l;
int n,k,val[maxn],ans,mid,qw;
int fir[maxn],sec[maxn],g[maxn];
void add(int x,int y)
{
l++;
pre[l]=last[x];
last[x]=l;
other[l]=y;
} void dfs(int u,int fa)
{
for(int p=last[u];p;p=pre[p])
{
int v=other[p];
if(v==fa) continue;
dfs(v,u);
if(g[v]>fir[u])//儿子的最长链更新 当前节点的第一大链
{
fir[u]=g[v];
}
else if(sec[u]<g[v])//不然看看第二长链
{
sec[u]=g[v];
}
}
if(val[u]>=mid&&sec[u]+fir[u]+>=k)
{
qw=;
}
if(val[u]>=mid) g[u]=fir[u]+;//更新当前节点最长链
else g[u]=;
} int check()
{
qw=;
memset(g,,sizeof(g));
memset(fir,,sizeof(fir));
memset(sec,,sizeof(sec));
dfs(,); return qw;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<n;i++)
{
int a,b;
scanf("%d%d",&a,&b);
add(a,b);
add(b,a);
}
for(int i=;i<=n;i++)
{
scanf("%d",&val[i]);
}
int l=,r=;
while(l<=r)
{
mid=(l+r)>>;
if(check())
{
ans=mid;
l=mid+;
}
else r=mid-;
}
printf("%d",ans);
return ;
}

U74201 旅行计划 树上找链长度的更多相关文章

  1. 【51Nod】1273 旅行计划 树上贪心

    [题目]51Nod 1273 旅行计划 [题意]给定n个点的树和出发点k,要求每次选择一个目的地旅行后返回,使得路径上未访问过的点最多(相同取编号最小),旅行后路径上所有点视为访问过,求旅行方案.\( ...

  2. Luogu 2680 NOIP 2015 运输计划(树链剖分,LCA,树状数组,树的重心,二分,差分)

    Luogu 2680 NOIP 2015 运输计划(树链剖分,LCA,树状数组,树的重心,二分,差分) Description L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之 ...

  3. 51nod 1273 旅行计划——思维题

    某个国家有N个城市,编号0 至 N-1,他们之间用N - 1条道路连接,道路是双向行驶的,沿着道路你可以到达任何一个城市.你有一个旅行计划,这个计划是从编号K的城市出发,每天到达一个你没有去过的城市, ...

  4. 51nod-1273: 旅行计划

    [传送门:51nod-1273] 简要题意: 给出一棵树,点数为n,现在你有一个旅行计划,从k城市出发,每天前往一个没去过的城市,并且旅途中经过的没有去过的城市尽可能的多(如果有2条路线,经过的没有去 ...

  5. cogs 2. 旅行计划 dijkstra+打印路径小技巧

    2. 旅行计划 ★★   输入文件:djs.in   输出文件:djs.out   简单对比时间限制:3 s   内存限制:128 MB [题目描述] 过暑假了,阿杜准备出行旅游,他已经查到了某些城市 ...

  6. COGS 2. 旅行计划

    2. 旅行计划 ★☆   输入文件:djs.in   输出文件:djs.out   简单对比时间限制:3 s   内存限制:128 MB 过暑假了,阿杜准备出行旅游,他已经查到了某些城市的两两之间的距 ...

  7. Crash的旅行计划

    除草了.. Crash的旅行计划 [问题描述] 过不了多久,Crash就要迎来他朝思暮想的暑假.在这个暑假里,他计划着到火星上旅游.在火星上有N个旅游景点,Crash用1至N这N个正整数对这些景点标号 ...

  8. 洛谷P1137 旅行计划

    P1137 旅行计划 题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市,并制 ...

  9. 洛谷 P1137 旅行计划

    旅行计划 待证明这样dp的正确性. #include <iostream> #include <cstdio> #include <cstring> #includ ...

随机推荐

  1. C++ stringstream的用法

    Created at    stringstream的用法 使用stringstream对象简化类型转换 C++标准库中的<sstream>提供了比ANSI C的<stdio.h&g ...

  2. BZOJ 1225: [HNOI2001] 求正整数 高精度+搜索+质数

    题意:给定n求,有n个因子的最小正整数. 题解:水题,zcr都会,我就不说什么了. 因数个数球求法应该知道,将m分解质因数,然后发现 a1^p1*a2^p2....an^pn这样一个式子, (1+p1 ...

  3. [ C语言版 ] 数独计算器 [ 搜索剪枝法 ]

    [原创]转载请注明出处. [浙江大学 程序设计专题] 使用方法:按提示输入方式为9*9的矩阵,0表示未知数. 为解决这一问题,我们也尝试了两种方法,准确的说,是第一种方法太慢了,我们对它进行了优化. ...

  4. 文件权限设置与http,php的关系

    在web服务器上的文件要使用什么权限比较好呢.我开始的时候直接都是777,后台安全部门的同事,通过漏洞把我管理的服务器给搞了.报告到我这里,我才意识到权限的设置不能马虎.环境采用nginx+php,一 ...

  5. Combinations(带for循环的DFS)

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  6. html5视频播放器 二 (功能实现及播放优化)

    样式改写css,其中的一些按钮是在“阿里妈妈”上找的字体图标,就不向上传了. /* *CoolPlay视频播放器 * 2016年8月1日 * 627314658@qq.com * */ @font-f ...

  7. IE11 文档模式空白

    环境描述: win7 64位系统 安装了 更新 IE11-Windows6.1-KB2929437-x64.IE11-Windows6.1-KB3008923-x64 解决方案: 卸载 IE11-Wi ...

  8. MongoDB小结11 - update【save】

    save是一个shell函数,调用它,可以在文档不存在时插入,存在时更新,它只有一个参数:文档.如果文档有 _id 这个 键,那么save会调用upsert,否则会调用insert,非常方便.

  9. 条款五:对应的new和delete要采用相同的形式

    string *stringarray = new string[100]; ... delete stringarray; 上述程序的运行情况将是不可预测的.至少,stringarray指向的100 ...

  10. samba服務器下文件夾chmod權限技巧

    需要的效果: samba下文件夹(abc)不可以被重命名.不可以被刪除,其所有子目录可读可写. 如何做到: chmod 777 -R abc   # -R 使得abc下所有数据继承可读可写权限 chm ...