ZOJ 2433 Highways
来源:互联网 发布:疯狗雾化器做丝数据 编辑:程序博客网 时间:2024/05/01 23:06
ZOJ 2433 Highways
寒假里写完这道题一直都在Segmentation Fault,其实感觉这种情况的最好的解决办法就是过一段时间对题目有认识之后重新写一遍就好了。
题意:到现在都忘了当时读题读的很纠结了。就是说城市之间只有单行线,现在要在这些城市之间修两条路,保证所有城市相互之间都可以往返,要求是这两条新路的起点城市和终点城市都要不同,并且保证这两条路的总长度最短。
思路:要想所有城市相互之间都可以往返,其实必须要建一条包含所有城市的路线,比如从第一个城市到最后一个城市就够了,但是题目要求建两条,那只要这两条(一条起于第一个城市,一条起于最后一个城市)在两个城市之间的距离最近的两个城市之间交叉就可以了。
代码+细节如下:
#include<stdio.h>int main(){int N,i,j,n,sum,min,a[50050],b[50020],c,d;scanf("%d",&N);for(i = 1;i<=N;i++){getchar();scanf("%d",&n);for(j = 0;j<=n-1;j++){if(j==0)a[j] = 0;elsescanf("%d",&a[j]);}b[0] = 0;sum = 0;for(j = 1;j<=n-1;j++){b[j] = a[j] - a[j-1];sum = sum+b[j];}min = 1000050000;for(j = 2;j<=n-2;j++){ /*这里取的两城市之间距离最短的两个城市*/if(b[j]<min){ /*不可以去最前面的两个,也不可以去最后的两个*/min = b[j];c = j+1;d = j;}}if(min==1000050000){ /*一开始这里WA,因为我写的条件是城市必须大于四个*/printf("0\n"); /*但是一定还有其他不符合题意的情况,所以用这种写法可以全都概括*/}else{ /*谨记!!*/printf("%d\n",sum+min);printf("%d 1 %d %d\n",c,n,d);}if(i!=N)printf("\n");}return 0;}
- zoj 2433 Highways
- zoj 2433 Highways水题
- zoj 2433 Highways
- ZOJ 2433 Highways(水题)
- ZOJ 2433 Highways
- ZOJ 2433 Highways
- zoj 2433 Highways
- ZOJ 2433 Highways
- zoj 2433 Highways(纠结,水)
- zoj 2048 Highways(Kruskal~)
- ZOJ 2048 Highways【kruskal】
- zoj - 2048 - Highways
- zoj 2048 Highways
- ZOJ 2048 highways
- ZOJ 2048 :Highways 【Prim】
- zoj 2048 Highways poj 1751
- zoj 2048 && poj 1751 Highways
- ZOJ 2048 POJ 1751 Highways
- ADD_MONTHS() 如果第二个参数是小数会怎么样?
- 《剑指Offer》读书笔记---面试题6:重建二叉树
- 项目二填空1
- Launcher介绍总结
- 第六周项目2-1
- ZOJ 2433 Highways
- 第六周上机项目三
- 6-1 改错
- Collaborative filtering 学习总结
- 给ubuntu创建应用程序图标
- java的十大产品
- ASP.NET MVC3 路由系统
- 程序人生--2006年(32)
- Linux内核启动:setup_arch