Codeforces Round #654 (Div. 2) 1371A

题目链接

题目大意:n个木棍,每个木棍的长度对应 i  ,可以连接一些木棍,例如连接长度为 a和长度为b的,便可以得到一个a+b长度的木棍,问:可以最多得到多少长度相同的木棍?

解题思路:问的是长度相同的最多有多少个。。。一开始机翻理解成求长度相同的最长长度了

既然是问最多,,那连接的时候肯定是从两端选取 即 n/2 

但是需要考虑奇偶 ,偶数的时候直接两边取  n/2

奇数的时候 ,最后一个算一个,剩下是两边取,即 n/2 +1

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<stack>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
int main()
{
	ll t,i,n,k;
	cin>>t;
	while(t--)
	{
		cin>>n;
		cout<<n/2+n%2<<endl;
	} 
	 
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43819762/article/details/107092996