2021牛客多校赛第二场_YPO的博客-程序员ITS203

技术标签: 算法  2021牛客多校赛  acm竞赛  

传送门

A
B
C水题
D水题
E
F计算几何求两球的体积并
G动态规划
H
I模拟bfs
J
K模拟贪心
L


F
题意:三维坐标系,给4个点A、B、C、D的坐标以及K1和K2两个数,满足|AX|>=K1*|BX|的点X形成集合,满足|CY|>=K2*|DY|的点Y形成集合。求X集合与Y集合并集的体积

解析:首先当然需要知道X集合与Y集合大致长什么样子,推导式子很容易得知其实两个集合都是球,且可以得知球的球心与半径。那么之后就是求两个球的体积交了,套板子即可。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
double pi=acos(-1.0);
 
double x[5],y[5],z[5];
 
int main()
{
    
    ll t;
    scanf("%lld",&t);
    while(t--)
    {
    
        for(int i=1;i>=0;i--)
        {
    
            cin >> x[i] >> y[i] >> z[i];
        }
        for(int i=3;i>=2;i--)
        {
    
            cin >> x[i] >> y[i] >> z[i];
        }
        double k1, k2;
        cin >> k1 >> k2;
        double ab=sqrt((x[0]-x[1])*(x[0]-x[1])+(y[0]-y[1])*(y[0]-y[1])+(z[0]-z[1])*(z[0]-z[1]));
        double l1=ab*1.0/(k1+1.0), l2=ab*1.0/(k1-1.0);
        double r1=(l2+l1)/2.0;
        double xab=(x[0]-x[1])*1.0/ab, yab=(y[0]-y[1])*1.0/ab, zab=(z[0]-z[1])*1.0/ab;
        double cax=x[0]+xab*(r1-l1), cay=y[0]+yab*(r1-l1), caz=z[0]+zab*(r1-l1);
        double cd=sqrt((x[2]-x[3])*(x[2]-x[3])+(y[2]-y[3])*(y[2]-y[3])+(z[2]-z[3])*(z[2]-z[3]));
        l1=cd*1.0/(k2+1.0);
        l2=cd*1.0/(k2-1.0);
        double r2=(l2+l1)/2.0;
        double xcd=(x[2]-x[3])*1.0/cd, ycd=(y[2]-y[3])*1.0/cd, zcd=(z[2]-z[3])*1.0/cd;
        double cbx=x[2]+xcd*(r2-l1), cby=y[2]+ycd*(r2-l1), cbz=z[2]+zcd*(r2-l1);

        double ans=0;
        double xa,ya,za,ra,va;
        double xb,yb,zb,rb,vb;
        xa=cax; ya=cay; za=caz; ra=r1;
        xb=cbx; yb=cby; zb=cbz; rb=r2;
 
        //printf("%f %f %f %f\n",xa,ya,za,ra);
        //printf("%f %f %f %f\n",xb,yb,zb,rb);
 
 
        double d=sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb)+(za-zb)*(za-zb));
        va=(4.0/3.0)*pi*(ra*ra*ra);
        vb=(4.0/3.0)*pi*(rb*rb*rb);
 
        if(d>=ra+rb)
        {
    
            ans=0;
        }
        else if(d+min(ra,rb)<=max(ra,rb))
        {
    
            ans=min(va,vb);
        }
        else
        {
    
            double ka,kb,vva,vvb;
            ka=ra-(((ra*ra)-(rb*rb)+(d*d))/(2*d));
            kb=rb-(((rb*rb)-(ra*ra)+(d*d))/(2*d));
            vva=(pi*ka*ka*(3*ra-ka))/3.0;
            vvb=(pi*kb*kb*(3*rb-kb))/3.0;
            ans=vva+vvb;
        }
        printf("%.10f\n",ans);
    }
    return 0;
}



G
题意:给定n个区间,需要将区间分为k组,每一个组内所有区间取交集,将每个组得到的长度取和,让这个和最大,输出这个值

解析:


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44588874/article/details/118914431

智能推荐

记一个webpack配置问题Conflict: Multiple chunks emit assets to the same filename_crayon-shin-chan的博客-程序员ITS203

