这条题目A了十次。。。emmmmm 其实不难就是一个贪心。。。。

先说下算法(之前的和现在的)

之前考虑的其实很简单。用平面几何即可将雷达可以放置的区域转化为区间(顺便判断是否无解。问题就比较简单了:先排序。然后我们第一个区间我们肯定是放在区间的最右边,然后对后面的我们如何处理呢?若后一个区间的左边在目前区间的右边,我们肯定是不用动这个雷达的摆放位置的;如果不满足,那么我们就要看看后一个区间的右边和这个区间的摆放位置了。如果后一个区间的右边在目前区间的右边的左边,那么我们就应当放在后一个区间的右边。按照这个思路就可以了。

再谈下自己错误的地方

  1. 浮点数,我前面几次全部都是用int保存的,省略了很多精度,导致了错误还死活调不出来。(这个应该是主要错误。)
  2. 这题有大量i/o,应当采用c-style的输入输出或者关掉tie。
  3. 各种代码细节问题,这个是编程基本功,以后慢慢提升吧。

代码

原题的代码套用了一个网上的模板,看起来有点恐怖233

#include <cctype>
#include <numeric>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <complex>
#include <deque>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <vector>
#include <utility>
#include <bitset>
using namespace std; #define REP(i,n) for(int i=0;i!=static_cast<int>(n);++i)
#define REP_1(i,n) for(int i=1;i<=static_cast<int>(n);++i)
#define FOR(i,a,b) for(int i=static_cast<int>(a);i<static_cast<int>(b);++i)
#define FOR_1(i,a,b) for(int i=static_cast<int>(a);i<=static_cast<int>(b);++i)
#define DWN(i,b,a) for(int i=static_cast<int>(b);i>static_cast<int>(a);--i)
#define DWN_1(i,b,a) for(int i=static_cast<int>(b);i>=static_cast<int>(a);--i)
#define ECH(it,A) for(auto it=A.begin();it!=A.end();++it) #define REP_2(i,j,n,m) REP(i,n) REP(j,m)
#define REP_2_1(i,j,n,m) REP_1(i,n) REP_1(j,m)
#define REP_3(i,j,k,n,m,l) REP(i,n) REP(j,m) REP(k,l)
#define REP_3_1(i,j,k,n,m,l) REP_1(i,n) REP_1(j,m) REP_1(k,l)
#define ALL(A) A.begin(), A.end()
#define LLA(A) A.rbegin(), A.rend()
#define CPY(A,B) memcpy(A,B,sizeof(A))
#define INS(A,P,B) A.insert(A.begin()+P,B)
#define ERS(A,P) A.erase(A.begin()+P)
#define BSC(A,X) find(ALL(A),X)// != A.end()
#define CTN(T,X) (T.find(X)!=T.end()) #define SZ(A) static_cast<int>(A.size())
#define PB push_back
#define MP(A,B) make_pair(A,B)
#define P(T) pair<T,T>
#define fi first
#define se second
#define D(v) (cout<< #v <<" is equal to "<<v<<endl)
#define DP(v) (cout<< #v << " is equal to "<<v.fi<<" "<<v.se<<endl)
#define ZERO(v) memset(v,0,sizeof(v))
#define MIO(v) memset(v,-1,sizeof(v)) #define IOS std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); const int inf=0x3f3f3f3f;
//const int MAXN;
const double eps=1e-6;
const double pi=acos(-1.0);
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
inline int sgn(double x)
{
return (x>eps)-(x<-eps);
}
int d;
struct Interval
{
double l,r;
Interval(double _l=0,double _r=0):l(_l),r(_r) {}
Interval(P(double) p):l(p.fi-sqrt(d*d-p.se*p.se)),r(p.fi+sqrt(d*d-p.se*p.se)) {}
bool operator < (const Interval& rhs) const
{
if (r==rhs.r) return l<rhs.l;
else return r<rhs.r;
}
}; int main()
{
int n;
int kase=0;
while(scanf("%d%d",&n,&d)==2)
{
if(!n&&!d) break;
int ans=1;
bool isVaild=true;
if(d<0)//d能小于0
isVaild=false;
vector<Interval> vec;
REP(i,n)
{
double x,y; scanf("%lf%lf",&x,&y);
if(double(d)<fabs(y)) { isVaild=false;ans=-1; }
else vec.PB(MP(x,y));
//cout<<vec[i].l<<" "<<vec[i].r<<endl;
} if(ans!=-1)
{
sort(ALL(vec));
int tmp=0;
int len=vec.size();
for(int i=1;i!=len;++i)
{
if(vec[i].l>vec[tmp].r)
{
ans++;
tmp=i;
}
else if(vec[i].r<vec[tmp].r)
tmp=i;
}
}
printf("Case %d: %d\n",++kase,ans);
}
return 0;
}

「个人训练」Radar Installation(POJ-1328)的更多相关文章

  1. Radar Installation POJ - 1328

    Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. ...

  2. Radar Installation POJ - 1328(贪心)

    Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. ...

  3. Greedy:Radar Installation(POJ 1328)

    装雷达 题目大意,就是令在海岸线的(直线)一边是海(y>0),另一边是陆地(y<=0),在海岸线上装雷达,雷达可以覆盖的范围为d,海上有岛,(x,y),问你应该怎么装雷达,才能做到技能雷达 ...

  4. Radar Installation POJ - 1328 (贪心)

    题目大意(vj上的翻译版本) 假定海岸线是无限长的直线.陆地位于海岸线的一侧,海洋位于另一侧.每个小岛是位于海洋中的一个点.对于任何一个雷达的安装 (均位于海岸线上),只能覆盖 d 距离,因此海洋中的 ...

  5. 【贪心】「poj1328」Radar Installation

    建模:二维转一维:贪心 Description Assume the coasting is an infinite straight line. Land is in one side of coa ...

  6. 「日常训练」 Fire!(UVA-11624)

    与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStre ...

  7. 「国庆训练」ArcSoft's Office Rearrangement(HDU-5933)

    题目与分析 题解见https://blog.csdn.net/cmershen/article/details/53200922. 训练赛场上我们写出来了--在4小时50分钟的时候...激情补题啊.. ...

  8. 「国庆训练」Bomb(HDU-5934)

    题意 给定\(n\)个炸弹,每个炸弹的坐标与代价与影响范围给定,炸弹会引爆影响范围内其他所有炸弹.求引爆所有炸弹的最小代价. 分析 先做\(n^2\)的循环,然后建图,对\(i\)能引爆\(j\)建边 ...

  9. 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)

    题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ...

