zoj2433

来源:互联网 发布:主角可以优化功法的 编辑:程序博客网 时间:2024/06/15 12:31

题目大意:

在一个遥远的国家,有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;}
0 0
原创粉丝点击