Luogu 3698 [CQOI2017]小Q的棋盘

BZOJ 4813

虽然数据范围很迷人,但是想树形$dp$没有前途。

先发现一个事情,就是我们可以先选择一条链,最后要走到这一条链上不回来,走到链上的点每一个只需要一步,而如果要走这条链之外的点,一个点需要走两步。

这条链怎么选取?为了尽量减少步数,肯定是最长链。

现在有了一个显然的事情,如果限制步数$stp$不比最长链长度$mx$大的话,那么直接在最长链上走一走就好了,答案为$stp + 1$。

一棵树最少需要$mx + 2 * (n - mx - 1) = 2n - mx - 2$步走完,如果$stp$不小于这个值,那么一定能走完,答案为$n$。

剩下的情况只要先考虑走完最长链然后尽量分配步数到别的点上去就好了,答案为$mx + 1 + \left \lfloor \frac{stp - mx}{2} \right \rfloor$。

时间复杂度$O(n)$。

应该也有$dp$的办法吧。

Code:

#include <cstdio>
#include <cstring>
using namespace std;const int N = 105;int n, stp, tot = 0, head[N], dep[N];struct Edge {int to, nxt;
} e[N << 1];inline void add(int from, int to) {e[++tot].to = to;e[tot].nxt = head[from];head[from] = tot;
}inline void read(int &X) {X = 0; char ch = 0; int op = 1;for(; ch > '9' || ch < '0'; ch = getchar())if(ch == '-') op = -1;for(; ch >= '0' && ch <= '9'; ch = getchar())X = (X << 3) + (X << 1) + ch - 48;X *= op;
}inline void chkMax(int &x, int y) {if(y > x) x = y;
}void dfs(int x, int fat, int depth) {dep[x] = depth;for(int i = head[x]; i; i = e[i].nxt) {int y = e[i].to;if(y == fat) continue;dfs(y, x, depth + 1);}
}int main() {read(n), read(stp);for(int x, y, i = 1; i < n; i++) {read(x), read(y);++x, ++y;add(x, y), add(y, x);}dfs(1, 0, 1);int mx = 0;for(int i = 1; i <= n; i++)chkMax(mx, dep[i] - 1);if(stp <= mx) return printf("%d\n", stp + 1), 0;if(stp >= 2 * n - mx - 2) return printf("%d\n", n), 0;printf("%d\n", mx + 1 + (stp - mx) / 2);return 0; 
}
View Code

 

转载于:https://www.cnblogs.com/CzxingcHen/p/9852755.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

h5-plus.webview

这里是链接转载于:https://www.cnblogs.com/yuners/p/10721163.html

解决vue打包后静态资源路径错误的问题

vue项目完成的最后一步就是打包部署上线&#xff0c;但是打包部署的过程往往不是那么一帆风顺的&#xff0c;现将遇到问题和解决方案记录如下。 图片路径问题 起因&#xff1a; 页面中引入资源的方式往往有如下几种 * HTML标签中直接引入图片&#xff0c; 如 <img src&qu…

SQL语句01

SQL(Structured Query Language)&#xff1a;结构化查询语言SQL分类&#xff1a; 数据操纵语言DML&#xff08;Data Manipulation Language&#xff09; SELECT INSERT UPDATE DELETE 数据定义语言DDL&#xff08;Data definition language&#xff09; …

mongoose 笔记

快速启动 首先需要安装MongoDB和Node.js。 然后使用npm下载mongoose&#xff1a; npm install mongoose 接着我们直接在项目中引入mongoose&#xff0c;并且连接数据库就会在本地运行 MongoDB了&#xff1a; // index.js var mongoose require(mongoose); mongoose.connect(…

前端DES加密

1、下载crypto.js文件库 https://github.com/brix/crypto-js/releases 2、引入文件 <script type"text/javascript" src"js/jquery.min.js"></script> <script src"js/rollups/tripledes.js"></script> <script src&…

DOMBOM(source、methods、contents、Application)

何为DOM&#xff1f; Document Object Model Dom&#xff0c;是W3C组织推荐的处理可扩展标志语言的标准编程接口。在网页上&#xff0c;组织页面的对象被组织在一个树形结构中&#xff0c;用来表示文档中对象的标准模型就称为DOM。 可以认为DOM是页面上数据和结构的一个树形表示…

sublime 无法下载插件解决办法(亲测有效)

最近发现sublime装不到插件 只需要在Preferences > Package Settings > Package Control > Settings - User页面加上以下代码即可&#xff1a; "channels":["https://erhan.in/channel_v3.json"]上述频道亲测有效&#xff0c;如果还不能使用的小…

