HDU—— 4932 Miaomiao's Geometry
2014-11-04 18:15
302 查看
题意:求最大长度的线段覆盖使得这样的长度区间能够覆盖所有所给的点,每次覆盖的点都必须在覆盖线段的两端。
解题思路:这样的长度最大为相邻两点之间的距离或者是相邻两点之间距离的一半,所以枚举出所有相邻点之间的距离,找出一个符合条件的即可。详见代码:
Code:
解题思路:这样的长度最大为相邻两点之间的距离或者是相邻两点之间距离的一半,所以枚举出所有相邻点之间的距离,找出一个符合条件的即可。详见代码:
Code:
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; int T,N; double dis[210],num[210];//dis[i]存储相邻两个点之间的距离值,num[i]存储每个点的坐标值 int solve(double len) { int flag = 0;//用来标记是否有用到右边段 for(int i= 1; i<N-1; i++) { if(!flag && num[i]-num[i-1] >= len) continue;//右边段没有被标记且len在左边段不是符合条件的最大距离 if(flag && num[i]-num[i-1] >= 2*len)//当右边段被标记且左边段距离值的一半符合条件,但不是最大 { flag = 0; continue;//所以讲右边段从新标记,直到找到最大的线段值 } if(num[i+1]-num[i] >= len)//当右边段没有被标记且右边段符合条件且不是最大值 { if(num[i+1]-num[i] == len)//当右边段的距离值等于len { flag = 0; i++;//则右边段需从新标记且将该两点的距离跳过去,即不再该两点之间放线段 } else flag = 1;//否则标记右边段 continue; } return 0; } return 1; } int main() { scanf("%d",&T); while(T--) { scanf("%d",&N); int size = 0;//记录距离值的个数 for(int i = 0; i < N; i++) scanf("%lf",&num[i]); sort(num,num+N);//将每个点坐标排序 for(int j = 1; j < N; j++) { dis[size++] = num[j]-num[j-1];//记录相邻点之间的距离 dis[size++] = (num[j]-num[j-1])/2;//记录相邻点之间的距离的一半 } sort(dis,dis+size);//对距离值排序 double ans = 0;//ans表示最大的线段值 for(int i = size-1; i >= 0; i--) { if(solve(dis[i])) { ans = dis[i];break;}//当遇见符合条件的距离值时直接跳出 } printf("%.3lf\n",ans); } }
相关文章推荐
- 【HDU】4932 Miaomiao's Geometry 暴力
- HDU-4932-Miaomiao's Geometry
- HDU-4932-Miaomiao's Geometry【暴力枚举】
- HDU 4932/BC 4B Miaomiao's Geometry
- hdu 4932 Miaomiao's Geometry 暴力枚举
- hdoj 4932 Miaomiao's Geometry 【暴力枚举】
- hdoj 4932 Miaomiao's Geometry 【暴力枚举】
- HDU4932——二分——Miaomiao's Geometry
- BestCoder Round #4 1002 Miaomiao's Geometry[贪心]
- hdu4932 Miaomiao's Geometry (BestCoder Round #4 枚举)
- Miaomiao's Geometry
- hdu4932 Miaomiao's Geometry (BestCoder Round #4 枚举)
- hdu 3729 I'm Telling the Truth 最大匹配
- hdu 1098 Ignatius's puzzle
- hdu 1009 FatMouse' Trade(贪心)
- hdu 4004 The Frog's Games (二分+贪心)
- hdu 1164 Eddy's research I
- hdu 1009 FatMouse' Trade(排序)
- hdu 3953 I'll play a trick on you
- HDU 2671 Can't be easier 求点关于直线的对称点