题目描述

  $ZYB$之国是特殊的六边形构造。

  已知王国一共有$N$户家庭,每个家庭需占据一个不同的六边形格子。
  王国里交流很频繁,所以这些家庭要构成一个连通区域;同时出于安全考虑,国王$ZYB$想在外面“围”一圈墙。
  围墙需要遵守这样的规则:
  $1.$墙也是建在格子上的。
  $2.$墙不能建在任何一户家庭占据的格子上。
  $3.$任何一户家庭都不可能走到围墙外面去。
  $4.$围墙不一定要“贴”着家庭建,可以多围一些格子。
  定义围墙的长度为它占据的格子的数量。
  请你帮国王$ZYB$安排每户家庭的具体位置以及围墙的建造方案,使得围墙的长度最短。


输入格式

  从文件$wall.in$中读入数据。
  只读入一个数,表示家庭的数量$N$。


输出格式

  输出到文件$wall.out$中。
  输出一个数表示围墙的最小长度。


样例

样例输入1:

6

样例输出1:

12

样例输入2:

9

样例输出2:

14


数据范围与提示

  前$20\%$:$N\leqslant 10$。
  前$40\%$:$N\leqslant 20$。
  前$70\%$:$N\leqslant 1,000$。
  另有$10\%$:$N=6\times \frac{K(K+1)}{2}+1(K\in\mathbb{N})$
  $100\%$:$1\leqslant N\leqslant 10^9$


题解

转化一下思想,先选择家庭的位置,然后再围轮廓。

显然家庭越集中越好。

先从另$10\%$的算法入手,只需要将其围成如下图这样即可$\downarrow$

答案显而易见,就是边长$-1$再乘$6$。

在来考虑一般情况,可以先围城这样,然后思考如何接着往里填。

首先,要知道下图中两种情况代价是一样的$\downarrow$

所以,遇到这种情况,不如直接将其填满。

接着考虑问题,也就是考虑先将$n$个家庭建成了正六边形后剩下的该怎么建。

假设多出来了一个,那么显然如下图中这么建更优$\downarrow$

这样多花的代价为$1$,而这样的点可以建原六边形边长$-1$个。

现在假设我们把这原六边形边长$-1$个位置填满了。

考虑接下来怎么填。

接着再扩一条边,扩的这条边显然与上一次扩的边相邻不劣,因为这样我们将获得原六边形边长个位置。

一直这么填就好了。

时间复杂度:$\Theta(\sqrt{N})$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int N;
int ans;
int main()
{
scanf("%d",&N);N--;
int now=0,fla=1;
for(int i=1;i<=N;i++)
{
if(now+(i-1)*6>N)
{fla=i-1;break;}
now+=(i-1)*6;
}
ans=6*fla;N-=now;
if(!N){printf("%lld",ans);return 0;}
ans++;N-=fla-1;
while(N>0){N-=fla;ans++;}
printf("%lld",ans);
return 0;
}

rp++

[JZOJ6345]:ZYB建围墙(数学+构造)的更多相关文章

  1. 【JZOJ6345】ZYB建围墙

    description analysis 打表找规律,自认为样例给的提示很明显 容易想到最优方案是让家庭尽量先围成一个正六边形,剩下的在最外层绕一个圈 手推一波可以知道,如果正六边形有\(n\)层,剩 ...

  2. 【CodeForces】708 B. Recover the String 数学构造

    [题目]B. Recover the String [题意]找到一个串s,满足其中子序列{0,0}{0,1}{1,0}{1,1}的数量分别满足给定的数a1~a4,或判断不存在.数字<=10^9, ...

  3. Codeforces 715A. Plus and Square Root[数学构造]

    A. Plus and Square Root time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  4. 2.1Python数据处理篇之---内建有关数学的函数

    目录 目录 前言 (一)数学相关得内建函数 (二)具体演示 1.求绝对值 2.创建一个复数 3.求商和余数 4.求x得y次幂 5.生成一个序列 6.四舍五入 7.对一个集合求和 8.求最大值 9.求最 ...

  5. Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) D. Artsem and Saunders 数学 构造

    D. Artsem and Saunders 题目连接: http://codeforces.com/contest/765/problem/D Description Artsem has a fr ...

  6. [数学-构造矩阵]NEFU 1113

    依据题意.我已经推导出tn的公式.ti=ti.a+ti.b,ti.a=5*t(i-1).a+4*t(i-1).b,ti.b=t(i-1).a+t(i-1).b 然而以下居然不能继续推到sn的公式!!! ...

  7. UVA12716 GCD XOR 数论数学构造

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010682557/article/details/36204645 题目给你一个N,让你求 两个数 ...

  8. [jzoj 6080] [GDOI2019模拟2019.3.23] IOer 解题报告 (数学构造)

    题目链接: https://jzoj.net/senior/#main/show/6080 题目: 题意: 给定$n,m,u,v$ 设$t_i=ui+v$ 求$\sum_{k_1+k_2+...+k_ ...

  9. js17---创建对象:构造函数式和原型组合模式、动态原型模式、稳妥构造函数式

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

随机推荐

  1. Go入门所踩过的坑:cannot find package "" in any of

    问题:cannot find package "" in any of.现已按照博客解决,分享一种自己踩得坑欢迎大神指导交流! 首先使用go env查看当前环境变量,新手入门出现找 ...

  2. List和Dictionary互转

    // 声明Dictionary并初始化 Dictionary<string, string> dic = new Dictionary<string, string>() { ...

  3. git 公钥的使用

    码云 https://gitee.com/ ,之前在教程视频中看到使用 码云  今天自己也撸了一把.第一次使用.打开官方网站看到免费开通企业版,就点了这个原本以为需要填写很多资料,实际操作下来,就一个 ...

  4. 基于MFC对话框的2048游戏

    在之前一篇<简单数字拼板游戏学习>基础上修改,地址:http://www.cnblogs.com/fwst/p/3706483.html 开发环境:Windows 7/ Visual St ...

  5. 2.JVM、JRE、JDK之间的关系

    诠释一. JDK(java development kit) JDK是Java开发工具包,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库. JRE(java run ...

  6. AJAX中所谓的异步

    async javascript and xml 异步的js和xml 在AJAX中的异步不是我们所理解的同步异步编程,而泛指“局部刷新”,但是我们以后的AJAX请求尽可能异步请求数据(因为异步数据获取 ...

  7. docker 第五篇 存储

    镜像概述复习 Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层 如果运行中的容器修改了现有的一个已经存在的文件,那改文件将会从读写层下面的只读 ...

  8. django inclusion用法

    概述: inclusion主要的是生成html标签, 返回的是一个字典,大分部跟simple_tag类似, simple_tag可返回任意类型的值 定义inclusion from django im ...

  9. wpf win10 popup位置偏移问题

    同样问题参照: https://stackoverflow.com/questions/18113597/wpf-handedness-with-popups 解决方案: private static ...

  10. weblogic 反序列化漏洞 getshell

    上传cmd.jsp,效果: 上传马: