博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【计算几何】【bitset】Gym - 101412G - Let There Be Light
阅读量:5967 次
发布时间:2019-06-19

本文共 1836 字,大约阅读时间需要 6 分钟。

三维空间中有一些(<=2000)气球,一些光源(<=15),给定一个目标点,问你在移除不超过K个气球的前提下,目标点所能接受到的最大光照。

枚举每个光源,预处理其若要照射到光源,需要移走哪些气球,构建成一个bitset。

然后再2^15枚举光源集合,看看要让集合中所有光源照到目标点所要移走的气球是否在K以内,尝试更新答案。

需要注意的一点是,三维叉积叉出来的向量的长度的绝对值,就是原来两个向量所张成的平行四边形面积的大小。

#include
#include
#include
#include
using namespace std;bitset<2001>S[16],Ss;const double EPS=0.0000001;struct Point{ int x,y,z,t; Point(const int &x,const int &y,const int &z,const int &t){ this->x=x; this->y=y; this->z=z; this->t=t; } Point(const int &x,const int &y,const int &z){ this->x=x; this->y=y; this->z=z; } Point(){} void read(){ scanf("%d%d%d%d",&x,&y,&z,&t); } double length(){ return sqrt((double)x*(double)x+(double)y*(double)y+(double)z*(double)z); } int length2(){ return x*x+y*y+z*z; }}ba[2010],lig[17],aim;typedef Point Vector;Vector operator - (const Point &a,const Point &b){ return Vector(a.x-b.x,a.y-b.y,a.z-b.z);}bool in(const Point &BA,const Point &p){ return (BA-p).length2()
0) return (double)v3.length(); else return fabs((double)Cross(v1,v2).length())/(double)v1.length();}int n,m,K;double ans;int main(){// freopen("g.in","r",stdin); while(1){ scanf("%d%d%d",&n,&m,&K); if(!n && !m && !K){ return 0; } ans=0; for(int i=1;i<=m;++i){ S[i].reset(); } for(int i=1;i<=n;++i){ ba[i].read(); } for(int i=1;i<=m;++i){ lig[i].read(); } scanf("%d%d%d",&aim.x,&aim.y,&aim.z); for(int i=1;i<=m;++i){ for(int j=1;j<=n;++j){ bool ina=in(ba[j],aim),inl=in(ba[j],lig[i]); if((ina^inl) || ((!ina && !inl) && DisToSegment(ba[j],aim,lig[i])-(double)ba[j].t
K){ goto OUT; } tmp+=(double)lig[j].t/(double)(aim-lig[j]).length2(); } } ans=max(ans,tmp); OUT:; } printf("%.10lf\n",ans); } return 0;}

转载于:https://www.cnblogs.com/autsky-jadek/p/7241696.html

你可能感兴趣的文章
L323 英语有必要学语法吗
查看>>
Sqoop概述
查看>>
IDEA/Eclipse安装 Alibaba Java Coding Guidelines 插件
查看>>
OOD
查看>>
如何添加代码注释
查看>>
SYN Flood
查看>>
51NOD 2026:Gcd and Lcm——题解
查看>>
「小程序JAVA实战」小程序的留言和评价功能(70)
查看>>
Java 8 Optional 类
查看>>
76.Nodejs Express目录结构
查看>>
45.国际化-选择使用资源文件
查看>>
tar命令解压jdk.tar.gz包 报错 gzip: stdin: not in gzip format
查看>>
C语言中覆盖库函数
查看>>
在本地生成ssh-key 免密码远程clone GitLab中的项目到本地
查看>>
win10下安装mysql5.7.16(解压缩版)
查看>>
PropertyGrid 绑定动态的属性与值的集合
查看>>
进程和线程的区别【转】
查看>>
LeetCode:485. Max Consecutive Ones
查看>>
删除字符,用外部函数
查看>>
WebApi系列(从.Net FrameWork 到 .Net Core)
查看>>