您的位置:首页 > 其它

zoj2433

2017-01-12 20:25 232 查看

题目大意:

在一个遥远的国家,有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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  zoj