POJ 1328&&2109&&2586
这次是贪心(水笔贪心)专题。
先看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的更多相关文章
- 贪心 POJ 1328 Radar Installation
题目地址:http://poj.org/problem?id=1328 /* 贪心 (转载)题意:有一条海岸线,在海岸线上方是大海,海中有一些岛屿, 这些岛的位置已知,海岸线上有雷达,雷达的覆盖半径知 ...
- POJ 1328 Radar Installation 贪心 A
POJ 1328 Radar Installation https://vjudge.net/problem/POJ-1328 题目: Assume the coasting is an infini ...
- POJ 1328 Radar Installation【贪心】
POJ 1328 题意: 将一条海岸线看成X轴,X轴上面是大海,海上有若干岛屿,给出雷达的覆盖半径和岛屿的位置,要求在海岸线上建雷达,在雷达能够覆盖全部岛屿情况下,求雷达的最少使用量. 分析: 贪心法 ...
- poj 1328 Radar Installation
题目链接:http://poj.org/problem?id=1328 题意:给出海上有n个小岛的坐标,求发出的信号可以覆盖全部小岛的最少的雷达个数.雷达发射信号是以雷达为圆心,d为半径的圆,雷达都在 ...
- poj 1328
http://poj.org/problem?id=1328 题意:题目大概意思就是有一群孤岛,想要用雷达来监视这些岛屿,但雷达的范围是有限的,所以需要多个雷达,题目就是要你解决最少需要几个雷达,注意 ...
- POJ 1328 Radar Installation 贪心 难度:1
http://poj.org/problem?id=1328 思路: 1.肯定y大于d的情况下答案为-1,其他时候必定有非负整数解 2.x,y同时考虑是较为麻烦的,想办法消掉y,用d^2-y^2获得圆 ...
- Poj 1328 / OpenJudge 1328 Radar Installation
1.Link: http://poj.org/problem?id=1328 http://bailian.openjudge.cn/practice/1328/ 2.Content: Radar I ...
- poj 1328 Radar Installation(贪心)
题目:http://poj.org/problem?id=1328 题意:建立一个平面坐标,x轴上方是海洋,x轴下方是陆地.在海上有n个小岛,每个小岛看做一个点.然后在x轴上有雷达,雷达能覆盖的范 ...
- poj 1328 Radar Installation (简单的贪心)
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 42925 Accepted: 94 ...
随机推荐
- Java Web工程搭建方法
搭建一个简单的Web工程主要是以下几步: 一.下载所需工具 ①java ②eclipse ③tomcat 注意:java与eclipse版本不匹配(32位或者64位),会导致eclipse启动时 ...
- java EE 监听器
生命周期监听器与属性改变监听器都必须使用@WebListener或在web.xml中声明,容器才会知道要加载.读取相关的监听器.
- Javascript执行流总结
面对各种各样的JavaScript代码,我们有时候难免会犯错.可当自己仔细研究一下,哦原来是这么回事.有时候怎么会想为什么Javascript程序会是这样执行的呢?为什么没有得到自己预期的答案呢?自己 ...
- Jenkins 执行python脚本
操作很简单: * 最新版本的Jenkins,插件管理中下载两个python需要的插: * 重启Jenkins 任务中添加python脚本即可,点击保存时候,自动会在下图中目录生成.py文件 过程如下 ...
- [SQLSERVER] 把TransactionLog截断
注意:以下语句非常危险 --BACKUP LOG MyDb TO DISK=’NUL:’
- 获取本机正在使用的ipv4地址(访问互联网的IP)
[转]原文地址:http://www.cnblogs.com/lijianda/p/6604651.html 1.一个电脑有多个网卡,有线的.无线的.还有vmare虚拟的两个网卡.2.就算只有一个网卡 ...
- NewEmployeesLearnNotes——新人程序员学习计划V1.1
百度云链接:https://pan.baidu.com/s/1BzoT79tV1QGwIQTjkGA4CQ 密码:k78i 修改中...
- zabbix待完整
fad 下载zabbix3.4的配置文件 wget -O zabbix-3.4.2.tar.gz http://sourceforge.net/projects/zabbix/files/ZABBIX ...
- Centos7 永久更改主机名
操作环境: [root@bogon ~]# uname -a Linux #localhost.localdomain 3.10.0-514.el7.centos.plus.i686 #1 SMP W ...
- Skype 服务器客户端策略参数优化
1.skype通讯录原理 对于skype客户端的通讯录同步,首先说说原理,通讯簿信息是从AD同步的skype前端服务器(每天1:30),在从前端服务器同步的客户端(大概1小时内同步一次). skype ...