[例题]巡逻

注意到K只能是1或2,也就是说只能建0/1/2条新道路

我们分类讨论

当修建0条新道路的时候,

执行遍历会恰好遍历到每条边2次,答案为2*(n-1)

当修建1条新道路的时候,

我们设新道路连接x,y,则本来需要走两次的边(x,y)只要走一次,得到结果是2*(n-1)-(x,y),

易得(x,y)取直径L1时值最小,为2*(n-1)-L1+1

当修建2条新道路的时候,

就相当于在修建一条新道路的基础上在修建1条新道路

如果新道路形成的环有一部分与旧道路形成的环重叠,

那么我们必须再次经过这些边

否则答案继续减小

我们把原直径上的边权取反,然后再次求直径L2,答案就是2*(n-1)-L1+1-L2+1

[例题]树网的核 BZOJ1999加强版

转自《算法竞赛进阶指南》

解法1:暴力

直接找出直径后枚举左右端点,O(n3)

解法2:暴力的优化!QAQ

直接枚举左端点,让右端点最远,O(n2),可轻松AC原题

解法3:二分

为了通过加强版,我们继续观察:发现本题答案具有单调性,珂以二分答案

那么问题就转化为“验证是否存在一个核的偏心距不超过mid”

珂以找距直径两端点距离分别小于等于mid的两个点作为树网的核

珂以O(N)判定是否超过S ;

解法4:分析性质

设直径上的点为u1,u2......ut,先把这些节点标记为已访问,通过深度优先遍历求出d[ui]表示不经过直径上的点能到达的最远点的距离

以ui,uj为端点的点的树网的核的偏心距为max(max{d{uk|i≤k≤j},dist(u1,ui) ,dist(uj,ut)) ;

此时单调队列维护d[uk]就珂以做到O(N)了!

Warning!

本文由 TYQ 创作,采用 知识共享署名 4.0 国际许可协议进行许可。
转载要与作者联系,并需在正文明显处署名作者且注明文章出处。
对了,我永远喜欢C++啊。

sol - 0x63的更多相关文章

  1. 利用 Serial Over Lan(SOL)搭建 XEN 的调试信息输出环境

    如有转载,请注明出处与本文连接,谢谢! 修改XEN的源码实现额外的功能,需要有一个调试环境来得到XEN的调试信息(有关源码编译并安装 XEN 请阅读我以前的博文:在CentOS下源码安装 Xen并搭建 ...

  2. grub的sol

    http://smcijohnny.blogspot.com/2015/06/linuxsolserial-over-lan.html https://www.hiroom2.com/2016/06/ ...

  3. 士兵站队问题sol

    作者:http://www.cnblogs.com/taoziwel/articles/1859577.html 相类似题目:输油管道问题 [问题描述] 在一个划分成网格的操场上,n个士兵散乱地站在网 ...

  4. dell ipmi sol

    http://blog.arnoudvermeer.nl/post/52375062605/howto-setup-ipmi-sol-on-a-dell-r-series-server http:// ...

  5. 词根:sol = sun(太阳) 词根:sol = alone/single, whole/entire (单独的)

    词根:sol = sun(太阳) sol 这个词根有的书上如刘毅字典,刘洪波英文字根词源精讲等上面说来自拉丁语的sol(=sun),有的书如赢在单词上面说sol 来自拉丁语的solari,但不管哪种说 ...

  6. SOL的补充

    之前写过一些关于远程安装系统的文档,但是对于SOL还是糊涂不清. Serial Console 可以将输入输出转发到串行接口(com1, com2), 假如你有串行读取设备,就可以看到显示,控制输入. ...

  7. 第四章 自定义sol合约转化java代码,并实现调用

     鉴于笔者以前各大博客教程都有很多人提问,早期建立一个技术交流群,里面技术体系可能比较杂,想了解相关区块链开发,技术提问,请加QQ群:538327407 准备工作 1.官方参考说明文档 https:/ ...

  8. ENS 域名注册表智能合约(ENSRegistry.sol)解析

    ENS 注册表合约是 ENS 系统中的核心合约,了解这个合约可以敲开我们理解 ENS 域名系统的大门. 打开下面的折叠区域可以查看用 Solidity 语言编写的详细代码.当前部署在以太坊中的 ENS ...

  9. IPMI中sol的使用

    IPMI中sol的使用 转载韦远科 最后发布于2013-05-09 15:19:18 阅读数 7920  收藏   http://blog.chinaunix.net/uid-1838361-id-3 ...

随机推荐

  1. Python MySQL 入门

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  2. 【剑指Offer】面试题10- II. 青蛙跳台阶问题

    题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返 ...

  3. SpringAOP切入点的表达式

    1. 常用的切入点表达式分为:  (1)按类型匹配:within 关键字 (2)按函数匹配:execution (3)按bean的id匹配:bean 2.按类匹配的写法 匹配到具体的类:<aop ...

  4. Java8 Optional类使用小结

    Optional类的Javadoc描述如下: 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. of:  为非null的值创建一 ...

  5. poj_2406 KMP寻找重复子串问题

    B - Power Strings Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u S ...

  6. tomcat的8080,8009,8443,8005都是什么端口

    <Server port="8005" shutdown="SHUTDOWN"> 远程停服务端口<Connector port="8 ...

  7. 吴裕雄--天生自然Django框架开发笔记:Django 创建第一个项目

    Django 管理工具 安装 Django 之后,您现在应该已经有了可用的管理工具 django-admin.可以使用 django-admin 来创建一个项目: 可以来看下django-admin ...

  8. vue中的axios请求

    1.get请求 // get this.$axios.get('请求路径') .then(function (response) { console.log(response); // 成功 }) . ...

  9. javascript语法规范和良好的变成习惯

    1.1空白和多行书写 1.空白:空格键输入的空白.tab键输入的空白以及回车键输入的空白 2.多行书写,不能将引号内的字符串放到两行,不然容易报错. 1.2点语法 . 点语法表达式由对象开始,接着是一 ...

  10. caffe中运行mnist

    mnist样本字库嘚图片转换:# coding=utf-8import numpy as npimport struct import matplotlib.pyplot as plt from PI ...