洛谷P3698 [CQOI2017]小Q的棋盘
传送门
考虑一个贪心,先在根节点周围转一圈,然后再往下走最长链肯定是最优的
然后设最长链的长度为$d$,如果$m\leq d$,那么答案为$m+1$
否则的话还剩下$m-d+1$步,又得保证能走回来,所以答案为$min\{n,d+\frac{m-d+1}{2}\}$
1 //minamoto 2 #include<iostream> 3 #include<cstdio> 4 using namespace std; 5 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 6 char buf[1<<21],*p1=buf,*p2=buf; 7 template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;} 8 int read(){ 9 #define num ch-'0' 10 char ch;bool flag=0;int res; 11 while(!isdigit(ch=getc())) 12 (ch=='-')&&(flag=true); 13 for(res=num;isdigit(ch=getc());res=res*10+num); 14 (flag)&&(res=-res); 15 #undef num 16 return res; 17 } 18 const int N=105; 19 int head[N],Next[N<<1],ver[N<<1],tot; 20 inline void add(int u,int v){ 21 ver[++tot]=v,Next[tot]=head[u],head[u]=tot; 22 } 23 int dep[N],n,m,res,d; 24 void dfs(int u,int fa){ 25 dep[u]=dep[fa]+1; 26 for(int i=head[u];i;i=Next[i]){ 27 int v=ver[i]; 28 if(v!=fa) dfs(v,u); 29 } 30 } 31 int main(){ 32 // freopen("testdata.in","r",stdin); 33 n=read(),m=read()+1; 34 for(int i=1,u,v;i<n;++i) 35 u=read()+1,v=read()+1,add(u,v),add(v,u); 36 dfs(1,0); 37 for(int i=1;i<=n;++i) cmax(d,dep[i]); 38 if(m<=d) return printf("%d\n",m),0; 39 printf("%d\n",min(n,d+(m-d+1)/2)); 40 return 0; 41 }
转载于:https://www.cnblogs.com/bztMinamoto/p/9827260.html
洛谷P3698 [CQOI2017]小Q的棋盘相关推荐
- [bzoj4813][Cqoi2017]小Q的棋盘
来自FallDream的博客,未经允许,请勿转载,谢谢. 小Q正在设计一种棋类游戏.在小Q设计的游戏中,棋子可以放在棋盘上的格点中.某些格点之间有连线,棋子只能在有连线的格点之间移动.整个棋盘上共有V ...
- bzoj 4813: [Cqoi2017]小Q的棋盘【树形dp】
这么简单的dp我怎么没想到x2 f为从这个点出发后回到这个点最多能走过的点,g为从这个点出发后不回到这个点最多能走过的点,注意g有两种转移:g[u][k]=max(g[u][k],f[u][k-j-1 ...
- Luogu 3698 [CQOI2017]小Q的棋盘
BZOJ 4813 虽然数据范围很迷人,但是想树形$dp$没有前途. 先发现一个事情,就是我们可以先选择一条链,最后要走到这一条链上不回来,走到链上的点每一个只需要一步,而如果要走这条链之外的点,一个 ...
- [CQOI2017]小Q的棋盘
输入输出样例 输入样例#1: 5 2 1 0 2 1 3 2 4 3 输出样例#1: 3 输入样例#2: 9 5 0 1 0 2 2 6 4 2 8 1 1 3 3 7 3 5 输出样例#2: 5 说 ...
- BZOJ 4813: [Cqoi2017]小Q的棋盘 (树形dp)
题目传送门 Solution 树形背包dp大水题,是POJ某道题的弱化版...不想说了,据说贪心也能过此题.. 一开始50分,dp数组初始化炸了,表示无语.. Code #include <io ...
- 【洛谷4005】小Y和地铁(搜索)
[洛谷4005]小Y和地铁(搜索) 题面 洛谷 有点长. 题解 首先对于需要被链接的两个点,样例中间基本上把所有的情况都给出来了. 但是还缺了一种从下面绕道左边在从整个上面跨过去在从右边绕到下面来的情 ...
- P3700 [CQOI2017]小Q的表格(反演、分块)
P3700 [CQOI2017]小Q的表格 给定一个大小为n×nn \times nn×n的表格,初始时i,ji, ji,j位置上填的是f(i,j)=i×jf(i, j) = i \times jf( ...
- 洛谷P3755 [CQOI2017]老C的任务 题解
题目传送门 题目描述 老C是个程序员. 最近老C从老板那里接到了一个任务--给城市中的手机基站写个管理系统.作为经验丰富的程序员,老C轻松地完成了系统的大部分功能,并把其中一个功能交给你来实现. 由于 ...
- 【洛谷1361】 小M的作物(最小割)
传送门 洛谷 Solution 这是一个比较实用的套路,很多题目都有用,而且这个套路难以口胡出来. 考虑把每一个附加贡献重新建一个点,然后向必需的点连边,流量为val. 然后直接种植的从源点向这个点连 ...
- 洛谷 1373 dp 小a和uim之大逃离 良心题解
洛谷 1373 dp 这题还不算太难,,当初看的时候不是很理解题意,以为他们会选择两条不同的路径,导致整体思路混乱 传送门 其实理解题意和思路之后还是敲了不短的时间,一部分身体原因再加上中午休息不太好 ...
最新文章
- powerdesigner 新建按钮是灰色的
- Vue:echarts画图实战,异步获取数据在Vue上使用echarts进行画图
- java正则表达式:查找所有{XXX}
- 一些常见去除恶意软件的东东
- 科大星云诗社动态20210808
- Huffman树进行编码和译码
- Platform Builder实践之配置文件
- 吴恩达深度学习5.1练习_Sequence Models_Building a RNN Step by Step
- java 9 mc_Java基础9
- 非旋转Treap及可持久化[Merge,Split]
- js校验规则--去空格、加空格
- 【数字信号处理】--数字信号分析与处理基础知识
- 希捷DM002-500G固件问题解决方法
- 我的世界python——方块朋友(方块设置移动路径getline)
- 智能手机基于众包的室内定位
- 百度网盘linux版本怎么安装
- Oracle HFM OHS服务无法启动
- 2-11 CAD基础 镜像(mirror)
- win10下装黑苹果双系统_笔记本加装固态打造黑苹果+WIN双系统,雷克沙NS100升级体验...
- 未转变者服务器车怎么得,未转变者刷车指令大全 | 手游网游页游攻略大全