[杂题]HDOJ5515 Game of Flying Circus
嗯。。。这是一道水题。。。
鉴于还没人写这题的题解, 那我就来写一发。
题意:有个边长为300米的正方形
嗯 这样标号
有两个人A和S,开始的时候A、S都在1(左下角)那个位置。
两个人都要按照2、3、4、1的顺序走。
有两个得分的方法: ①. 比对手先走到点(2或3或4或1) 先走到的得1分,后走到的不得分。
②. A把S打一顿,A得一分。
题目问的是A能不能获得胜利。
A在正方形里面也是可以随便走的。(比如A能直接从1走直线到3, 但是如果他要得分,他必须回到2,按照2341的顺序走 才能得分)
A只能打S一次,打完之后S会昏迷T秒。A不能在 S到2号点 之前打晕他。
题目保证A的速度$v_1$小于等于S的速度$v_2$。
若是A、S同时到达 点 上,那么是A或B先得分,A再打人的。如果两个人都能得分,那A先得分
分析:
A比S慢,所以肯定要尽早把S打昏了,才能开始得分。
因为A也要按照2341的顺序走,所以打晕S的位置应尽量靠近2(这样重复走的路才少)
因为总共有5分(2、3、4、1四个点四分,A打S 一分),所以A要至少获得3分才能获胜,也就是至少得到2个点的分。
总体可以分为 在2、3之间把S打晕 和 在3、4之间把S打晕 两种情况。
(1、4之间打晕明显是不行的。因为S已经通过2、3、4走到1、4之间了, 那么S就已经得到了3分,A已经不可能获胜了)
特别的,考虑一下4号点。
若A选择在4号点打晕S,那么A是从1走过来的,此时A不能得分。(根据题目 先得分 再打人 )那么S就先得到4号点的分数,A之后才打晕S,
故4号点打晕S也是不能获胜的。
在2、3或者3、4打晕S的情况,(如上分析 要尽量靠近2号点,所以)应在恰好相遇的地方打晕S,而不存在 到达某地 等着S过来打晕他的情况。
那就只要解出相遇的位置,
在2、3打晕S的 判断下A能否先到(或者同时)到4号点
在3、4打晕S的 判断下A能否先到(或者同时)到1号点
Ⅰ.

设相遇点为A 2到A的距离为x
$\frac{\sqrt{x^2+300^2}}{v_1}=\frac{300+x}{v_2}$ 解出$x$
判断A(回2)到3、4的时间是否小于等于S昏迷之后到4的时间即可。
Ⅱ.

