lightoj 1383 - Underwater Snipers 二分+贪心
来源:互联网 发布:公需课挂机软件2017 编辑:程序博客网 时间:2024/06/15 07:48
y=k这条线代表河,敌人和狙击手分别在河岸两侧。有n个敌人在河上方,每个敌人的坐标给出,然后给出狙击手的射程d以及数量s,问狙击手最远距离河岸多远可以使得每个敌人至少可以被一个狙击手打种。
如果抛开最远问狙击手数量的话,就和POJ某道贪心题一样了,区间覆盖那里面。
假设我们知道距离的话我们可以通过判断放置狙击手数量来判定这个距离是否成立,
那么距离就可以二分去判定,因为越远要的狙击手越多...
#include<bits/stdc++.h>using namespace std;#define ll long long#define ull unsigned long long#define mod 1000007#define inf 0x3f3f3f3f#define N 100100using namespace std;struct node{ double x,y; double l,r;}s[12345];int k,n,x,d;int cmp(node a,node b){ if(a.r==b.r) return a.l<b.l; return a.r<b.r;}int pd(int w){ for(int i=0;i<n;i++) { if(s[i].y+w>d) return 0; double tmp=(double)d*d-(1.0*s[i].y+w)*(s[i].y+w); s[i].l=s[i].x-sqrt(tmp); s[i].r=s[i].x+sqrt(tmp); } sort(s,s+n,cmp); int ans=1; double now=s[0].r; for(int i=1;i<n;i++) { if(s[i].l>now) { ans++; now=s[i].r; } } return ans<=x;}int main(){ int t; scanf("%d",&t); for(int cas=1;cas<=t;cas++) { scanf("%d %d %d %d",&k,&n,&x,&d); for(int i=0;i<n;i++) { scanf("%lf %lf",&s[i].x,&s[i].y); s[i].y-=k; } int ans=-1; int l=1,r=d; while(l<=r) { int mid=(l+r)/2; if(pd(mid)) { ans=mid; l=mid+1; } else r=mid-1; } printf("Case %d: ",cas); if(ans==-1) puts("impossible"); else printf("%d\n",ans); } return 0;}
0 0
- lightoj 1383 - Underwater Snipers 二分+贪心
- LightOj 1383 - Underwater Snipers(二分)
- LightOJ 1383 Underwater Snipers
- lightoj 1383 - Underwater Snipers
- lightoj 1383 Underwater Snipers
- lightoj 1383 - Underwater Snipers
- UVALIVE 5000 Underwater Snipers(二分+贪心)
- lightoj 1076 - Get the Containers 【二分 + 贪心】
- lightoj 1048 - Conquering Keokradong 【二分 + 贪心】
- LightOJ 1048 Conquering Keokradong(二分+贪心)
- Lightoj 1106 贪心
- LightOJ - 1389 Scarecrow(贪心)
- lightoj 1219 - Mafia 贪心
- lightoj 1389 - Scarecrow 贪心
- lightoj 1198(贪心)
- lightoj 1016 水贪心
- 二分+贪心
- 贪心 + 二分
- Apache2 Install on Ubuntu 14.04
- 华为OJ 二叉树遍历
- mybatis注解详解
- zoj3929 Deque and Balls 【找规律】
- C和C指针读书笔记
- lightoj 1383 - Underwater Snipers 二分+贪心
- 安卓开发培训(3.1 文件读写)
- 练习二1004
- Special equations(数学筛)
- RMQ 算法
- Android stdio Ndk HelloWorld
- 我们也说说Android.mk(5) - 案例教程
- 第一次正式java web开发项目的总结
- Block 分析