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 ...
随机推荐
- 《图解HTTP》
第一章.了解web及网络基础 1.2 http的诞生 HTTP于1990年问世,那时候HTTP并没有作为正式的标准被建立,被称为HTTP/0.9 HTTP正式作为标准被公布是在1996年5月,版本被命 ...
- wordpress使用七牛云加速
一.准备工作. wordpress搭建的网站 七牛云账号 二.简要步骤 1.wordpress安装七牛云插件. WordPress七牛镜像存储插件已经被WordPress官方收录,可以直接在wordp ...
- java web dev知识积累
tomcat体系结构 可以从tomcat的server.xml文件中元素的层次结构来理解tomcat的体系结构: Server(可以视为tomcat本身)->经由connector可以有多个(c ...
- leveldb源码分析--SSTable之逻辑结构
SSTable是leveldb 的核心模块,这也是其称为leveldb的原因,leveldb正是通过将数据分为不同level的数据分为对应的不同的数据文件存储到磁盘之中的.为了理解其机制,我们首先看看 ...
- 美团SQL优化工具SQLAdvisor
介绍 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 SQL 优化,不仅可以提升程序性能,还能够降低线上故障的概率. 目前常用的 SQL 优化方式包括但不限于:业务层优化.SQL逻 ...
- /etc/sudoers文件的分析以及sudo的高级用法
高级用法总结: sudo命令是普通用户的提权操作指令.在权限控制中,我们可以使用/etc/sudoers文件中来进行设置.基本的用法比较熟悉.比如设置一个普通用户可拥有root用户的运行权限,那么设置 ...
- Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid
Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid 上一步获取QQ登录网址之后,测试登录之后本该跳转到这个界面 但是报错了: 新建oauth_callback.html & ...
- Java多线程学习笔记之三内存屏障与Java内存模型
基本内存屏障 处理器支持那种内存重排序,就会提供能够禁止相应内存重排序的的指令,这些指令就被成为基本内存屏障:StroeLoad屏障.StroeLoad屏障.LoadLoad屏障.LoadStore屏 ...
- Ecstore Linux服务器环境基本配置
Nginx基本配置(另存为nginx.conf直接可以使用): #user nobody; worker_processes 1; error_log logs/error.log; #error_l ...
- JQUERY方法给TABLE动态增加行
比如设置table的id为tabvar trHTML = "<tr><td>...</td></tr>"$("#tab&q ...