给你N个点,排列成一排,现在从i走到j需要花费(i+j)%(n+1);
问最少花费,使得走遍所有的点。
一开始我们在点1处。
思路:
从i(i<=n/2)一定可以走到一个点j,使得(i+j)%(n+1)为0.
所以我们假设有:1 2 3 4 5 6 7 8 9 10
那么我们走的路径为:
1>10>2>9>3>8>4>7>5>6即可。
其花费为4.
那么根据答案就是(n-1)/2.
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n%2==0)printf("%d\n",n/2-1);
else printf("%d\n",n/2);
}
}