FZU 2144 Shooting Game(数学+贪心)
主要思路:求出蚊子到达球的时间区间(用方程得解),对区间做一个贪心的选择,选择尽可能多的区间有交集的区间段(结构体排序即可),然后计数.
#include <cstdio>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
#define maxn 100025
int n, m, x,y;
ll r;
int t;
struct point
{
ll x, y, z,dx,dy,dz;
point(ll x = , ll y = , ll z = , ll dx = , ll dy = , ll dz = ) :x(x), y(y), z(z) {}
} a[maxn];
ll dis(point p1,point p2)
{
return (p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y) + (p1.z - p2.z)*(p1.z - p2.z);
}
int b[maxn];
double c[maxn];
struct node
{
double lf, ri;
} lr[maxn];
bool cmp(node a, node b)
{
return a.lf < b.lf;
}
int main()
{
int cas = ;
scanf("%d", &t);
while (t--)
{
scanf("%d%ld", &n, &r);
int k = ;
point a;
for (int i = ; i < n; i++)
{
scanf("%I64d%I64d%I64d%I64d%I64d%I64d", &a.x, &a.y, &a.z, &a.dx, &a.dy, &a.dz);
ll bb = * (a.x*a.dx + a.y*a.dy + a.z*a.dz);
ll aa = a.dx*a.dx + a.dy*a.dy + a.dz*a.dz;
ll cc = a.x*a.x + a.y*a.y + a.z*a.z - r*r;
if (bb*bb - * aa*cc >= )
{
if (dis(a, point(, , ))>r*r&&a.x*a.dx + a.y*a.dy +a.z*a.dz >= )continue;
double m1 = max(0.0, (-bb - sqrt((double)bb*bb - * (double)aa*cc)) / / aa);
double m2 = max(0.0, (-bb + sqrt((double)bb*bb - * (double)aa*cc)) / / aa);
lr[k].lf = min(m1, m2), lr[k++].ri = max(m1, m2);
}
}
sort(lr, lr + k,cmp);
c[k - ] = lr[k-].ri;
for (int i = k - ; i >= ; i--)c[i] = min(c[i + ], lr[i].ri);
printf("Case %d: ", cas++);
double temp;
m = ;
for (int i = ; i < k;)
{
temp = c[i];
m++;
while (i<k&&lr[i].lf <= temp)i++;
}
printf("%d %d\n", k, m);
}
}
FZU 2144 Shooting Game(数学+贪心)的更多相关文章
- FZU 2144 Shooting Game (贪心区域划分)
Problem 2144 Shooting Game Accept: 370 Submit: 1902 Time Limit: 1000 mSec Memory Limit : 32768 KB Pr ...
- FZU 2144 Shooting Game
Shooting Game Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submi ...
- ACM学习历程—FZU 2144 Shooting Game(计算几何 && 贪心 && 排序)
Description Fat brother and Maze are playing a kind of special (hentai) game in the playground. (May ...
- Problem 2144 Shooting Game fzu
Problem 2144 Shooting Game Accept: 99 Submit: 465Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- 洛谷3月月赛div2 题解(模拟+数学+贪心+数学)
由于本人太蒻了,div1的没有参加,胡乱写了写div2的代码就赶过来了. T1 苏联人 题目背景 题目名称是吸引你点进来的. 这是一道正常的题,和苏联没有任何关系. 题目描述 你在打 EE Round ...
- UVALive 7147 World Cup(数学+贪心)(2014 Asia Shanghai Regional Contest)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=6 ...
- HDOJ 5073 Galaxy 数学 贪心
贪心: 保存连续的n-k个数,求最小的一段方差... .预处理O1算期望. .. Galaxy Time Limit: 2000/1000 MS (Java/Others) Memory Lim ...
- FZU Problem 2221 RunningMan(贪心)
一开始就跑偏了,耽误了很长时间,我和队友都想到博弈上去了...我严重怀疑自己被前几个博弈题给洗脑了...贪心的做法其实就是我们分两种情况,因为A先出,所以B在第一组可以选择是赢或输,如果要输,那直接不 ...
- hdu 3573(数学+贪心)
Buy Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
随机推荐
- H5的新应用-获取用户当前的地理坐标
------------------------------ <script type="text/javascript"> ...
- 《JS权威指南学习总结--第二章词法结构》
第二章词法结构 内容要点: 一.注释 1. //表示单行注释 2. /*这里是一段注释*/ 3.一般编辑器里加注释是:选中要加注释的语句,按 ctrl+/ 二.直接量 所谓直接量,就是程序中直接使用的 ...
- nefu 943 黑屏
Description Veda 在用宽高比为a:b的显示器看一部宽高比为c:d的电影.在使用全屏模式看电影时,如果这个比例不相同,那么在显示器上就会出现了一些没有画面的地方,我们暂且称之为“黑屏”( ...
- PHP:urlencode
urlencode是用于对字符串进行编码,使得所有字符都能被放入url中,而不会被解析器误解. 正如html中的<>这样的符号是标记符,如果正文中存在<,要把它转义为< url ...
- robots.txt 文件指南
http://robots.51240.com/ robots 生成器
- Nginx 和 IIS 实现动静分离【转载】
前段时间,搞Nginx+IIS的负载均衡,想了解的朋友,可以看这篇文章:<nginx 和 IIS 实现负载均衡>,然后也就顺便研究了Nginx + IIS 实现动静分离.所以,一起总结出来 ...
- linuxmint卸载软件
删除你已经卸载掉的软件包的命令为 sudo apt-get autoclean 还有一类软件包,我们每个人都应该删除,那就是你已经卸载了,但是一些只有它依赖而别的软件包都不需要的软件包还留在你的系统里 ...
- PHP处理密码的几种方式【转载】
转自:http://www.3lian.com/edu/2015/08-01/235322.html 在使用PHP开发Web应用的中,很多的应用都会要求用户注册,而注册的时候就需要我们对用户的信息进行 ...
- windows下使用git管理github项目
1. 下载安装msysgithttp://code.google.com/p/msysgit/downloads/list2. 注册github账号3. 生成ssh公钥和私钥ssh-keygen -C ...
- octet-stream
firefox突然变成了用gedit打开pdf文件, Where the link to http://download.jw.org/files/media_m...E_20150201.pdf c ...