雷达覆盖,贪心,类似活动安排(POJ1328)
题目链接:http://poj.org/problem?id=1328
解题报告:
1、按照头结点排序。
#include <cstdio>
#include <cmath>
#include <string.h>
#include <algorithm> using namespace std; struct point
{
double x;
double y;
} dis[],pos[]; bool cmp(const point a,const point b)
{
return a.x<b.x;
} int n;
double d; int main()
{
int Case=;
while(scanf("%d%lf",&n,&d),n!=||d!=)
{
memset(dis,,sizeof(dis));
bool flag=true; for(int i=; i<n; i++)
{
scanf("%lf%lf",&dis[i].x,&dis[i].y);
if(d<fabs(dis[i].y))
{
flag=false;
}
} for(int i=; i<n; i++)
{
pos[i].x=dis[i].x-sqrt(d*d*1.0-dis[i].y*dis[i].y);///计算一下左右区间
pos[i].y=dis[i].x*1.0+sqrt(d*d*1.0-dis[i].y*dis[i].y);
} if(flag)
{
sort(pos,pos+n,cmp); point tmp=pos[];
int ans=; for(int i=; i<n; i++)
{
if(pos[i].x>tmp.y)//没有重合的地方
{
ans++;
tmp=pos[i];
}
else if(pos[i].y<tmp.y)///有重合的地方且下一个岛屿的右覆盖较远
tmp=pos[i];
} printf("Case %d: %d\n",++Case,ans);
}
else printf("Case %d: %d\n",++Case,-);
}
return ;
}
2、按照尾节点排序。
#include <cstdio>
#include <cmath>
#include <string.h>
#include <algorithm> using namespace std; struct point
{
double x;
double y;
} dis[],pos[]; bool cmp(const point a,const point b)
{
return a.y<b.y;///按尾节点排序
} int n;
double d; int main()
{
int Case=;
while(scanf("%d%lf",&n,&d),n!=||d!=)
{
memset(dis,,sizeof(dis));
bool flag=true; for(int i=; i<n; i++)
{
scanf("%lf%lf",&dis[i].x,&dis[i].y);
if(d<fabs(dis[i].y))
{
flag=false;
}
} for(int i=; i<n; i++)
{
pos[i].x=dis[i].x-sqrt(d*d*1.0-dis[i].y*dis[i].y);
pos[i].y=dis[i].x*1.0+sqrt(d*d*1.0-dis[i].y*dis[i].y);
} if(flag)
{
sort(pos,pos+n,cmp); point tmp=pos[];
int ans=; for(int i=; i<n; i++)
{
if(pos[i].x>tmp.y)///没有重复
{
ans++;
tmp=pos[i];
}
else if(pos[i].x>tmp.y)
tmp=pos[i];
} printf("Case %d: %d\n",++Case,ans);
}
else printf("Case %d: %d\n",++Case,-);
}
return ;
}
雷达覆盖,贪心,类似活动安排(POJ1328)的更多相关文章
- hdu2037今年暑假不AC(贪心,活动安排问题)
今年暑假不AC Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submi ...
- HDU 2307 贪心之活动安排问题
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2037 今年暑假不AC Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 2037简单贪心--活动安排问题
活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子.该问题要求高效地安排一系列争用某一公共资源的活动.贪心算法提供了一个简单.漂亮的方法使得尽可能多的活动 ...
- 忙碌的Nova君 (活动安排问题、贪心算法)
题目描述 理论上,Nova君是个大闲人,但每天还是有一大堆事要干,大作业啦,创新杯啦,游戏啦,出题坑人啦,balabala......然而精力有限,Nova君同一时间只能做一件事,并不能一心二用.假设 ...
- A - 活动安排问题(贪心)
A - 活动安排问题 有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室? Input第一行一个正整数n (n <= ...
- [C++] 贪心算法之活动安排、背包问题
一.贪心算法的基本思想 在求解过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解. 从贪心算法的定义可以看出,贪心算法不是从整体上考 ...
- 贪心算法求解活动安排<算法分析>
一.实验内容及要求 1.要求按贪心算法原理求解问题: 2.要求手工输入s[10]及f[10],其中注意自己判断s[i]<f[i]: 3.要求显示所有活动及最优活动安排的i事件列表.二.实验步骤 ...
- C++贪心算法实现活动安排问题
问题描述: 设有n个活动的集合E={1,2,…,n},其中,每个活动都要求使用同一资源,而在同一时间内只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且s ...
- 51nod1428 活动安排问题 (贪心加暴力)
1428 活动安排问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动 ...
随机推荐
- C语言变参函数的实现原理
1. 变参函数简单示例 #include <stdarg.h> #include <stdio.h> int Accumlate(int nr, ...) { ; ; va_l ...
- 一个基于QT简单登录对话框(带验证码功能)
1. 对话框样式 2. 源代码 ①. main.cpp #include <QtGui/QApplication> #include "QLoginDialog.h" ...
- shell脚本启动java程序
#!/bin/bash ### 切换到工作目录 bin=$(cd `dirname ${0}`;pwd) cd ${bin} echo "bin [${bin}] .." ### ...
- 手工安装XDB 组件in oracle 11g
#############. sample 1 install guide below step is only for oracle 11g database installation, 10g d ...
- python面向对象实例
——王宇阳 总结 (Code_boy)2018年11月16日 class Person: name='xxx' age=20 p=Person() #p为实例对象 print(p.name,p.age ...
- hadoop的一些命令技巧
hadoop fs -cat <hdfspath> hadoop fs -cat <hdfspath>|more #more参数可是分页显示文件内容 echo abcd | h ...
- ajax动态给select赋值
<select name="elements" id="ele" style="width: 145px;"> ...
- awk, sed, xargs, bash
http://ryanstutorials.net/ awk: split($1, arr, “\t”) sed: sed -n '42p' file sed '42d' file sed ' ...
- 386. Lexicographical Numbers 把1--n按字典序排序
https://leetcode.com/problems/lexicographical-numbers/description/ 前20个是 1, 10, 11, 12, 13, 14, .... ...
- db2 存储过程参数传递--字段类型转换产生的问题
修改之前的脚本 select count(*) from dbdk.dtdkg010 A left join DBDK.DTDKG070 D ON D.PAY_NO = A.PAY_NO LEFT J ...