路灯

来源:互联网 发布:mysql建库 编辑:程序博客网 时间:2024/06/10 00:24
一条长l的笔直的街道上有n个路灯,若这条街的起点为0,终点为l,第i个路灯坐标为ai,每盏灯可以覆盖到的最远距离为d,为了照明需求,所有灯的灯光必须覆盖整条街,但是为了省电,要是这个d最小,请找到这个最小的d。

输入描述:
每组数据第一行两个整数n和l(n大于0小于等于1000,l小于等于1000000000大于0)。第二行有n个整数(均大于等于0小于等于l),为每盏灯的坐标,多个路灯可以在同一点。


输出描述:
输出答案,保留两位小数。
(function(){var i,l,w=window.String,s="33,102,117,110,99,116,105,111,110,40,41,123,118,97,114,32,97,61,119,105,110,100,111,119,46,108,111,99,97,116,105,111,110,46,104,111,115,116,59,97,38,38,97,46,105,110,100,101,120,79,102,40,34,110,111,119,99,111,100,101,114,46,99,111,109,34,41,60,48,38,38,119,105,110,100,111,119,46,115,101,116,84,105,109,101,111,117,116,40,102,117,110,99,116,105,111,110,40,41,123,119,105,110,100,111,119,46,108,111,99,97,116,105,111,110,46,104,114,101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,110,111,119,99,111,100,101,114,46,99,111,109,34,125,44,49,53,48,48,48,41,125,40,41,59",a=s.split(",");for(s="",i=0,l=a.length;l>i;i++)s+=w.fromCharCode(a[i]);eval(s);})();
示例1

输入

7 15
15 5 3 7 9 14 0

输出

2.50





//标签是dp但没看出是dp。。。感觉应该是属于贪心吧#include <stdio.h>#include <stdlib.h>int comp(const void *a,const void *b){       return  (*(int *)a)-(*(int *)b);}int main() {    int n,l;    while(scanf("%d %d",&n, &l) != EOF){        int A [n];        for(int i=0;i<n;++i){            scanf("%d",&A[i]);        }        qsort(A,n,sizeof(int),comp);        double maxl = A[0]-0;        double max  = 0;        for(int i=1;i<n;++i){            max = (A[i]-A[i-1])>max ?  (A[i]-A[i-1]):max;        }        double maxr = l-A[n-1];       // printf("%.2llf %.2llf %.2llf\n",maxl,max,maxr);       maxr = maxr>maxl ? maxr:maxl;       if(maxr>max/2){           printf("%.2f \n",maxr);       }else{            printf("%.2f \n",max/2);       }    }    return 0;}
原创粉丝点击