随机推荐

  1. HDU 1757 A Simple Math Problem 【矩阵经典7 构造矩阵递推式】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1757 A Simple Math Problem Time Limit: 3000/1000 MS (J ...

  2. 【洛谷P1538】迎春舞会之数字舞蹈

    迎春舞会之数字舞蹈 题目链接 一道奇怪的模拟题, 先将样例输出复制下来,观察观察 -- -- -- -- -- -- -- -- ① | | | | | | | | | | | | | | ② | | ...

  3. deep learning学习记录一

    最近不小心又赶了一下时髦,在做deep learning.今天去听了复旦吴老师的课程,感觉吴老讲解的还是很清晰的. 上午刚看过cnn,下午讲解的就是这章,相对来说,我听着给了很多启发.

  4. BFC、IFC、GFC、FFC

    原文地址:https://www.xingkongbj.com/blog/css/fc.html FC FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念.它 ...

  5. 零基础Python知识点回顾(三)

    元组 元组是用圆括号括起来的,其中的元素之间用逗号隔开.(都是英文半角)tuple(元组)跟列表类似是一种序列类型的数据,特点就是其中的元素不能更改 既然是有序的,那么,嘿嘿,不错,它也可以有索引,能 ...

  6. 微信小程序流量主如何开通

    2018年7月09日,微信小程序流量主全面开通,开通条件如下: 累计独立访客(UV)不低于1000          # 一共一千个人访问你的小程序就可以申请(不限时间) 有严重违规记录的小程序不予申 ...

  7. Angularjs基础(九)

    AngularJS 应用应用程序讲解 实例: <html ng-app="myNoteApp"> <head> <meat charset=" ...

  8. 在C++中如何实现文件的读写

    一.ASCII 输出为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准C++中,已经使用<fstream>取代< fstream.h>,所 ...

  9. git 本地分支与远程仓库分支关联

    当我们从远程仓库项目克隆到本地后,会自动创建本地master分支,并且与远程仓库主分支关联.如果我们需要在本地创建一个分支并且与远程仓库的origin/xxx分支关联,则可以通过以下命令实现 git ...

  10. Mac系统配置php环境

    [写在前面——叨叨叨] -_-#急着配环境的同志们可以绕道.最近学校的实验室里接了一个小项目——考勤刷卡系统,利用RFID在硬件层获取学生卡的ID,通过wifi传输至服务器,进行考勤信息存储,手机端获 ...