HDU 5515 (ACM 2015 沈阳) Game of Flying Circus [贪心+二分]

HDU-5336 XYZ and Drops 模拟十滴水 “事件”模拟,建立以时间为key的优先队列 阅读详情

题意:两个人玩一个游戏,他们站在一个矩形的一角,矩形的每条边为300米,每个角被标为1,2,3,4,(他们一开始在1号位置),他们要依此跑过2,3,4,回到1,每个角先到的人会得到1分(当然最初的时候1号点是不算的,要转一圈回来先到的得分),其中一个人跑的很快(记作Speeder),能以V2速度跑,所以他必定直接按路线跑,即沿着矩形边框跑,但是另一个人跑的满,为V1的速度(V1<=V2),但是他很擅长打架(Fighter),能再跑的途中与Speeder战斗,并必定打败S,得到1分,且S会被晕T秒,问你最后F会赢不,输出Yes/No。

范围:所有数小于2000

解法:很明显, F要赢必定要打架,所以除了打架拿到的一分外,他还要至少获得2分才行,那么他可以选择的狙击策略(打晕Speeder!)必然是在最上的那条边或者最右的那条边,同时可以发现越早打晕越好(因为F要重新跑到2号点开始,因为他为了狙击S肯定不会先到2号点),然后枚举S剩下没跑的点谁先到,计算得分比一比就好啦。

求解时间的时候可以选择二分,精度比较高。(有人似乎因为解方程精度丢失WA了)

代码:


#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<iostream>
#include<stdlib.h>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<bitset>
#pragma comment(linker, "/STACK:1024000000,1024000000")
template <class T>
bool scanff(T &ret){ //Faster Input
    char c; int sgn; T bit=0.1;
    if(c=getchar(),c==EOF) return 0;
    while(c!='-'&&c!='.'&&(c<'0'||c>'9')) c=getchar();
    sgn=(c=='-')?-1:1;
    ret=(c=='-')?0:(c-'0');
    while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
    if(c==' '||c=='\n'){ ret*=sgn; return 1; }
    while(c=getchar(),c>='0'&&c<='9') ret+=(c-'0')*bit,bit/=10;
    ret*=sgn;
    return 1;
}
#define inf 1073741823
#define llinf 4611686018427387903LL
#define PI acos(-1.0)
#define lth (th<<1)
#define rth (th<<1|1)
#define rep(i,a,b) for(int i=int(a);i<=int(b);i++)
#define drep(i,a,b) for(int i=int(a);i>=int(b);i--)
#define gson(i,root) for(int i=ptx[root];~i;i=ed[i].next)
#define tdata int testnum;scanff(testnum);for(int cas=1;cas<=testnum;cas++)
#define mem(x,val) memset(x,val,sizeof(x))
#define mkp(a,b) make_pair(a,b)
#define findx(x) lower_bound(b+1,b+1+bn,x)-b
#define pb(x) push_back(x)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;

double eps=1e-7;

int main(){
    tdata{
        double T,v1,v2,t,l,r,x,y,t1,t2;
        scanf("%lf%lf%lf",&T,&v1,&v2);
        printf("Case #%d: ",cas);
        //最上边
        t1=300.0/v2;
        t2=600.0/v2;
        l=t1;
        r=t2;
        t=(300.0*sqrt(2.0))/v1;
        if(t<r){
            rep(i,1,200){
                double m=(l+r)/2.0;
                if((m*v1)*(m*v1)>(300.0*300.0+(m-t1)*v2*(m-t1)*v2))r=m;
                else l=m;
            }
            x=sqrt((l*v1)*(l*v1)-300.0*300.0);
            y=300.0;
            t=x/v1;
            int cot1=1;
            int cot2=1;
            rep(i,2,4){
                t1=(double(i-1)*300.0)/v1+t+l;
                t2=(double(i)*300.0)/v2+T;
                if(t1<t2+eps)cot1++;
                else cot2++;
            }
            if(cot1>cot2){
                printf("Yes\n");
                continue;
            }
        }
        //最右边
        t1=600.0/v2;
        t2=900.0/v2;
        l=t1;
        r=t2;
        t=300.0/v1;
        if(t<r){
            rep(i,1,200){
                double m=(l+r)/2.0;
                if((m*v1)*(m*v1)>(300.0*300.0+(t2-m)*v2*(t2-m)*v2))r=m;
                else l=m;
            }
            y=min(sqrt((l*v1)*(l*v1)-300.0*300.0),300.0);
            x=300.0;
            t=sqrt(300.0*300.0+(300.0-y)*(300.0-y))/v1;
            int cot1=1;
            int cot2=2;
            rep(i,3,4){
                t1=(double(i-1)*300.0)/v1+t+l;
                t2=(double(i)*300.0)/v2+T;
                //printf("%lf %lf\n",t1,t2);
                if(t1<t2+eps)cot1++;
                else cot2++;
            }
            if(cot1>cot2){
                printf("Yes\n");
                continue;
            }
        }
        printf("No\n");



    }
    return 0;
}


