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 ...
随机推荐
- 《AngularJS入门与进阶》图书简介
一.图书封面 二.图书CIP信息 图书在版编目(CIP)数据 AngularJS入门与进阶 / 江荣波著. – 北京 : 清华大学出版社, 2017 ISBN 978-7-302-46074-9 Ⅰ. ...
- Linux 学习笔记之超详细基础linux命令 Part 8
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 7----------------- ...
- python 3.3.2报错:No module named 'urllib2'
ModuleNotFoundError: No module named 'urllib3' 1. ImportError: No module named 'cookielib'1 Python3中 ...
- 洗礼灵魂,修炼python(29)--装饰器(1)—>利用经典案例解析装饰器概念
前提必备 不急着进入正题,在前面函数作用域那一章介绍了闭包,全局变量局部变量,这里再看几个简单的闭包案例: 1):不带参数 注意: 1.这里的name属性是每个函数都有的,可以反馈函数名 2.temp ...
- SQL Server 将一个表中字段的值复制到另一个表的字段中
具体方法如下 一:update 表2 set (要插入的列名)= select 表1.某一列 from 表1 left jion 表2 on 表1和表2的关联 where ..... 二:update ...
- C++ Standards Support in GCC - GCC 对 C++ 标准的支持
C++ Standards Support in GCC - 2019-2-20 GCC supports different dialects of C++, corresponding to th ...
- CentOS7下用firewall-cmd控制端口与端口转发
1.firewalld 守护进程 2.控制端口/服务 3.伪装IP 4.端口转发 实现目标:服务器A和服务器B都是内网互通的,但是只有服务器A是有外网然后现在做端口转发实现服务器B能使用服务器A的外网 ...
- 15LaTeX学习系列之---LaTeX里插入数学公式
目录 目录 前言 (一)常用的数学公式命令 ==1.上下标== ==2.矢量== ==3.括号== ==4.符号关系== ==5.三角形符号== ==6.求和与累积== ==7.积分与微分== ==8 ...
- PJ考试可能会用到的数学思维题选讲-自学教程-自学笔记
PJ考试可能会用到的数学思维题选讲 by Pleiades_Antares 是学弟学妹的讲义--然后一部分题目是我弄的一部分来源于洛谷用户@ 普及组的一些数学思维题,所以可能有点菜咯别怪我 OI中的数 ...
- [bug]android monkey命令在Android N和Android O上的一点差异发现
最近再调试这个统计FPS的代码,发现代码在android N上可以正常运行,但在android O上却运行不了,拼了命的报错,给出的提示就是 ZeroDivisionError: division b ...