先分析答案,即$x$和$y$的关系有以下两种:

1.$y$在$x$子树中,那么答案即为包含$y$的$x$的儿子

2.$y$不在$x$子树中,那么答案即为$x$的父亲

那么第一个问题就是判断$y$是否在$x$的子树中,构造的思路有两个:1.记录每一个点到根的路径的状压;2.让每一个子树对应一个区间,记录该区间

前者显然行不通,考虑后者

为了找出这个区间,根最好是其中一个端点,之后考虑有哪些情况不可以:

1.当某两个兄弟(所包含区间相邻)为不同端点状态,那么无法区别这两个节点内部$y$属于哪棵子树

2.当子树的根与所有儿子端点状态相同,那么无法找到该子树所对应的区间

为了避免这两种情况,对于左端点的儿子,都需要记录右端点(反之同理),通过这个可以构造出一个dfs序列(不妨假定根的dfs序为1),考虑判定:

1.$x=1$(根),直接查找$S$中大于等于$y$的最小数即可

2.$|S|=1$(叶子),直接输出$S$中唯一的元素(父亲)即可

3.若$x<\min S$,则$x$必然是左端点,令$z$为$S$中的次大值(其父亲为右端点,大于所有其他数):若$x< y\le z$则答案为$S$中大于等于$y$的最小数,否则,答案为$S$中最大的数

4.若$x>\max S$,则$x$必然是右端点,令$z$为$S$中的次小值(其父亲为左端点,小于所有其他数):若$z\le y<x$则答案为$S$中小于等于$y$的最大数,否则,答案为$S$中最小的数

 1 #include "stations.h"
2 #include<bits/stdc++.h>
3 using namespace std;
4 #define N 1005
5 struct ji{
6 int nex,to;
7 }edge[N<<1];
8 int E,x,head[N],id[N];
9 void add(int x,int y){
10 edge[E].nex=head[x];
11 edge[E].to=y;
12 head[x]=E++;
13 }
14 void dfs(int k,int fa,int s){
15 if (!s)id[k]=++x;
16 for(int i=head[k];i!=-1;i=edge[i].nex)
17 if (edge[i].to!=fa)dfs(edge[i].to,k,s^1);
18 if (s)id[k]=++x;
19 }
20 vector<int> label(int n,int k,vector<int>u,vector<int>v){
21 memset(head,-1,sizeof(head));
22 for(int i=0;i<n-1;i++){
23 add(u[i],v[i]);
24 add(v[i],u[i]);
25 }
26 x=0;
27 dfs(1,0,0);
28 }
29 int find_next_station(int x,int y,vector<int>s){
30 if (x==1)return (*s.lower_bound(s.begin(),s.end(),y));
31 if (s.size()==1)return s[0];
32 if (x<s[0]){
33 int z=s[s.size()-2];
34 if ((x>=y)||(y>z))return s[s.size()-1];
35 return (*s.lower_bound(s.begin(),s.end(),y));
36 }
37 z=s[1];
38 if ((z>y)||(y>=x))return s[0];
39 return (*--s.upper_bound(s.begin(),s.end(),y));
40 }

