bzoj [Usaco2009 Hol]Cattle Bruisers 杀手游戏

Description

 

Input

 第1行输入N,R,BX,BY, BVX,BVY,之后N行每行输入四个整数Xi,Yi,VXi,VYi.

 

Output

 

    一个整数,表示在逃脱过程中,某一个时刻最多有这个数理的杀手可以射杀贝茜.

Sample Input

3 1 0 0 0 2
0 -3 0 4
1 2 -1 1
1 -2 2 -1

Sample Output

2

OUTPUT DETAILS:

At time 1.5, Bessie is at point (0, 3), and the three bruisers are
at points (0, 3), (-0.5, 3.5), and (4, -3.5). The first two cattle
bruisers are within 1 unit of Bessie, while the third will never
be within 1 unit of Bessie, so 2 is the most achievable.
思路:  我们可以计算出每个杀手可以射击的一个时间范围,然后做扫描线。时间复杂度$O(nlogn)$
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int const N = 50000 + 3;
 4 double const eps = 1e-8;
 5 int n, r, m, in[N], out[N], cnt;
 6 double bx, by, bvx, bvy, x[N], y[N], vx[N], vy[N], t1[N], t2[N], t[N << 2];
 7 void calc(int k) {
 8     double tx = x[k] - bx;
 9     double ty = y[k] - by;
10     double v1 = vx[k] - bvx;
11     double v2 = vy[k] - bvy;
12     double a = v1 * v1 + v2 * v2;
13     double b = 2 * v1 * tx + 2 * v2 * ty;
14     double c = tx * tx + ty * ty - 1.0*r * r;
15     double d = b * b - 4 * a * c;
16     if(fabs(a) < eps ) {
17         if( c<0) { // 这个我始终觉得很奇怪,为什么c小于0就无限解了。
18             m++;
19             t1[m] = 0;
20             t2[m] = 1e10;
21         }
22         return ;
23     }
24     if(d<0) return ;
25     t1[k] = (-b - sqrt(d)) / (2 * a);
26     t2[k] = (-b + sqrt(d)) / (2 * a);
27     if(t2[k] <0)
28         return ;
29     t1[k] = max(0.0, t1[k]);
30     m++;
31     t1[m] = t1[k];
32     t2[m] = t2[k];
33 }
34 int main() {
35     scanf("%d%d%lf%lf%lf%lf", &n, &r, &bx, &by, &bvx, &bvy);
36     for(int i = 1; i <= n; i++) {
37         scanf("%lf%lf%lf%lf", &x[i], &y[i], &vx[i], &vy[i]);
38         calc(i);
39     }
40     for(int i = 1; i <= m; i++) {
41         ++cnt;
42         t[cnt] = t1[i];
43         ++cnt;
44         t[cnt] = t2[i];
45     }
46     sort(t + 1, t + cnt + 1);
47     int c = unique(t, t + cnt + 1) - t - 1;
48     for(int i = 1; i <= m; i++) {
49         int a = lower_bound(t + 1, t + c + 1, t1[i]) - t;
50         int b = lower_bound(t + 1, t + c + 1, t2[i]) - t;
51         in[a]++;
52         out[b]++;
53     }
54     int ans = 0, now = 0;
55     for(int i = 1; i <= c; i++) {
56         now += in[i];
57         ans = max(ans, now);
58         now -= out[i];
59     }
60     printf("%d\n", ans);
61     return 0;
62 }
View Code

 

转载于:https://www.cnblogs.com/ZJXXCN/p/10771266.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio Code 使用 ESLint 增强代码风格检查 - gyzhao - 博客园

前言 在团队协作开发中&#xff0c;为了统一代码风格&#xff0c;避免一些低级错误&#xff0c;应该设有团队成员统一遵守的编码规范。很多语言都提供了Lint工具来实现这样的功能&#xff0c;JavaScript也有类似的工具&#xff1a;ESLint。除了可以集成到构建工具中(如&#x…

eclipse下使用git插件上传代码至github

eclipse下使用git插件上传代码至github 1.eclipse下安装git 正常情况下&#xff0c;eclipse 是自带 git 插件的&#xff0c;那么即可跳至步骤1的最后一小步&#xff0c;配置 git 。 如果十分悲剧&#xff0c;你的 eclipse 中见不到 git 的身影&#xff0c;那么也没关系&#…

VS(C++)配置Halcon(一次配置,永久使用)

【说明】只需配置一次&#xff0c;以后新项目无需再次配置。 本教程是64位版本&#xff0c;32位可参考本教程。VS与Halcon无论哪个版本&#xff0c;都可参考本教程。 【步骤】以VS2015Halcon18.11为例 1、新建一个C|Win32控制台应用程序项目 2、视图|其他窗口|属性管理器 在 De…

(转)msys2使用教程

一、安装 官方下载地址 http://www.msys2.org/ 指定好安装路径&#xff08;一般D根目录即可&#xff09;&#xff0c;一路下一步就好。 二、配置国内镜像、设置窗体修改颜色 使用[清华大学开源软件镜像站]中的地址&#xff0c;修改\etc\pacman.d目录下的三个文件。 配置教程 ht…

简单使用Git和Github来管理自己的代码和读书笔记

