这次是贪心(水笔贪心)专题。

  先看1328,一道经典的导弹拦截(或者是打击?不懂背景)。

  大意是说在一个坐标系中有一些点(或是导弹),你要在x轴上建一些东西,它们可以拦截半径为d的圆范围中的点。问最少修建的个数,不可能输出-1。

  经典问题了哈,主要是把二维的转成一维。

  对于每个要拦截的点以d为半径画一个圆。会与x轴有0/1/2个交点。如果没有交点直接退出-1即可,一个交点也可以看成两个交点重合。

  这样我们就得到了一些线段,然后就是区间覆盖了。贪心走一遍即可。

  两个端点的坐标勾股定理就好了:x±sqrt(d^2-y^2)

  注意检查你的输出,我因为把Case 打成了case WA了N次(......)。

  CODE

#include<cstdio>
#include<math.h>
#include<algorithm>
using namespace std;
const int N=;
struct data
{
double x,y;
}a[N];
int n,d,i,kinds,x,y;
inline void read(int &x)
{
x=; char ch=getchar(); int flag=;
while (ch<''||ch>'') { if (ch=='-') flag=-; ch=getchar(); }
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
x*=flag;
}
inline int comp(data a,data b)
{
return a.x<b.x;
}
int main()
{
for (kinds=;;++kinds)
{
read(n); read(d);
if (!n&&!d) break;
bool flag=;
for (i=;i<=n;++i)
{
read(x); read(y);
if (y>d) flag=;
a[i].x=x-sqrt(1.0*d*d-1.0*y*y); a[i].y=x+sqrt(1.0*d*d-1.0*y*y);
}
if (flag) { printf("Case %d: -1\n",kinds); continue; }
sort(a+,a+n+,comp);
int ans=;
double last=a[].y;
for (i=;i<=n;++i)
if (a[i].x>last) ++ans,last=a[i].y; else if (a[i].y<last) last=a[i].y;
printf("Case %d: %d\n",kinds,ans);
}
return ;
}

  2109:这是个智障题。

  有一个等式k^n=p,现在给出n,p,让你求出k

  这不是直接把p开n次方即可的事情吗?和贪心有何瓜葛?

  double的精度在这题应该不会炸,开方也不用手写或高精检验,在精度范围内(k在1~1e9之间),所以用pow来做分数次幂就行了。

  CODE

#include<cstdio>
#include<cmath>
using namespace std;
double n,p;
int main()
{
while (scanf("%lf%lf",&n,&p)!=EOF) printf("%.0lf\n",pow(p,/n));
return ;
}

  2586:一个很简单的贪心题。

  题目大意是一个二货公司每个月要么盈利s元,要么亏损d元,但是他们在一年中任意连续的5个月(1~5,2~6……)的盈亏和必须是负的。问你一年中可能盈利吗,可以就输出最大盈利值。

  想一下就知道亏损的月份放在最后面最好(可以被多次利用)

  所以假定他们12个月都盈利,在进行检查,如果和大于0就从后面开始修改。

  CODE

#include<cstdio>
#include<cstring>
using namespace std;
int sum,s,d,i;
bool f[];
inline void check(int a,int b)
{
for(;;)
{
int res=;
for (int i=a;i<=b;++i)
if (f[i]) res+=s; else res-=d;
if (res>=)
{
int i=b;
while (!f[i]&&i>a) --i;
f[i]=;
} else break;
}
}
int main()
{
while (scanf("%d%d",&s,&d)!=EOF)
{
memset(f,true,sizeof(f));
sum=;
for (i=;i<=;++i)
check(i,i+);
for (i=;i<=;++i)
if (f[i]) sum+=s; else sum-=d;
if (sum<) puts("Deficit"); else printf("%d\n",sum);
}
return ;
}