1.简介webpack升级后发现build出现错误2.解决使用了CompressionPlugin,而选项的filename有问题,改成如下即可 new CompressionPlugin({ filename: "[path][base].gz", algorithm: 'gzip', test: new RegExp('\\.(js|css)$'), thresho

MySQL自定义函数用法详解-复合结构自定义变量/流程控制--及其相关案例_真土的博客-程序员ITS203

自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL。所以UDF是对MySQL功能的一个扩展创建和删除自定义函数语法:创建UDF:  CREATE [AGGREGATE] FUNCTION function_name(parameter_name type,[para

GCD介绍与总结_Nerazzur的博客-程序员ITS203

一、简单介绍1.什么是GCD?全称是Grand Central Dispatch,可译为“大中心调度”纯C语言,提供了非常多强大的函数 2.GCD的优势GCD是苹果公司为多核的并行运算提出的解决方案GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)程序员只需要告诉GCD想要执行什么任务,不需要编写任何

Spring定时器时间配置_从此沉默的博客-程序员ITS203

Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)    2007-07-25 13:52    什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定)。    这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文件,但总需要重新启动we

台式计算机最常用的10总线是,2016年9月计算机一级考试题库_乐游西奥的博客-程序员ITS203

2016年9月计算机一级考试题库1、在计算机系统中,BUS的含义是()A、公共汽车B、网络传输C、总线D、主机2、10进制数127转换为8进制数是()A、157B、167C、177D、2073、键盘属于计算机的()A、显示设备B、通讯设备C、输入设备D、输出设备4、在计算机运行时,把程序和数据一样存放在内存中,这是1946年由()所领导的研究小组所正式提出并论证的。(WWW.nIuBB.NeT)A...

arm-linux交叉编译工具出现cannot open linker script file test:错误解决方法_九只太阳的博客-程序员ITS203

关于arm-linux交叉编译工具出现cannot open linker script file test:错误解决方法使用arm-none-linux-gnueabi-ld重新定位他们的数据,并绑定符号引用。编译的时候会出现下面这个问题。arm-none-linux-gnueabi-ld: cannot open linker script file test: 没有那个文件或目录。出现这个问题的原因是因为arm-none-linux-gnueabi-ld中的一个参数使用错误导致的。我写的ma

随便推点

Python3实现快速排序 通俗易懂_大猪猪猪哥的博客-程序员ITS203

Python3实现快速排序快速排序 是一种交换排序,属于分治算法。思路:对于要排序的元素集合,指定集合的第一个元素为基准点,通过一系列的扫描和交换(见下面的代码),让基准点左边的元素比基准点小,让基准点右边的元素比基准点大,这样分成了以基准点为界的左右两个子集合,对于每个子集合递归地重复上述步骤,直到每个最小集合只有一个元素时,就说明每个最小子问题解决完成,从而总问题解决完成。代码:# ...

手机游戏修改群出品----修改之浅谈_zypsg的博客-程序员ITS203

http://club.joyes.com/Announce/Announce.asp?BoardID=5008&ID=5084397&E=0 手机游戏修改群出品----修改之浅谈 已加入置顶应用技术帖←凯凯 这次改动,是我们内部讨论的结果,请大家继续支持 初级篇恩,最近开始修改游戏,有了一点自己的体会和心得,当然要感谢kim,yy,sofy,小召等人的帮助和指点,这篇文章也来之不易,共写了两次,

linux tar.gz zip 解压缩 压缩命令_希哈科技的博客-程序员ITS203

http://apps.hi.baidu.com/share/detail/37384818download ADT linkhttp://dl.google.com/android/ADT-0.9.6.zipdownload SDK linkhttp://dl.google.com/Android/android-sdk_r11-linux_x86.tgz(可以通过FQ得到具体的...

马踏棋盘(骑士周游列国)__贪心算法_viki_vv的博客-程序员ITS203

最近研究了马踏棋盘的问题,分享一下心得。问题描述:将国际象棋的骑士放置任意位置,使其按规则不重复走完所有的棋格。该问题的实质应该是:哈密顿路径的遍历。首先画图分析一下具体环境:如图所示,每个棋格有且仅有八个前进方向,标记为“1…8”,每个方向不一定合法(超出棋盘)这时可以用递归回溯的思想对路径进行探索,思路是:从方向1开始探索路径,一条路走到黑,发现走不了就回头走其他的路再具体点的...

五个步骤建立适合自己企业的优秀网站_weixin_34406086的博客-程序员ITS203

怎样设计一个适合自己企业的优秀网站呢?今天网站专家为大家介绍企业如何建站的五大步骤,希望能给您带来帮助: 一、做网站前期准备 1、关键字选择 首先,网站会有一个主题,比如我是做人才网的,又或者是做复读机或者其他等等。这个主题是你要先有的。 有个这个主题了。你就要准备发散思维了。想所有尽可能多的相关...

如何培养科研人员的科研思维,加入相关课程组?_科研小白 新人上路的博客-程序员ITS203

python matlab 深度学习 人工智能 科研可视化 图像处理 科研绘图 AI 课题组 神经网络、支持向量机、决策树、随机森林 群优 化算法,如遗传算法、蚁群算法、蝙蝠算法 心电、肌电、血压、血氧饱和度、惯性传感器等 生理信号采集 成分分析、随机投影、互信息、 非负矩阵分解、稀疏优化...