题目大意:
在一个遥远的国家,有N个城市都坐落在公路旁边。公路是直线的,它从第一个城市开始,通过第二个,第三个,直到第N个。第i个城市在距离第一个Xi米处。
但是公路是单向的,人们只能从小号码城市开车到大号码城市。
Mr. Pathwayson决定新建2条公路,使得每个城市可以相互走。每条新公路不能通过第三个城市。同时每个城市至多是一条公路的尽头。
写一个程序,满足所有的要求,同时要使得成本最低。
解题思路:
如果城市数量小于4个,肯定不可以。否则,知道距离最小的两个城市k+1和k+2。肯定要包含第一个城市和最后一个城市,然后k+2连到城市1,城市n连到k+1。距离等于最后一个城市的坐标加上两个城市的距离。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
int n,N,a[50005],b,c,sum,min,k,i;
scanf("%d",&N);
while(N--)
{
scanf("%d",&n);
c=0;
for(i=0;i<n-1;i++)
{
scanf("%d",&b);
a[i]=b-c;
c=b;
}
min=a[1];
k=1;
for(i=2;i<n-2;i++)
{
if(min>a[i])
{
min=a[i];
k=i;
}
}
sum=min+c;
if(n<4)
printf("0\n");
else
{
printf("%d\n%d 1 %d %d\n",sum,k+2,n,k+1);
}
if(N)
printf("\n");
}
return 0;
}
本文介绍了一个关于公路建设的问题,即如何在N个城市间新建两条公路,使得任意两城可达且总成本最低。当城市数量少于4时无法实现,否则通过特定算法找到距离最小的两个相邻城市,并连接首尾城市来完成布局。
6336

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



