BestCoder4 1002 Miaomiao's Geometry (hdu 4932) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4932
题目意思:给出 n 个点你,需要找出最长的线段来覆盖所有的点。这个最长线段需要满足两个条件:(1)每个点是某条线段的左端点或右端点 (2)任意两条线段之间的重叠部分的长度为0。(一个点重叠默认长度为0,即[1,2] , [2, 3] 视为合法)。还有一点我来补充吧,就是这个最大长度是固定的,看第3组测试数据 1 9 100 10,[-7,1] , [1,9] , [10,18] , [100,108] 长度都为8,不能参差不齐啦~~~~
昨天的BestCoder 4 的 B 题,好多人过pretest,但最终能过final ,寥寥无几啊(当中这行列有我啦),希望过后的失望啊.......天真的做法:每个点求出它两边的间隙,保存较大的那个(因为正常情况下都应该向大的那边扩展啦),然后在所有点的较大的那个中找出最小的那个就是答案了......
const int maxn = + ;
int maxx[maxn], minn[maxn];
int a[maxn]; int main()
{
int T, n;
while (scanf("%d", &T) != EOF)
{
while (T--)
{
scanf("%d", &n);
for (int i = ; i < n; i++)
scanf("%d", &a[i]);
sort(a, a+n);
int ll = abs(a[]-1e9);
maxx[] = max(a[]-a[], ll);
for (int i = ; i < n-; i++)
maxx[i] = max(a[i]-a[i-], a[i+]-a[i]);
int rr = abs(1e9-a[n-]);
maxx[n-] = max(a[n-]-a[n-], rr);
double ans = 1e9;
for (int i = ; i < n; i++)
ans = min((double)maxx[i], ans);
printf("%.3f\n", ans);
}
}
return ;
}
貌似挺多人好像我这样做滴= =。
给组测试数据立马知道出事了!!!!
6
-1 0 10 12 18 20
答案: 3
错误答案:6
如果忽略每两个点之间的间隙/2 而不去逐个测试,也就是只测试 每两个点之间的间隙,那么就 呵呵 了,会得出 2 这个答案,也是错滴!!! 可以这样想,对于相邻的两个点,它们可以面向对方扩展的嘛,也不一定都要背对着扩展的。
还有一个坑爹的地方,误差!!!一开始对于输出 a real number 就觉得好似是多余的,原来暗示着要测试误差呢。
总的来说,BestCoder 的题目:潜水淹死人!!!
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std; #define eps 1e-9
#define pb push_back
const int maxn = + ;
vector<double> vd;
double a[maxn];
int n; bool check(double gap)
{
double pre = a[];
for (int i = ; i < n; i++)
{
if (fabs(a[i]-pre) < eps) // 没这句会wa
continue;
if (pre > a[i])
return false;
else if (pre + gap <= a[i])
pre = a[i];
else
pre = a[i] + gap; // 这一句意味深长啊,如果它更新后比下一个待检测的a[i]大,即: if (pre > a[i]) 就没有继续比较下去的必要
}
return true;
} int main()
{
int T;
while (scanf("%d", &T) != EOF)
{
while (T--)
{
scanf("%d", &n);
for (int i = ; i < n; i++)
scanf("%lf", &a[i]);
sort(a, a+n);
for (int i = ; i < n; i++)
{
vd.pb(a[i]-a[i-]);
vd.pb((a[i]-a[i-])/); // 别遗漏
}
double ans = ;
for (int i = vd.size(); i >= ; i--)
{
if (check(vd[i]))
ans = max(ans, vd[i]);
}
printf("%.3f\n", ans);
}
}
return ;
}
姑且归去数学专区吧= =
BestCoder4 1002 Miaomiao's Geometry (hdu 4932) 解题报告的更多相关文章
- BestCoder10 1002 Revenge of GCD(hdu 5019) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5019 题目意思:给出 X 和 Y,求出 第 K 个 X 和 Y 的最大公约数. 例如8 16,它们的公 ...
- BestCoder8 1002 Revenge of Nim(hdu 4994) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4994 题目意思:有 n 个 heap(假设从左至右编号为1-n),每个 heap 上有一些 objec ...
- BestCoder18 1002.Math Problem(hdu 5105) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5105 题目意思:给出一个6个实数:a, b, c, d, l, r.通过在[l, r]中取数 x,使得 ...
- BestCoder17 1002.Select(hdu 5101) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5101 题目意思:给出 n 个 classes 和 Dudu 的 IQ(为k),每个classes 都有 ...
- BestCoder6 1002 Goffi and Squary Partition(hdu 4982) 解题报告
题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?pid=1002&cid=530 (格式有一点点问题,直接粘 ...
- BestCoder22 1002.NPY and arithmetic progression(hdu 5143) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5143 题目意思:给出 1, 2, 3, 4 的数量,分别为a1, a2, a3, a4,问是否在每个数 ...
- BestCoder20 1002.lines (hdu 5124) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5124 题目意思:给出 n 条线段,每条线段用两个整数描述,对于第 i 条线段:xi,yi 表示该条线段 ...
- BestCoder16 1002.Revenge of LIS II(hdu 5087) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5087 题目意思:找出第二个最长递增子序列,输出长度.就是说,假如序列为 1 1 2,第二长递增子序列是 ...
- BestCoder15 1002.Instruction(hdu 5083) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5083 题目意思:如果给出 instruction 就需要输出对应的 16-bit binary cod ...
随机推荐
- BZOJ [P2124] 等差子序列
线段树维护哈希值 要求出现长度大于三的等差子序列,我们只要找到长度等于三的就可以了 初看本题没有思路,只能暴力枚举,O(n^4) 后来发现,这个序列是n的一个排列,那么每个数字都只会出现一次 我们可以 ...
- POJ3345 Bribing FIPA
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5021 Accepted: 1574 Description There ...
- Volley 源码解析 StringRequest解析
Android Vollety是一个很有用的框架,所以想借鉴前人思想,分析这个源代码. 参考: http://blog.csdn.net/crazy__chen/article/details/464 ...
- 洛谷P1352 没有上司的舞会
题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...
- 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
0.前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述 ...
- BUPT复试专题—中位数(2014-2)
题目描述 给定一个长度为N的非降数列,求数列的中位数.中位数:当数列的项数N为奇数吋,处于中间位置的变最值即为中位数:当N 为偶数时,中位数则为处于中间位置的两个数的平均数. 输入 输入数据第一行 ...
- HDU 4422 The Little Girl who Picks Mushrooms(数学)
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=4422 Problem Description It's yet another festival s ...
- dm8127/8148下怎样进行dsplink的编写
样例:从A8读入1080p的yuv420sp的数据给dsplink,在dsp 中建立一个link(做一些图像处理的工作).然后将yuv420sp的数据发送到videoM3做jpeg编码,然后在传递到A ...
- 【转载】“菜”鸟理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)
既然要学.NET,就要先认识认识她,我不喜欢大段大段文字的东西,自己通过理解,画个图,来看看.NET的沉鱼落雁,闭月羞花之容. 最下层蓝色部分是.NET Framework的基础,也是所有应用软件的基 ...
- sqlite学习笔记10:C语言中使用sqlite之查询和更新数据
前面说到的 sqlite_exec() 中的第三个參数, SQLite 将为 sql 參数内运行的每一个 SELECT 语句中处理的每一个记录调用这个回调函数. 本节加入了两个函数.selectFro ...