TOJ 1115 POJ 1328 Radar Installation 贪心 C/C++
来源:互联网 发布:ubuntu 16.04 u盘安装 编辑:程序博客网 时间:2024/05/18 03:12
贪心思路:
cor[i]数组保存覆盖到该岛的雷达能放置的区间,然后按照左端点从小到大对数组排序。
只要雷达放置在某岛的cor[i]保存的区间内,这个岛就能被这个雷达覆盖。
排序后,相邻的两个区间只有三种情况。
1.第二个区间完全在第一个区间的后面。
2.第一个区间的后边一部分与第二个区间的前边一部分重合。
3.第二个区间包含在第一个区间内。
先把第一个雷达放在第一个区间的右端点。
1.如果第二个区间与第一个区间属于相邻区间的第一种情况,那么第一个区间的右端点显然不在第二个区间内,需要在第二个区间的右端点放一个新的雷达。
2.如果第二个区间与第一个区间属于第二种情况,那么第一个区间的右端点在第二个区间之内,因此第二个岛能被这个雷达覆盖,不需要新雷达。
3.如果属于第三种情况,第一个区间的右端点不在第二个区间内,但是第二个区间的右端点在第一个区间之内,所以把雷达放在第二个区间的右端点,不需要新雷达。
第二个区间处理完毕后,以新的雷达(或不需要新雷达就用原来的雷达)作为标准来处理第三个区间。
然后依次处理第四个第五个,直到处理完毕。
如果某个岛的y坐标大于d,这个岛就无法被雷达覆盖,输出-1。
Source Code
Problem: 1328 User: yueashuxiaMemory: 696K Time: 16MSLanguage: G++ Result: Accepted#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>using namespace std;struct node{ float l, r; }cor[1005];bool cmp(node a, node b){ return a.l < b.l; }int main(){ int i, res, NO = 1, N; float d, D, x, y, r; bool flag; while(scanf("%d%f", &N, &D), N||D) { for(i = flag = 0; i < N; i ++) { scanf("%f%f", &x, &y); if(y > D) flag = 1; if(flag == 0) { d = sqrt(D*D - y*y); cor[i].l = x - d; cor[i].r = x + d; } } if(flag) {printf("Case %d: -1\n", NO++); continue;} sort(cor, cor+N, cmp); res = 1; r = cor[0].r; for(i = 1; i < N; i ++) { if(cor[i].l > r) { res++; r = cor[i].r; } else if(cor[i].r < r) { r = cor[i].r; } } printf("Case %d: %d\n", NO++, res); } //system("pause"); return 0;}
- TOJ 1115 POJ 1328 Radar Installation 贪心 C/C++
- POJ 1328 Radar Installation(贪心)
- POJ 1328 Radar Installation 贪心
- POJ 1328 Radar Installation 贪心
- POJ 1328 贪心 Radar Installation
- POJ 1328 Radar Installation 贪心
- POJ | 1328 Radar Installation | 贪心
- POJ 1328 Radar Installation 贪心
- 贪心-poj-1328-Radar Installation
- POJ 1328 Radar Installation (贪心)
- POJ 1328 Radar Installation 贪心
- POJ 1328 Radar Installation 贪心
- POJ 1328、Radar Installation 贪心
- poj 1328 Radar Installation(贪心)
- POJ 1328 Radar Installation 贪心
- POJ 1328 Radar Installation 贪心
- POJ 1328 Radar Installation 贪心
- Poj 1328 Radar Installation 贪心
- 跟着鼠标移动的动态DIV盒子插件
- 实用算法实践-第 22 篇字符串匹配
- IE 插件 Trixie 介绍
- 小总结
- Android Trick 13: 改变一个apk的packagename的简单流程,就2个步骤
- TOJ 1115 POJ 1328 Radar Installation 贪心 C/C++
- 实用算法实现-第 23 篇 最大流
- 较为复杂的表格样式Demo
- 决策树算法——ID3算法,C4.5算法
- iPad UIPopoverController弹出窗口的位置和坐标——终结篇
- 调试程序总结
- Twitter Storm简介与入门
- 常用的webservice接口
- 实用算法实现-第 24 篇 高精度整数运算