题干:
你们wyh学长给你n个点,让你分成2个集合,然后让你将这n个点进行两两连接在一起,连接规则是这样的
- 连接的两个点必须在不同的两个集合
- 一个集合内部任意两个点之间不能相连
现在,wyh学长需要让你将这n个点任意分成2个集合之后,最多能连接多少条边?
输入格式:
输入第一行一个整数T(1<=T<=100000)
接下来T组测试数据,每组测试数据输入一个整数n(1<=n<=100000)
输出格式:
对于每组测试数据,输出对应答案
输入样例:
4
0
1
2
4
输出样例:
0
0
1
4
好久没敲代码了,今天开始重拾了,真的变垃圾了,555 orz
思路:就是求两个不同区间内元素之间的最多连线个数,哎!偶数就是n/2 * n/2,奇数就是n/2 * (n/2+1)(向下取整了吗)
#include<bits/stdc++.h>
using namespace std;
int main(){
long long T,n;
cin>>T;
while(T--){
cin>>n;
if(n==0) cout<<"0"<<endl;
else if(n==1) cout<<"0"<<endl;
else{
if(n%2==0){
n/=2;
cout<<n*n<<endl;
}else{
n/=2;
cout<<n*(n+1)<<endl;
}
}
}
return 0;
}