ES命令

基础概念 Elasticsearch有几个核心概念。从一开始理解这些概念会对整个学习过程有莫大的帮助。 接近实时&#xff08;NRT&#xff09; Elasticsearch是一个接近实时的搜索平台。这意味着&#xff0c;从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟&#xff…

Bug : Bash on Ubuntu on Windows scp work on window but not in shell file

&#xff1a; No Permission转载于:https://www.cnblogs.com/rgqancy/p/10726154.html

图片做背景撑开div

需求点&#xff1a; 设计师给了一张超大背景图&#xff0c;需要做一个不知道大小广告位&#xff0c;要求就是要把图片撑满整个页面&#xff0c;而且还得保证自适应。 解决方案一 &#xff08;亲测有效&#xff09; HTML代码&#xff1a; <div class"wrap">…

十一、jQuery的基本用法

初步接触不是很习惯&#xff0c;之前都是用的js&#xff0c;但是jQuery去掉了js很多繁琐的内容&#xff0c;用的不是很熟&#xff0c;所以先简单的记录一下&#xff0c;后续在继续补充 jq获取html内容: $("#id") 获取id $(".class") class名 …

spring-注解---IOC(3)

spring--注解---IOC(3) package com.zwj.bean;public class Blue {public Blue(){System.out.println("blue...constructor");}public void init(){System.out.println("blue...init...");}public void detory(){System.out.println("blue...detory..…

绝对定位的div图片居中自适应

需求点 固定定位div中添加图片内容&#xff0c;保证图片垂直居中&#xff0c;并且自适应。 一般在第三方UI组件中&#xff0c;这种布局需求较为常见 解决方案一 &#xff08;亲测有效&#xff09; HTML代码&#xff1a; <div class"el-carousel__item is-active is…

英语进阶系列-A06-本周总结

本周总结 目录Content 英语进阶系列-A01-再别康桥 英语进阶系列-A02-英语学习的奥秘 英语进阶系列-A03-英语升级练习一 英语进阶系列-A04-英语升级练习二 英语进阶系列-A05-英语升级练习三 古诗Poem 再别康桥 回乡偶书 梅花 劝学 游子吟 词汇Vocabulary be; have; give; get; t…

在div中设置文字与内部div垂直居中

要实现如图一所示的结果&#xff1a; html代码如下&#xff1a; <!DOCTYPE html> <html><head lang"zh"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta charset"utf-8" /><title>商…

王之泰201771010131《面向对象程序设计(java)》第九周学习总结

第一部分&#xff1a;理论知识学习部分 第7章异常、日志、断言和调试 概念&#xff1a;异常、异常类型、异常声明、异常抛出、 异常捕获1.异常处理技术2.断言的概念及使用3.基本的调试技巧 1&#xff09;异常的概念 a.Java的异常处理机制可以控制程序从错误产生的 位置转移到能…

vue移动端UI框架——Vant全局引入vs局部引入

全局引入 1.在main.js中全局引入全部vant组件 优点&#xff1a;可以在所有vue文件的template中定义所需组件缺点&#xff1a;打包发布时会增加包的大小&#xff0c;Vue的SPA首屏打开时本来就有些慢&#xff0c;同时不能在js中使用类似Toast功能的组件 代码如下&#xff1a; …

大前端完整学习路线(完整版),路线完整版

第一阶段&#xff1a; HTMLCSS: HTML进阶、CSS进阶、divcss布局、HTMLcss整站开发、 JavaScript基础&#xff1a; Js基础教程、js内置对象常用方法、常见DOM树操作大全、ECMAscript、DOM、BOM、定时器和焦点图。 JS基本特效&#xff1a; 常见特效、例如&#xff1a;tab、…

web-8. 多框架页面的创建

8. 多框架页面的创建 8.1 框架概念 框架是由单个框架加上框架集构成的区域。 每个框架是指页面中一个独立额区&#xff0c;框架集是一个关于框架结构的页面&#xff0c;定义本页面的框架数、大小、布局以及框架之间的相互关系。 8.2 框架集标记 框架集文件保存了所有框架的信息…

汇编语言第二章知识梳理及思考

第二章 寄存器&#xff08;CPU工作原理&#xff09; CPU概述 CPU由运算器、控制器、寄存器等器件组成&#xff0c;这些器件靠内部总线相连。 内部总线实现CPU内部各个器件之间的联系。 外部总线实现CPU和主板上其他器件的联系。 寄存器概述 8086CPU有14个寄存器&#xff1a; AX…