LOJ564 613的天网 构造
题意:给出一个$N \times N \times N$的方块,你可以在每一个$1 \times 1 \times 1的方块上放上一个摄像头,摄像头的监视范围为6个方向的无限远距离。问最少需要多少摄像头,并给出具体方案。$N \leq 2000$
思维题
样例中的放置方法对我们是很有启发的
样例中是这样的一个$2 \times 2 \times 2$的正方体(图不好看qwq)

对于选择的$(1,1,1)$点,它的控制范围是

图真的只能凑合看qwq
我们可以考虑将$N \times N \times N$的方块分为这样的八个部分,其中左上角的正方形代替$2 \times 2 \times 2$的立方体中$(1,1,1)$的作用,右下角的正方形代替$2 \times 2 \times 2$的立方体中$(2,2,2)$的作用
接下来我们就要考虑如何做到让一个正方形能够像$(1,1,1)$一样影响到左边、后面、下面的所有正方形
我们先单独考虑影响后面,因为这样子好讲
考虑如果我们只有一个面(也就是在二维空间上)要怎么放才会最好
肯定是下面这样

可是如果我们每一层都这么放肯定是无法满足条件的
所以我们考虑在接下来每一层在上一层的基础上每个往下移一格
也就是说第二层与第三层像下面的左图和右图一样放置


就可以满足要求了
利用一些空间想象能力可以想到:对于右边和下面来说都是满足条件的,所以我们只需要$O(\text{边长}^2)$就可以构造一个满足条件的正方体了。
设某一个正方形边长为$x$,那么我们总共需要的摄像头就是$x^2+(N-x)^2$,可以知道$x=\frac{N}{2}$时使用的摄像头最少,为$(\frac{N}{2})^2+(\frac{N + 1}{2})^2$
方案就像上面一样输出就行了,注意输出优化
#include<bits/stdc++.h>
using namespace std;
];
inline void print(int x , char c = '\n'){
;
while(x){
output[dirN++] = x % ;
x /= ;
}
while(dirN)
putchar(output[--dirN] + );
putchar(c);
}
int main()
{
int N;
cin >> N;
print((N / ) * (N / ) + ((N + ) / ) * ((N + ) / ));
; i <= N / ; i++)
; j <= N / ; j++){
print(i , ' ');
print(j , ' ');
print((i + j - ) % (N / ) + );
}
; i <= (N + ) / ; i++)
; j <= (N + ) / ; j++){
print(N - i + , ' ');
print(N - j + , ' ');
print(N - (i + j - ) % ((N + ) / ));
}
;
}
LOJ564 613的天网 构造的更多相关文章
- 实验吧_密码忘记了(vim编辑器+代码审计)&天网管理系统(php弱比较+反序列化)
密码忘记了 一开始尝试了各种注入发现都无效,在网页源码中找到了admin 的地址,输入地址栏发现并没有什么有用的信息,随便输个邮箱,网页返回了一个地址 ./step2.php?email=youmai ...
- 实验吧CTF天网管理系统
天网你敢来挑战嘛 格式:ctf{ } 解题链接: http://ctf5.shiyanbar.com/10/web1/ 打开链接后,嗯,光明正大的放出账号密码,肯定是登不进的,查看源代码 看来是和md ...
- Codeforces Round #339 (Div. 1) C. Necklace 构造题
C. Necklace 题目连接: http://www.codeforces.com/contest/613/problem/C Description Ivan wants to make a n ...
- 【实验吧】因缺思汀的绕过&&拐弯抹角&&Forms&&天网管理系统
<?php error_reporting(); if (!isset($_POST['uname']) || !isset($_POST['pwd'])) { echo '<form a ...
- 实验吧之【Forms、天网管理系统】
Forms 原题链接 http://ctf5.shiyanbar.com/10/main.php Form 其实是个提示,代表html表单 F12 查看源码,发现 <input name=&qu ...
- 学习笔记:Maven构造版本号的方法解决浏览器缓存问题
需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...
- 一步步构造自己的vue2.0+webpack环境
前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...
- About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷
构造函数用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种.特点:1:该函数的名称和所在类的名称相同.2:不需要定义返回值类型.3:该函数没有具体的返回值.记住:所有对象创 ...
- Eos开发——构造查询条件
1.ajax 方式 var data = { orgid :orgid,year:year ,month: month,type:type,sortField:'sellEmpname' ,sortO ...
随机推荐
- SD从零开始65 框架协议(Outline Agreement)
SD从零开始65 框架协议(Outline Agreement) 合同-销售凭证类型Contracts-Sales Document Types 框架协议在几乎所有的业务处理中都扮演重要的角色:客户和 ...
- plsql如何导出查询结果
mark一下,感谢大牛分享:http://www.cnblogs.com/Marydon20170307/p/8385674.html
- Android 将数据写入Execl格式导出U盘、发送邮件
创建Execl.写入Execl数据.导入U盘 public WriteExcel(Context mContext){ this.mContext = mContext; } // 创建excel表 ...
- Expect 安装 on centos7
本文演示如何在CentOS7上安装和使用Expect. 使用场景 在主机A上编写并且执行Shell脚本,Shell脚本中需要ssh到主机B上执行交互命令. 安装 在主机A上安装expect: yum ...
- Android i2c-tools移植
一.下载I2C-tools工具: 最近在移植i2c-tools工具,下载地址:https://i2c.wiki.kernel.org/index.php/I2C_Tools:百度到了wiki中的git ...
- HDU ACM 1856 More is better(并查集)
[题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=1856 [解题思路]给的数据有点大,干脆少开点数组,直接上set存储有朋友的孩子的编号,同时根据编号初 ...
- PL/SQL 删除主键 ORA-02443: 无法删除约束条件-不存在的约束条件
在PL/SQL developer中删除一个表的主键,然后把另外一个字段设置成主键,删除的过程中报错:ORA-02443 我遇到这个问题出现的背景是: alter table saleqtya dro ...
- 解决eclipse启动慢
每次启动eclipse时都要等待半分钟左右,对于追求效率的程序员来说,等待每一秒都是一种折磨,出于高效开发的精神,这个问题必须解决掉.方案如下: ①在工具栏中的help中找到about eclipse ...
- var a = {m:1}; var b = a; a.n = b ={n:1}; console.log(a);console.log(b);
var a = {m:1}; var b = a; a.n = b ={n:1}; console.log(a); console.log(b); 确定b为{n:1},所以a为 {m:1,n:{n:1 ...
- <20190303>大厂的风度,firmware每年更新!
哪怕是最普通的型号, 思科Cisco 每隔一个周期都会推送一个新的firmware, 来提高 路由器的稳定性,和整体兼容性, 2015年买的路由器, 今年年初又发布一个更新包. Release Not ...