简单使用Git和Github来管理自己的代码和读书笔记 以前不知道使用代码管理工具&#xff0c;最后写的一些东西都没有了&#xff0c;由于硬盘坏了或者不小心格式化了之类的&#xff0c;后来使用了Git 和Github来托管自己的代码和读书笔记方便了不少&#xff0c;到哪里只要有网就可…

android 资源

在进行APP开发的过程当中&#xff0c;会用到许多资源&#xff0c;比如&#xff1a;图片&#xff0c;字符串等。现对android资源知识进行简单记录。 具体的详细信息及用法&#xff0c;点击查看官方文档 分类 一般android资源分为可直接访问的系统资源和不可直接访问的原生资源 r…

ssh整合学习(1)

Hibernate框架 1 hibernate核心配置文件 &#xff08;0&#xff09;orm思想 -对象关系映射 &#xff08;1&#xff09;数据库信息 &#xff08;2&#xff09;hibernate信息 &#xff08;3&#xff09;映射配置 &#xff08;4&#xff09;hibernate核心配置文件 -如果单纯使用hi…

2018-2019-2 网络对抗技术 20165305 Exp6 信息搜集与漏洞扫描

1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法。 2.实践内容 &#xff08;1&#xff09;各种搜索技巧的应用 &#xff08;2&#xff09;DNS IP注册信息的查询 &#xff08;3&#xff09;基本的扫描技术&#xff1a;主机发现、端口扫描、OS及服务版本探测、具体服务…

Java 观察者模式

定义&#xff1a;定义了对象之间的一对多依赖&#xff0c;让多个观察者对象同时监听某一个主题对象&#xff0c;当主题对象发生变化时&#xff0c;它的依赖者&#xff08;观察者&#xff09;都会收到通知并更新 适用场景&#xff1a; 关联行为场景&#xff0c;建立一套触发机制…

苹果电脑快捷键有哪些?mac系统快捷键大全详细介绍(全部)_苹果MAC_操作系统_脚本之家

苹果电脑快捷键有哪些&#xff1f;mac系统快捷键大全详细介绍(全部) 电脑中的每对快捷键有对应了一种操作效果&#xff0c;对于使用苹果电脑的操作系统的新人来说&#xff0c;快捷键是个很麻烦的问题&#xff0c;要一个个的找到快捷键也不是很容易的问题&#xff0c;本文就为大…

Oracle数据库基础入门《一》Oracle服务器的构成

Oracle数据库基础入门《一》Oracle服务器的构成 Oracle 服务器是一个具有高性能和高可靠性面向对象关系型数据库管理系统&#xff0c;也是一 个高效的 SQL 语句执行环境。 Oracle 服务器具备以下的特点&#xff1a; ● 能够可靠的进行多用户环境下大量数据的处理&#xff0c;允…

虚拟机配置域名

1.虚拟机的hosts文件 2.本地电脑的hosts文件 转载于:https://www.cnblogs.com/xiaobiaomei/p/10790907.html

查看端口、关闭端口

1.在dos命令下查看tomcat占用的进程&#xff0c;首先在运行里输入cmd进入dos&#xff0c;输入命令“netstat -ano | findstr 8080”&#xff08;tomcat默认端口为8080&#xff09;。查出PID&#xff08;最后一列就是&#xff09;&#xff0c;假设PID为207340&#xff0c;输入命…

Web文件管理器 elfinder-彩龙社区

最近接到一个需求&#xff0c;客户需要能在web页面进行文件管理&#xff0c;在需求调研时发现一个很好用的开源web文件管理器插件 elfinder&#xff0c;功能比较完善&#xff0c;社区也很活跃&#xff0c;方便二次开发&#xff0c;源码在GitHub上有将近3K的star&#xff0c;而且…

基于spring-boot和elfinder的在线文件管理

基于spring-boot和elfinder的在线文件管理 大家好&#xff0c;我是帅气小伙&#xff0c;今天为大家分享的是一个轮子&#xff0c;最近在项目中需要一些CMS的功能&#xff0c;在线管理一些静态资源文件&#xff0c;在经过一番资料查找&#xff0c;最终决定使用elfinder。它的官方…

WPF使用IDataErrorInfo进行数据校验

WPF使用IDataErrorInfo进行数据校验 原文:WPF使用IDataErrorInfo进行数据校验这篇博客将介绍如何使用IDataErrorInfo进行数据校验。下面直接看例子。一个Customer类&#xff0c;两个属性(FirstName, Age) class Customer {public string FirstName{get;set;}public int Age{get…

web 界面设计 Axure元件样式

找不到原创了&#xff0c;若侵权&#xff0c;请联系博主删除&#xff01;谢谢

cf 786 B 线段树优化建图

cf 786 B 链接 CF 思路 n个点&#xff0c;3种建边方式&#xff0c;规模\(O(n^2)\) 线段树优化建图 注意 读入的数据好坑啊&#xff0c;说好的v,u变成了u,v。 两棵树&#xff0c;一棵出&#xff0c;一棵入。线段树的作用只不过是按照那个形状建边而已&#xff0c;并没啥用。 初始…

iPhone6和iPhone6 plus的iOS8设计尺寸参考指南

找不到原创了&#xff0c;若侵权&#xff0c;请联系博主删除&#xff01;谢谢

欧几里得

转载于:https://www.cnblogs.com/morui/p/10799359.html