$\frac{\sqrt{x^2+300^2}}{v_1}=\frac{900-x}{v_2}$ 解出$x$
判断A(回2)到3、4、1的时间是否小于等于S昏迷之后到1的时间即可。
这种情况A回2号点肯定是走的直线,不必经过3号点。
用求根公式的时候注意正负的取舍(因为是单调的,所以不可能两个根都合法)
(分母为$v_1^2-v_2^2$) 注意分母为零,也就是$v_1=v_2$的时候 特判一下。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int, int> PI;
const int N=1e5;
const double eps=1e-;
const LL mod=1e9+; int main()
{
int t, ca=;
scanf("%d", &t);
while(t--)
{
double t, v1, v2;
scanf("%lf%lf%lf", &t, &v1, &v2);
printf("Case #%d: ", ca++);
if(v1==v2)
{
puts("Yes");
continue;
}
double tt1=*sqrt(2.0)/v1; // a dao 3
double tt2=600.0/v2; // b dao 3
double v12=v1*v1, v22=v2*v2;
double t1=300.0/v1; // a dao 4
double t2=900.0/v2; // b dao 4
if(t1>=t2)
{
puts("No");
continue;
}
if(tt1<=tt2) // zai 2 3
{
double dt=(*v12)*(*v12)-*(v12-v22)*(v12*-*v22);
double x=(-600.0*v12+sqrt(dt))/2.0/(v12-v22);
if((x+)/v1<=t+(-x)/v2)
{
puts("Yes");
continue;
}
}
// zai 3 4 double dt=(*v12)*(*v12)-*(v12-v22)*(v12*-*v22);
double x=(1800.0*v12-sqrt(dt))/2.0/(v12-v22);
if(sqrt((300.0-x)*(300.0-x)+90000.0)/v1+900.0/v1<=t+(+x)/v2)
puts("Yes");
else
puts("No"); }
return ;
}
HDOJ5515
这题题目比较长,所以大家都没看吧。。。
重现抢了个FB 哈哈
[杂题]HDOJ5515 Game of Flying Circus的更多相关文章
- HDU 5515 Game of Flying Circus 二分
Game of Flying Circus Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem ...
- 正睿OI DAY3 杂题选讲
正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n ...
- dp杂题(根据个人进度选更)
----19.7.30 今天又开了一个新专题,dp杂题,我依旧按照之前一样,这一个专题更在一起,根据个人进度选更题目; dp就是动态规划,本人认为,动态规划的核心就是dp状态的设立以及dp转移方程的推 ...
- wangkoala杂题总集(根据个人进度选更)
CQOI2014 数三角形 首先一看题,先容斥一波,求出网格内选三个点所有的情况,也就是C(n*m,3);然后抛出行里三点共线的方案数:C(n,3)*m; 同理就有列中三点共线的方案数:n*C(m,3 ...
- 2019暑期金华集训 Day6 杂题选讲
自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...
- Atcoder&CodeForces杂题11.7
Preface 又自己开了场CF/Atcoder杂题,比昨天的稍难,题目也更有趣了 昨晚炉石检验血统果然是非洲人... 希望这是给NOIP2018续点rp吧 A.CF1068C-Colored Roo ...
- Codeforces 杂题集 2.0
记录一些没有写在其他随笔中的 Codeforces 杂题, 以 Problemset 题号排序 1326D2 - Prefix-Suffix Palindrome (Hard version) ...
- 【Java面试】-- 杂题
杂题 2019-11-03 21:09:37 by冲冲 1.类加载器的双亲委派机制 类加载器:把类通过类加载器加载到JVM中,然后转换成class对象(通过类的全路径来找到这个类). 双亲委派机制 ...
- 贪心/构造/DP 杂题选做Ⅱ
由于换了台电脑,而我的贪心 & 构造能力依然很拉跨,所以决定再开一个坑( 前传: 贪心/构造/DP 杂题选做 u1s1 我预感还有Ⅲ(欸,这不是我在多项式Ⅱ中说过的原话吗) 24. P5912 ...
随机推荐
- 安装WordPress详细教程指南
最近准备自己建一个个人博客,以便分享一些自己工作生活中的一些观点及经验,建博客当然选wordpress,毕竟wordpress是为博客而生的嘛.下边记录一下自己安装WordPress的详细过程指南,亦 ...
- Linux上iptables防火墙的基本应用
1.安装iptables防火墙 yum install iptables -y 2. 清除已有的iptables规则 iptables -F iptables -X iptables -Z 3.显示i ...
- ORACLE 基础知识积累
创建ORACLE 数据库,首先用Sys账号角色为dba进入数据库然后,然后根据创建数据库的表空间,然后创建角色,创建完角色后将表空间的权限授予角色. SQL语句如下: create temporary ...
- 使用tortoise git管理gitolite版本库
gitolite-admin是用于管理git版本库的版本库,将其从服务器上clone下来. 使用tortoise git clone的时候需要指定私钥,私钥的格式是ppk的,需要使用putty的PUT ...
- 分享:linux下apache服务器的配置和管理
linux下apache服务器的配置和管理. 一.两个重要目录: Apache有两个重要的目录:1.配置目录/etc/httpd/conf:2.文档目录/var/www: 二.两种配置模式: Apac ...
- [C/C++] 各种C/C++编译器对UTF-8源码文件的兼容性测试(VC、GCC、BCB)
在不同平台上开发C/C++程序时,为了避免源码文件乱码,得采用UTF-8编码来存储源码文件.但是很多编译器对UTF-8源码文件兼容性不佳,于是我做了一些测试,分析了最佳保存方案. 一.测试程序 为了测 ...
- hdu 5720 BestCoder 2nd Anniversary Wool 推理+一维区间的并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5720 题意:有n(n <= 105)个数 ,每个数小于等于 1018:问在给定的[L,R]区间中 ...
- VS2010调试入门指南
1 导言 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的)的时间远多于写代码的时间.通常,debug是指发现缺 ...
- cocos2dx中加载图片资源的方法,和从内存中获取已经加载的图片资源的方法
游戏中通常需要将常用的资源如:声音,图片,plist文件,提前加载进内存,以加快游戏的流畅度 1.预加载声音: SimpleAudioEngine::getInstance()->preload ...
- C# 获取数组的子集
private static void PrintSubItems(int[] source) { int i = 1; int total = int.Parse(Math.Pow(2, sourc ...