给你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);
}
}

本篇介绍了一个寻找特定好友的算法问题,通过合理的路径规划,实现遍历所有节点(学校)并找到好友的同时,确保总花费最小。文章详细解析了如何利用数学规律减少移动成本。
and
can be used multiple times. Help Sajjad to find the minimum cost he needs to pay for tickets to visit all schools. He can start and finish in any school.
.
1335

被折叠的 条评论
为什么被折叠?



