令$(x,y,z)$为狙击手的坐标,其攻击范围即以$(x,y,z)$为中心的$(2k)^{3}$​的立方体

为了避免$k$的影响(二分答案会多一个$\log$),不妨将其变为以$(x,y,z)$为左下角的$(2k)^{3}$​​​的立方体,注意到这样仅仅是实现了平移,并不影响答案

由此,注意到任意时刻,$x,y$和$z$都不应小于剩余点中对应维坐标的最小值,同时若不是最小值调整为最小值显然也不劣,因此不妨假设都恰为最小值

进一步的,显然最终的$k$必然要能消灭其中一个敌人,否则无法移动,那么也就永远不能消灭这些敌人,因此不妨将答案对最小的$k$(能攻击到其中一个敌人)取$\max$,并消灭对应的敌人

关于这个过程,可以用三个set来维护,并且每一次至少消灭一个敌人,即至多$o(n)$次

总复杂度为$o(n\log n)$,可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 500005
4 struct Data{
5 int x,y,z;
6 }a[N];
7 set<pair<int,int> >Sx,Sy,Sz;
8 int t,n,ans;
9 int dis(Data x,Data y){
10 return max(max(x.x-y.x,x.y-y.y),x.z-y.z);
11 }
12 void del(int k){
13 Sx.erase(make_pair(a[k].x,k));
14 Sy.erase(make_pair(a[k].y,k));
15 Sz.erase(make_pair(a[k].z,k));
16 }
17 int main(){
18 scanf("%d",&t);
19 while (t--){
20 scanf("%d",&n);
21 ans=0,Sx.clear(),Sy.clear(),Sz.clear();
22 for(int i=1;i<=n;i++){
23 scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
24 Sx.insert(make_pair(a[i].x,i));
25 Sy.insert(make_pair(a[i].y,i));
26 Sz.insert(make_pair(a[i].z,i));
27 }
28 while (!Sx.empty()){
29 int x=(*Sx.begin()).second;
30 int y=(*Sy.begin()).second;
31 int z=(*Sz.begin()).second;
32 Data o=Data{a[x].x,a[y].y,a[z].z};
33 ans=max(ans,min(min(dis(a[x],o),dis(a[y],o)),dis(a[z],o)));
34 if (dis(a[x],o)<=ans)del(x);
35 if (dis(a[y],o)<=ans)del(y);
36 if (dis(a[z],o)<=ans)del(z);
37 }
38 printf("%d\n",(ans+1>>1));
39 }
40 return 0;
41 }

[hdu7032]Command and Conquer: Red Alert 2的更多相关文章

  1. A Complete List of .NET Open Source Developer Projects

    http://scottge.net/2015/07/08/a-complete-list-of-net-open-source-developer-projects/?utm_source=tuic ...

  2. .NET 开源开发项目【翻译】

    原文地址 本文列出了 .NET 开源开发项目(open source developer projects).意在包括对开发过程的所有方面有所帮组的项目.对于消费项目(consumer project ...

  3. github 排名前100的项目

    dotnet/roslyn The .NET Compiler Platform ("Roslyn") provides open-source C# and Visual Bas ...

  4. alert执行顺序

    <p><span id="span1">Hello World!</span></p> <script type=" ...

  5. alert 执行顺序问题

    <p><span id="span1">Hello World!</span></p> <script type=" ...

  6. Dynamics 365 CRM Connected Field Service 自动发送command

    上期降到了怎样部署connected field service(CFS) 我们假设现在IoT 设备是温度监控器, 当温度触发我们之前预设的温度值, IoT会通过IoT Hub 发送IoT Alert ...

  7. ARTIFICIAL INTELLIGENCE FOR GAMES (Ian Millington / John Funge 著)

    相关网站:http://www.ai4g.com PART I AI AND GAMESCHAPTER1 INTRODUCTIONCHAPTER2 GAME AIPART II TECHNIQUESC ...

  8. Randy Pausch’s Last Lecture

          he University of Virginia American Studies Program 2002-2003.                     Randy Pausch ...

  9. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

随机推荐

  1. Python - poetry(1)包管理利器的入门介绍

    Python 虚拟环境详解 https://www.cnblogs.com/poloyy/p/15266382.html poetry 官方介绍 github:https://github.com/p ...

  2. CefSharp基于.Net Framework 4.0 框架编译

    CefSharp基于.Net Framework 4.0 框架编译 本次源码使用的是Github上CefSharp官方的79版本源码 准备 IDE Visual Studio 2017 Enterpr ...

  3. Jenkins REST API 实例

    背景:    Jenkins具有丰富的插件生态,足以满足我们日常工作的需求,但如果我们想通过具体的Jenkins任务直接对外提供服务,而不想将内部的具体实现对外暴露(否则,需添加对应的用户权限,通过页 ...

  4. django3上线部署踩的坑

    好久没有用过django写项目了,最近公司开发个官网,一时兴起就拿来练练手,这不用不知道,一用吓一跳啊. 才多久,版本都到3.0了. 踩坑一:运行项目时失败报错,后来查找资料发现, 当你使用djang ...

  5. JavaScript表单输入合法控制

    写在前面 为了提高数据输入的容错性和数据库数据的安全性,除了后端对输入的数据的逻辑判断处理,还可以前端页面高效率处理,从而提高系统的可靠性,下面是这次项目中的自己写的一些符合当时需要的控制. 账号位数 ...

  6. 【UE4 调试】提升UE4源码版本Setup下载速度

    更改setup.bat部分参数

  7. Vue CLI 5 和 vite 创建 vue3.x 项目以及 Vue CLI 和 vite 的区别

    这几天进入 Vue CLI 官网,发现不能选择 Vue CLI 的版本,也就是说查不到 vue-cli 4 以下版本的文档. 如果此时电脑上安装了 Vue CLI,那么旧版安装的 vue 项目很可能会 ...

  8. BUAAOO第四单元总结

    ---恢复内容开始--- 一.本单元两次作业的架构设计 第十三次作业:本次作业我创建了四个类,除去官方提供的Main和MyUmlInteraction类之外,还有Uclass和Ulinterface分 ...

  9. logstash收集的日志输出到elasticsearch中

    logstash收集的日志输出到elasticsearch中 一.需求 二.实现步骤 1.编写pipeline文件 1.`elasticsearch`配置参数解析: 2.可能会报的一个异常 2.准备测 ...

  10. NKOJ-2936 城市建设

    问题描述: PS国是一个拥有诸多城市的大国,国王Louis为城市的交通建设可谓绞尽脑汁.Louis可以在某些城市之间修建道路,在不同的城市之间修建道路需要不同的花费.Louis希望建造最少的道路使得国 ...