POJ 1328&&2109&&2586的更多相关文章

  1. 贪心 POJ 1328 Radar Installation

    题目地址:http://poj.org/problem?id=1328 /* 贪心 (转载)题意:有一条海岸线,在海岸线上方是大海,海中有一些岛屿, 这些岛的位置已知,海岸线上有雷达,雷达的覆盖半径知 ...

  2. POJ 1328 Radar Installation 贪心 A

    POJ 1328 Radar Installation https://vjudge.net/problem/POJ-1328 题目: Assume the coasting is an infini ...

  3. POJ 1328 Radar Installation【贪心】

    POJ 1328 题意: 将一条海岸线看成X轴,X轴上面是大海,海上有若干岛屿,给出雷达的覆盖半径和岛屿的位置,要求在海岸线上建雷达,在雷达能够覆盖全部岛屿情况下,求雷达的最少使用量. 分析: 贪心法 ...

  4. poj 1328 Radar Installation

    题目链接:http://poj.org/problem?id=1328 题意:给出海上有n个小岛的坐标,求发出的信号可以覆盖全部小岛的最少的雷达个数.雷达发射信号是以雷达为圆心,d为半径的圆,雷达都在 ...

  5. poj 1328

    http://poj.org/problem?id=1328 题意:题目大概意思就是有一群孤岛,想要用雷达来监视这些岛屿,但雷达的范围是有限的,所以需要多个雷达,题目就是要你解决最少需要几个雷达,注意 ...

  6. POJ 1328 Radar Installation 贪心 难度:1

    http://poj.org/problem?id=1328 思路: 1.肯定y大于d的情况下答案为-1,其他时候必定有非负整数解 2.x,y同时考虑是较为麻烦的,想办法消掉y,用d^2-y^2获得圆 ...

  7. Poj 1328 / OpenJudge 1328 Radar Installation

    1.Link: http://poj.org/problem?id=1328 http://bailian.openjudge.cn/practice/1328/ 2.Content: Radar I ...

  8. poj 1328 Radar Installation(贪心)

    题目:http://poj.org/problem?id=1328   题意:建立一个平面坐标,x轴上方是海洋,x轴下方是陆地.在海上有n个小岛,每个小岛看做一个点.然后在x轴上有雷达,雷达能覆盖的范 ...

  9. poj 1328 Radar Installation (简单的贪心)

    Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 42925   Accepted: 94 ...

随机推荐

  1. jQuery获取json数据

    出自---小瓶子编辑 $.each()方法接受两个参数,第一个是需要遍历的对象集合(JSON对象集合),第二个是用来遍历的方法,这个方法又接受两个参数,第一个是遍历的index,第二个是当前遍历的值. ...

  2. javascript的异步编程解决方案收集

    缘起 没理解js异步的同学看下面的例子: for (var i = 0; i < 5; i++) { //模拟一个异步操作 setTimeout(() => { console.log(i ...

  3. 浅尝Java(一)

    主题:数据类型,数值类型变量相互转化 Java是强类型的语言,与JavaScript(松散型)在数据类型上有很大的差异(1.所有变量必须先申明,后使用:2.指定类型的变量只接受与之匹配类型的值).这个 ...

  4. ionic插件安装与卸载

    使用下面的命令查询.安装.卸载插件: $ ionic plugin list //列出所有已安装插件 $ ionic plugin remove 插件名 //先根据上面的list列出插件,然后根据插件 ...

  5. 关于SQLSERVER走起公众帐号推送视频的通知

    关于SQLSERVER走起公众帐号推送视频的通知 为了SQLSERVER走起这个微博帐号和微信帐号更加多样化,内容更加丰富 也为了发挥微信.微博的媒介传播威力,在以后的微博.微信每日推送中会在适当的时 ...

  6. SELECT查询结果集INSERT到数据表

    简介 将查询语句查询的结果集作为数据插入到数据表中. 一.通过INSERT SELECT语句形式向表中添加数据 例如,创建一张新表AddressList来存储班级学生的通讯录信息,然后这些信息恰好存在 ...

  7. 自动代码质量分析(GitLab+JenKins+SonarQube)

    自动代码质量分析(GitLab+JenKins+SonarQube) 1.需求场景 开发提交代码自动执行代码质量分析. 2.所需应用 GitLab,JenKins,SonarQube 3.架构图 4. ...

  8. idea 断点上面有x

    背景:确定你的java代码没有问题,并且编译通过 问题:debug 启动项目的时候没有问题,idea打断点的时候左边红色断点上面有x 原因:java文件和class文件不一致, 解决方法:ant cl ...

  9. Rancher 添加主机无法显示、添加主机无效的解决办法

    在 Rancher UI 中,添加主机,在 Shell ssh 运行了,然后 点击 “关闭” 按钮,发现没有显示如何主机. 第一步,先去查看应用是否正常,就是 应用 - 全部应用 如果显示是 unhe ...

  10. Dijkstra(最短路求解)

    Dijkstra(最短路求解) 模板: #include<iostream> #include<cstdio> #include<cstring> #include ...