Game of Flying Circus 本题设定,如果Asuka和Shion同时触碰浮标,则Asuka得分,并且Asuka还可以与Shion在浮标处格斗。(因为 浮标#1 是起点,所以他们要触碰的第一个浮标是 浮标#2,此后,他们要按序触碰 浮标#3,#4,和#1)。Shion是Speeder选手,他的策略非常简单:沿最短路径触碰浮标#2、#3、#4、#1。:这类选手擅长格斗,他们会尽量通过和对手格斗来得分,因为Fighter的速度比Speeder慢,所以如果对手是一个Speeder,则Fighter很难通过触摸浮标来得分。,表示一个测试用例。 阅读详情

相关推荐

内含monkaa、driving、flyingchairs数据集

用blender做的3D引擎,包括光流数据、相机数据、RGB图像、视差及视察变化等数据包,可以用来训练神经网络,只提供样本,完整数据集地址在txt文档里。

hdu 5515 Game of Flying Circus 二分+阅读理解

The discovery of anti-gravitations technology changed the world. The invention of anti-gravitation shoes (Grav-shoes) enables people to fly in the sky freely. This led to the rise of a new sky sport:

protecteyesight的博客 799

字节跳动程序媛教你如何刷算法题:面试手撕代码我就没怕过

本人上一次刷题还是大一的C语言期末考试……但是面试中算法考核截止上岸前一直保持着100%正确率的光辉记录。 本文将给你指明一条刷题的决胜指南。并从算法的重要性、题库的选择以及刷题的三大步骤分别进行讲解,彻底解决你所有关于面试算法所有的困扰。

Stay Hungry Stay Foolish 求知若饥 虚心若愚 2万+

7.6.9 Game of Flying Circus

2023年暑期夏令营

jianguosongzi的博客 294

小红书私信接口与Hook技术实战:微信跳转卡片的合规与破解之道

本文深入探讨了小红书私信接口与Hook技术的实战应用,重点解析了微信跳转卡片的合规使用与破解方法。通过官方私信接口的合规玩法与Xposed框架的Hook技术对比,为开发者提供了技术选型指南和实战建议,帮助实现高效的用户跳转与转化。

weixin_30399821的博客 735

010Editor实战:5分钟破解Zip伪加密文件(附BUUCTF真题解析)

本文详细介绍了如何使用010Editor快速破解Zip伪加密文件,包括BUUCTF真题的完整解析。通过修改关键字节,轻松解除伪加密状态,适用于CTF竞赛和实际工作场景,提升文件处理效率。

weixin_29325007的博客 326

HDU5515 Game of Flying Circus(二分)

题意:题解有翻译,然后自己拦截对手时候可以任意走,当然是直线最快啦 题解:http://www.cnblogs.com/qscqesze/p/4931912.html #include<bits/stdc++.h> using namespace std; #define LL long long #define pb push_back #define X first #define Y sec

qwesde 799

利用Civil3D装配设计器(SAC)建设高度形状自适应挡土墙

之前的模型都是点线,最后加一个形状,形成面。再根据现场测得的挡土墙的墙脚的点生成中心线(alignment),在中心线的基础上生成在现有地面(existing ground level)的高程(profile)。简单的说,该墙的墙趾啊,墙踵啊,基底下面那个把儿啊,都是随着高度变化的,而高度是随着下面这个高程图变化的。接着出现角度和Y的文本框,角度92,y 值随便写一个,然后重要的是,高程目标选路面(优先于Y值)。意思是P2的高度,也就是路面的高程,减去P10,墙脚高程,再减去墙脚埋进地里的深度0.8m。

测量老覃 的博客 1127

HDU 5515 Game of Flying Circus 二分

题意:两个人绕四边形顺时针跑,速度v1 v2,谁先跑到一个角落得一分 ,一个人速度快,另一个能打 , 如果相遇 能打 打 另一个得一分 ,问能打的人到终点能赢吗? 思路: 二分相遇的时间,然后在算出他们在相遇的地方(如果能相遇)   然后根据情况算出相应的得分,就可以了  代码: #include #include #include using namespace std; const

一切顺其自然 570

RV1126平台librga图像旋转裁剪实战

本文详细介绍了在rv1126平台上使用librga库实现图像旋转和裁剪的方法。首先解释了librga的基本概念和关键对象,包括源图像、目标图像和操作参数。随后分步骤说明了初始化设置、缓冲区创建、裁剪区域定义(通过坐标和尺寸参数)以及旋转操作(支持常见角度)。提供了完整的示例代码演示如何组合裁剪和旋转操作,并强调了性能优化、错误处理、格式支持等注意事项。通过硬件加速的librga,可以在rv1126平台上高效完成图像处理任务。

hwmxrhx的博客 1543

STM32(HAL库)驱动HC-SR04测距模块

本文介绍通过STM32F103C8T6单片机对HC-SR04测距模块进行驱动,并且通过串口对数据进行打印。

weixin_44597885的博客 2203

HDU 5514 Game of Flying Circus

HDU5515 首先这是一道阅读理解题,建议大家一定要好好地读题,不忽略每一个细节。 推荐大家读读这个博客题目翻译 思路比较简单,考虑fighter与speeder相遇在#2到#3的线段和相遇在#3和#4的线段的两种情况,分别卡列方程卡限制条件 一元二次方程最好能够用二分求解,精度好并且能够直接二分解x的范围 下面的解法直接对方程进行求解,过程中注意精度:AC代码,略丑陋:#inclu

风城 555

Python 爬虫实战:抓取新闻网站上的新闻标题和内容

随着信息化的进展,新闻网站已经成为人们获取新闻和时事资讯的主要途径。许多新闻网站提供了丰富的内容,涵盖了社会、政治、科技、娱乐等多个领域。通过抓取新闻网站的内容,我们可以分析新闻的趋势,获取某一领域的最新动态,甚至为数据分析和机器学习提供数据支持。本文将详细介绍如何使用 Python 编写爬虫,抓取新闻网站上的新闻标题和内容。requests:发送 HTTP 请求,获取页面内容。:解析 HTML 页面并提取数据。Selenium:抓取动态加载的网页内容。新闻API。

2201_76125261的博客 3407

【HDU5515 2015沈阳赛区G】【解方程or二分 模拟】Game of Flying Circus 跑垒游戏 【翻译错误 出题事故】

Game of Flying Circus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 28    Accepted Submission(s): 8 Problem Description The discovery

snowy_smile的博客 3422

【箱子之字形摆放】python实现-附ChatGPT解析

箱子之形摆放有一批箱子(形式为宁符串,设为str) ,要求将这批箱子按以之形的顺序摆放在宽度为n的空地,请输出箱子的摆放结果。例如:箱子为ABCDEFG,空地宽度为3,摆放结果如图:则输出结果为:AFGBECD输入一行字符串,通过空格分制,前面部分为字母或数字组成的字符串str,表示;后面部分为一个数字n,表示。ABCDEFG 3箱子摆放结果,如题目示例所示AFGBECD。

sinat_29950703的博客 370

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

HDU 5515 Game of Flying Circus (2015沈阳G题&&二分模拟)

题意:参考该文章分析:昨天到今天wa了26发,题意没搞懂+解方程无限wa,坑点:打了一架以后这个人就获得了一分,所以最终两个人共可获得5分。据说解方程卡精度,无限wa。。。泪崩。。。代码:#include <bits/stdc++.h> #define LL long long #define FOR(i,x,y) for(int i = x;i < y;++ i) #define IFOR(i,

无限大な梦のあとの 何もない世の中じゃ 895

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【HDU5515】【2015ACM/ICPC亚洲区沈阳站】 Game of Flying Circus 二分

Game of Flying Circus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 504 Accepted Submission(s): 127Problem Description The discovery of

ATOD 1013

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

HDU 5515 Game of Flying Circus

翻译&题解: http://blog.youkuaiyun.com/snowy_smile/article/details/49535301  代码: #include using namespace std; const double eps=1e-8; double t,v1,v2; bool solve(){ double le=0,ri=300,mid; if(v1==v2

DT2131 506

HDU5515-Game of Flying Circus

这里的题解写的非常好。 http://blog.youkuaiyun.com/snowy_smile/article/details/49535301代码:#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> using namespace std; double t1; d

superxtong的博客 426

【hdu5515】【2015ACM/ICPC亚洲区沈阳站】 Game of Flying Circus 题意&题解&代码(C++)

hdu acm 二分 精度

曾经追梦的happy时光 1985

HDOJ 5515 Game of Flying Circus 【2015沈阳现场赛】杂题(数学二分)

这个题就是个阅读理解!!! 然后就是解一元二次方程:因为可以猜测得到在区间内的单调性,所以可以直接用二分法解方程来判断 贴两个写得好的博客吧:思路真的很直接 qscqesze snowy_smile 因为总共有5分(2-3-4-1四个点的分数)+打架的分数 所以,我如果打晕他之后,一定是需要马上跑的(不会浪费时间在等他) 所以,有v1,v2之后,相遇的打他的点

ACdream 562

hdu 5515 Game of Flying Circus(二分、模拟)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5515 这里有篇文章,题意和思路都讲的非常好! 链接:http://blog.youkuaiyun.com/snowy_smile/article/details/49450163 代码: #include #include #include #define eps 0.000000

hahahaha 906

HDU Dome of Circus

#include #include #include #include #include #include #include #include #include //#include "myAlgorithm.h" #define MAX 10005 #define INF (1e8 + 5) #define eps 1e-7 #define Rep

极度猥琐 935
上一篇: HDU 5512 (ACM 2015 沈阳)Pagodas [基础数学]
下一篇: HDU 5521 [ACM 2015 沈阳] Meeting [最短路]
GrassTreeFlower
博客等级 码龄11年 14粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值