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