首页 > 其他分享 >【CQOI2017】小Q的棋盘(贪心)

【CQOI2017】小Q的棋盘(贪心)

时间:2022-10-28 20:45:23浏览次数:44  
标签:ch frac 个点 int while CQOI2017 棋盘 贪心

题意:给你一棵 \(n\) 个点的树,从根节点开始走 \(m\) 步,最多能遍历多少个节点。

题解:

考虑我们走的路径,设起点是 \(S\),终点是 \(T\),那么我们肯定是走的类似这么一条路径:

在这里插入图片描述

设 \(S\to T\) 这条链的长为 \(l\),那么我们在子树中走了 \(m-l\) 步,子树中恰好会走 \(\frac{m-l}{2}\) 个点,那么我们总共会走 \(l+1+\frac{m-l}{2}\) 个点。

那么我们挑 \(S\to T\) 最长的那条链作为 \(l\) 肯定是最优的,即最长链。

#include<bits/stdc++.h>

#define N 110

using namespace std;

inline int read()
{
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x=(x<<1)+(x<<3)+(ch^'0');
		ch=getchar();
	}
	return x*f;
}

int n,m;
int cnt,head[N],to[N<<1],nxt[N<<1];

void adde(int u,int v)
{
	to[++cnt]=v;
	nxt[cnt]=head[u];
	head[u]=cnt;
}

int dfs(int u,int fa)
{
	int maxn=0;
	for(int i=head[u];i;i=nxt[i])
	{
		int v=to[i];
		if(v==fa) continue;
		maxn=max(maxn,dfs(v,u)+1);
	}
	return maxn;
}

int main()
{
	n=read(),m=read();
	for(int i=1;i<n;i++)
	{
		int u=read()+1,v=read()+1;
		adde(u,v),adde(v,u);
	}
	int l=dfs(1,0);
	if(m<=l) printf("%d\n",m+1);
	else printf("%d\n",min(n,l+1+(m-l)/2));
	return 0;
}

标签:ch,frac,个点,int,while,CQOI2017,棋盘,贪心
From: https://www.cnblogs.com/ez-lcw/p/16837417.html

相关文章

  • 【CQOI2017】小Q的表格(数论,分块)
    题意:有一个无限大的整数表格\(f\)满足以下两条法则:\(f(a,b)=f(b,a)\)。\(b\timesf(a,a+b)=(a+b)\timesf(a,b)\)。初始时\(f(a,b)=a\timesb\)。有\(m\)次修改......
  • 最大子数组之和完成心得--贪心算法的应用
    intpre=0,maxAns=nums[0];for(intx:nums){pre=Math.max(pre+x,x);maxAns=Math.max(maxAns,pre);}......
  • 简单分解-最优分解贪心问题
    简单分解-最优分解贪心问题题目描述现有一个数,需要把n分解成一个或多个两两互不相同的正整数(例如:可以分解成,也可以分解成,但不能分解成。当然也可以不分解,这样能分解的结果......
  • 【PNR#2 Div1 D】找零(DP)(贪心)
    找零题目链接:PNR#2Div1D题目大意有500,100,50,10,5,1这些面额的纸币,你有X块钱,使用最少的纸币数表示的。然后有一些物品,每种只有一个,有费用。每次你可以选择一些......
  • 完全背包问题 —— 贪心优化 DP 范围
    题意:现在有\(2n+1\)个物品(\(n\le300\)),体积分别为\(-n,-n+1,\dots,-1,0,1,\dots,n\),第\(i\)个物品有\(a_i\)个,求选出恰好\(S\)的总体积最多能选几个物品。第一......
  • *PAT_甲级_1033 To Fill or Not to Fill (25分) (C++)【贪心算法】
    目录​​1,题目描述​​​​题目大意​​​​输入​​​​输出​​​​说明​​​​2,思路​​​​数据结构​​​​算法​​​​3,代码​​1,题目描述SampleInput1:5013001......
  • 2 道用到同个贪心 trick 的题目
    你别急,我可能不会。https://www.luogu.com.cn/problem/P4437https://www.luogu.com.cn/problem/UVA1205......
  • DFS(贪心问题)--解决最少数量装箱问题
    题目描述有重量分别为3,5,7公斤的三种货物,和一个载重量为X公斤的箱子(不考虑体积等其它因素,只计算重量)需要向箱子内装满X公斤的货物,要求使用的货物个数尽可能少(三种货物数量无......
  • 贪心找零钱
    题目描述楚乔、宇文玥和燕洵在日本旅行,经过了几天的游玩之后,钱包里出现了大量硬币,楚乔决定用钱包里的硬币为宇文玥和燕洵在自动贩卖机买水。楚乔的钱包里有1元、5元、10元、......
  • 贪心--(货币找零)
    题目描述楚乔、宇文玥和燕洵在日本旅行,经过了几天的游玩之后,钱包里出现了大量硬币,楚乔决定用钱包里的硬币为宇文玥和燕洵在自动贩卖机买水。楚乔的钱包里有1元、5元、10元、......