首页 > 代码库 > hdu 4932 Miaomiao's Geometry
hdu 4932 Miaomiao's Geometry
被秀智商下限了;
直接代码。。
<span style="font-size:24px;">#include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> #include<cmath> using namespace std; int s[55]; double w[120]; int main() { int a,b,i; scanf("%d",&a); while(a--) { scanf("%d",&b); for(i=0;i<b;i++) scanf("%d",&s[i]); sort(s,s+b); int cns=0; for(i=1;i<b;i++) { w[cns]=s[i]-s[i-1]; w[cns+1]=w[cns]/2.0; cns+=2; } sort(w,w+cns); int flag; cns=cns-1; int right,left; double res=w[cns];//从大到小找,第一个就是结果 while(1) { right=0; left=0; flag=0;//用来判断取左还是取右。 for(i=1;i<b;i++) { if(i==b-1) continue; if(s[i]-res<s[i-1] && s[i]+res>s[i+1])//如果有个点左右区间都小于给的长度,跳出找下一个 { flag=1; break; } if(s[i]-res>=s[i-1]) { if(right==1) { if(s[i]-s[i-1]>=2*res) { left=1; right=0; } else if(s[i]-s[i-1]==res) {left=1; right=0; }//判断是不是共用一段区间 else if(s[i]+res<=s[i+1]) { left=0; right=1; } else flag=1; } else { left=1; right=0; } } else if(s[i]+res<=s[i+1]) { right=1; left=0; } } if(flag==1) { cns--; res=w[cns]; } else { printf("%.3lf\n",res); break; } } } return 0; }</span>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。