题目描述

  $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. hdu 1068 最大子序列和变形,,,

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #d ...

  2. java方法可变参数研究

    1 问题引出 (1)缘由 最近在研究如何在项目中引入Redis缓存,于是遇到可变参数这个疑惑点,之前没有好好研究过,为了避免项目后期出现问题. (2)项目相关技术 SpringBoot Redis K ...

  3. dev linechart动态加载数据(像股票一样的波动)

    图片地址:https://blog.csdn.net/qq_33459369/article/details/80060196:(盗图) 接下来是封装的代码 #region 动态折线图 public ...

  4. javaIO——PushbackReader

    1. 注释解释: A character-stream reader that allows characters to be pushed back into the stream. 一个允许字符被 ...

  5. Git忽略已追踪文件或文件夹

    今天拉取代码,用vs生成后发现obj文件夹下自动生成的文件被同事提交了,这个本应该加入到ignore的 我就需要把这个文件夹加入到gitignore, 不过已经追踪的文件和文件夹,直接添加到gitig ...

  6. 【python+selenium】selenium grid(分布式)

    前言 原文:https://blog.csdn.net/real_tino/article/details/53467406 Selenium grid是用来分布式执行测试用例脚本的工具,比如测试人员 ...

  7. redis——搭建

    https://blog.csdn.net/sinat_29699167/article/details/79699200 Django使用Redis进行缓存详细最全流程 https://blog.c ...

  8. 七:mvc使用CodeFirst(代码优先)创建数据库

    1. 理解EF CodeFirst模式特点 2. 使用CodeFirst模式生成数据库 1. CodeFirst模式(代码优先) Code First是Entity Framework提供的一种新的编 ...

  9. 将服务端select设置为非阻塞,处理更多业务

    服务端代码: #include<WinSock2.h> #include<Windows.h> #include<vector> #include<stdio ...

  10. Hadoop_33_Hadoop HA的搭建

    Hadoop HA的搭建,可参考链接:https://blog.csdn.net/mrbcy/article/details/64939623 说明:    1.在hadoop2.0中通常由两个Nam ...