[luogu6838]网络站点的更多相关文章

  1. 9个用来爬取网络站点的 Python 库

    上期入口:10个不到500行代码的超牛Python练手项目 1️⃣Scrapy 一个开源和协作框架,用于从网站中提取所需的数据. 以快速,简单,可扩展的方式. 官网:https://scrapy.or ...

  2. Hyper-V虚拟化--逻辑网络、VM网络、逻辑交换机

    逻辑网络承接物理网卡和VM网卡 可以关联站点.主机组.VLAN.IP子网,配置静态IP地址池(虚机的PA地址从该静态IP地址池获取) 只有当逻辑网络中的网络站点关联了VLAN后,在VM中才可以选择VL ...

  3. crawler_网络爬虫之数据分析_httpwatcher

    所谓爬虫,首先要通过各种手段爬取到想要站点的数据. web2.0之后,各种网络站点类型越来越多,早期的站点多为静态页面[html .htm],后来逐步加入 jsp.asp,等交互性强的页面.再后来随着 ...

  4. 五十二、linux 编程——网络介绍

    52.1 网络介绍 使用远程资源 共享信息.程序和数据 分布处理 52.1.1 协议的概念 计算机网络中实现通信必须有一些约定,如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被 ...

  5. 第12章 网络基础(1)_网络分层和TCP/IP协议族

    1. 协议的概念 (1)计算机网络中实现通信必须有一些约定.如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被称为通信协议 (2)在两个节点之间要成功地进行通信,两个节点之间必须 ...

  6. 黄聪:WordPress 多站点建站教程(一):怎样开启WordPress多站点功能,实现手机移动端主题开发,与主站用户数据共享

    为了开发手机移动端的wordpress,需要使用Wordpress的多站点功能. 1.打开WordPress根目录下的wp-config.php文件, 在文件的任何位置加上以下内容: define(' ...

  7. Python网络爬虫学习手记(1)——爬虫基础

    1.爬虫基本概念 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.--------百度百科 简单的说,爬 ...

  8. Python 资源大全中文版

    Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...

  9. [转载]Python 资源大全

    原文链接:Python 资源大全 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex  ...

随机推荐

  1. Java String的探讨

    关于String相关内容的学习,历来都是Java学习必不可少的一个经历. 以前一直想要好好总结一下String的相关的知识点,苦于没有时间,终于在今天有一个闲暇的时间来好好总结一下,也希望这文章能够加 ...

  2. 工作日常-SQL不能乱写

    前言:刚接手别人的项目没多久,在昨天的一次上线中无故躺坑,且该大兄弟已经离职,不得不帮他填坑,整完后,今天想搞一个总结,结论就是:SQL不能乱写. 搜索关键词:Cause: java.sql.SQLE ...

  3. Java初步学习——2021.10.11每日总结,第六周周一

    (1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 今天继续学习菜鸟教程Java实例 字符串 9.字符串小写转大写--toUpperCase方法 public class Ma ...

  4. tcl概述

    tcl,全名tool command language,是一种通用的工具语言. 1)每个命令之间,通过换行符或者分号隔开: 2)tcl的每个命令包含一个或者多个单词,默认第一个单词表示命令,第二个单词 ...

  5. 数字IC设计工程师的知识结构

    刚毕业的时候,我年少轻狂,以为自己已经可以独当一面,庙堂之上所学已经足以应付业界需要.然而在后来的工作过程中,我认识了很多牛人,也从他们身上学到了很多,从中总结了一个IC设计工程师需要具备的知识架构, ...

  6. javascript-vue介绍

    vue.js是一个用于创建web交互页面的库 从技术角度讲,vue专注于MVVM模型的viewModel层,它通过双向数据绑定把view层和model层连接起来,实际DOM封装和输出格式都被抽象为Di ...

  7. 【UE4 设计模式】设计模式一些概念

    定义 设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用设计模式是为了重用代码.让代码更容易被他人理解.保证代码可靠性. 四人帮 GOF ( Gang of Four ...

  8. “介绍一下自己吧”——记2020BUAA软工团队介绍和采访

    写在前面 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 团队作业-团队介绍和采访 团队介绍 团队名称 我们是 BUAA软软软件工程小队 ,简称 ...

  9. 第4次 Beta Scrum Meeting

    本次会议为Beta阶段第4次Scrum Meeting会议 会议概要 会议时间:2021年6月4日 会议地点:「腾讯会议」线上进行 会议时长:0.5小时 会议内容简介:对完成工作进行阶段性汇报:对下一 ...

  10. [技术博客]Django框架-后端的搭建

    目录 Django框架-后端的搭建 前言 环境的部署 项目的创建 app的使用 创建app 修改配置文件 app中数据表的构建 前端接口 接口的路径 运行服务器 验证后端 Django框架-后端的搭建 ...