星球大战

小编 2026-06-27 阅读:425 评论:0
链接:https://ac.nowcoder.com/acm/contest/321/F 题目描述 FF上次在大家的帮助下算出了呼唤到了足够多的人数再一次阻拦了丧心病狂的NE。然后机智的FF为了继续摸鱼...

链接:https://ac.nowcoder.com/acm/contest/321/F

题目描述

FF上次在大家的帮助下算出了呼唤到了足够多的人数再一次阻拦了丧心病狂的NE。然后机智的FF为了继续摸鱼决定搬离地球到达BD星来防止NE再次gank。

可是FF错误估计了NE丧心病狂的程度。NE居然拿出了终极武器“朗基努斯之枪”。用“朗基努斯之枪”可以发出激光攻击BD星。NE决定直接摧毁BD星让FF无处可逃。这个时候BD哥站了出来。

BD哥:“正好试试我新研发的激光抵御装置1.0版本-反射护罩!”

FF:“难道是传说中的禁卡,可以破坏敌人所有的攻击表示的怪兽吗!”

BD哥:“FF你在胡说什么。”(说着FF遭到了BD哥的敲打,生命-1。

BD哥详细的给FF解释了一下这个装置的效果:

________________________________________

这个装置是一个球体,任何穿过这个球体的激光都会遭到削弱。

为了简化题目,我们将其看做二维平面:

\"\"

攻击点A即NE所在位置,我们保证反射护罩的圆心的y坐标与攻击点A的y坐标相同。

令y轴为FF所在的BD星的地面。

每次攻击发射一条激光,有一个初始能量值Ci。

若激光穿过反射护罩,那么它将与反射护罩产生2个交点B,C(更接近A的交点为B,远者为C,保证B、C不重合)。

记AB长度为a,BC的长度为b,那么这条激光的能量值就会减少a2+ab。

削减后能量值如果小于0则光线消失。(即不会有能量值为负的光线到达BD星);

FF想知道,最后BD星会遭受的总共多少能量值的激光攻击。

输入描述:

第一行包含一个正整数T(1<=T<=300)。
接下来有T组数据。
每组数据的第一行包含5个整数,xa,ya,xr,r,n(1<=xa,ya,xr,r<=15000;1<=n<=1000),分别代表A的x坐标,A的y的坐标,反射装置的圆心的x坐标,反射装置的半径,与攻击次数。
我们保证攻击点A在圆外并且xa>xr;
接下来n行。每行包含2个整数 y0,Ci(0<=y0<=15000,0<=Ci<109),代表A发出的攻击所想要攻击到的目标点(0,y0)和这条激光的能量值Ci。

输出描述:

对于每组数据,输出一行,

包含一个整数,表达受到的所有攻击的能量值的和。

示例1

输入

复制

1
3 1 1 1 5
0 2
2 2
1 4
4 10
5 10

输出

复制

21

 

首先,说下利用三角形相似的解法。

\"\"

话不多说,直接上图。

#include<bits/stdc++.h>
#define    ll long long

int T;
int xa,ya,xr,r,n;
int main()
{
    int T;
    scanf(\"%d\",&T);
    while(T--)
    {
        scanf(\"%d%d%d%d%d\",&xa,&ya,&xr,&r,&n);
        double num_puts=0;
        int y;
        double energy;
        double l1,l2,l3;
        double a,b;
        while(n--)
        {
          scanf(\"%d%lf\",&y,&energy);
          l1=(xa*xa-xa*xr)*1.0/sqrt(xa*xa+(y-ya)*(y-ya));
          l2=(xa-xr)*abs(y-ya)*1.0/sqrt(xa*xa+(y-ya)*(y-ya));
          if(l2>r)
          {
              num_puts+=energy;
              continue;
          }
            l3=sqrt(r*r-l2*l2);
          a=l1-l3;
          b=2*l3;
          double c=energy-a*a-a*b;
          if(c<0) c=0;
          num_puts=num_puts+c;
        }
        printf(\"%lld\\n\",(ll)num_puts);
    }
    return 0;
}

 

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表