题目链接:http://codeforces.com/contest/805/problem/C
【中文题意】给你一个整数n,代表有n个学校,然后让你将所有的学校连在一起,问你最小的花费是几。有以下两个条件:
1.第i个学校和第j个学校如果满足(i+j)%(n+1)==0的话,他们之间的花费为0。
2.否则的话花费为1.
【思路分析】这样的话我们要做的就是构造尽量多的i+j==n+1.n为偶数的时候,构造n/2组,花费为n/2-1 。n为奇数的话构造n/2+1组,花费为n/2 。
注意特判一下n==2的时候花费为0.
【AC代码】
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n==2)
{
printf("0\n");
continue;
}
if(n%2==0)
{
printf("%d\n",n/2-1);
}
else
{
printf("%d\n",n/2);
}
}
return 0;
}