poj 1328 Radar Installation
2015-07-31 19:11
323 查看
题目链接:http://poj.org/problem?id=1328
贪心。
看了几个解题报告都说是水题,解题方法也很简单,但是不明白为什么。。。
网上好多代码提交都是wa的,真心醉了……
对于每个小岛,在海岸上有一个区间可以覆盖它。把区间的按左边界排序,然后从左到右扫一遍,记录一个值temp为当前区间的右边界,如果下一个区间的左边界大于temp,结果加一,更新到下一个点,如果下一个区间的右边界都小于temp,令temp等于下一个区间右边界。
AC代码
在 Discuss区找到了一份大神大数据:
贪心。
看了几个解题报告都说是水题,解题方法也很简单,但是不明白为什么。。。
网上好多代码提交都是wa的,真心醉了……
对于每个小岛,在海岸上有一个区间可以覆盖它。把区间的按左边界排序,然后从左到右扫一遍,记录一个值temp为当前区间的右边界,如果下一个区间的左边界大于temp,结果加一,更新到下一个点,如果下一个区间的右边界都小于temp,令temp等于下一个区间右边界。
AC代码
/******************************************** Problem: 1328 User: Memory: 688K Time: 16MS Language: G++ Result: Accepted *********************************************/ #include <iostream> #include <stdio.h> #include <algorithm> #include <math.h> using namespace std; const int N = 1005; int n, d; struct point { double x, y; bool operator < (const point a) const { return x < a.x; } } p ; int solve() { int i; sort(p, p + n); // for (i = 0; i < n; ++i) { // printf("%d:%f,%f\n", i, p[i].x, p[i].y); // } int ans = 1; double temp = p[0].y; for (i = 1; i < n; ++i) { if (p[i].x > temp) { ++ans; temp = p[i].y; } else if (p[i].y < temp) { temp = p[i].y; } } return ans; } int main() { int i, j = 1; while (scanf("%d%d", &n, &d) != EOF) { if (n == 0 && d == 0) break; int flag = 0; int x, y; for (i = 0; i < n; ++i) { scanf("%d%d", &x, &y); if (y > d) flag = 1; p[i].x = x - sqrt((double)d * d - y * y); p[i].y = x + sqrt((double)d * d - y * y); } printf("Case %d: %d\n", j++, flag ? -1 : solve()); } return 0; }
在 Discuss区找到了一份大神大数据:
2 5 -3 4 -6 3 4 5 -5 3 -3 5 2 3 3 3 20 8 -20 7 -18 6 -5 8 -21 8 -15 7 -17 5 -1 5 -2 3 -9 6 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 7 9 6 10 5 0 0 2 3 0 2 2 3 2 3 0 2 1 3 3 3 1 2 -3 2 2 4 8 5 2 4 -4 4 -3 3 -3 1 -3 0 -1 0 0 5 6 0 3 0 1 2 -3 1 2 1 3 2 1 2 -3 1 2 1 1 2 0 2 2 3 0 2 2 3 4 -5 4 3 4 3 2 3 6 -9 3 -3 1 2 -3 2 2 1 6 2 1 2 1 2 1 2 -3 1 2 1 0 0 1 2 0 2 2 3 0 2 1 3 3 10 1 10 2 3 4 5 3 5 1 10 2 3 4 5 4 7 1 10 2 3 4 5 0 0 3 9 1 10 2 3 4 5 0 0 ================结果 Case 1: 1 Case 2: 2 Case 3: 4 Case 4: 1 Case 5: 1 Case 6: -1 Case 7: 3 Case 8: -1 Case 9: 2 Case 10: 1 Case 11: 1 Case 12: -1 Case 13: -1 Case 14: 2 Case 15: 1 Case 16: 1 Case 17: 1 Case 18: -1 Case 19: -1 Case 20: -1
相关文章推荐
- Power Calculus(POJ 3134)
- java-常量和变量
- C++模板类与运算符作为友元函数重载
- centos ffmpeg m3u8切片相关
- linux下清空文件内容
- PHP登录页面信息提示方法
- 遍历整个二叉树的所有路径
- 二维数组转化成一维指针
- springmvc 的参数绑定,springmvc和 struts2的区别
- Android开发之远距离PC控制
- 2015.7.31
- Django(二)——管理页面的操作
- Django(三)——公众页面-视图
- HLS协议及java切片相关
- poj 1386 有向图欧拉(回)路
- Power Strings
- SQL Server中的事务与锁
- Power Strings 分类: POJ 串 2015-07-31 19:05 8人阅读 评论(0) 收藏
- sleep和wait有什么区别
- 【Android学习笔记】手机中data文件夹点不开怎么办?三步教你获取数据库文件