[蒟蒻梦想-CSP考前加油赛] B 画地为佬

画地为佬

没有想到什么好的算法……感觉很暴力的样子……

大致思路是先找一个刚刚好不越界的大正方形块,然后一根一根围墙往上加。

首先考虑方块数量与围墙之间的关系:

  1. 方块的数量是\(1^2\)
    围墙的数量是\(2 \times 1 \times(1+1)\)
0
  1. 方块的数量是\(2^2\)
    围墙的数量是\(2 \times 2 \times(1+2)\)
0 0
0 0
  1. 方块的数量为\(3^2\)
    围墙的数量是\(2 \times 3 \times(1+3)\)
0 0 0
0 0 0
0 0 0

对于\(n\)块的情况,围墙的数量是\(m=2n (1+n)\)

而现在给定的是围墙的数量\(m\),因此解方程\(m=2n (1+n)\)。

由求根公式:

\[
n=\lfloor \frac{ \sqrt{4+8m}-2}{4} \rfloor
\]

算除了大正方形还剩下多少围墙:
\[
rest=m-2n(n+1)
\]

讨论剩下的围墙能围成几个块
\[
RestBlock=\left\{
\begin{aligned}
& \lfloor (rest-1)/2 \rfloor ,\quad \quad rest \leq 2n+1\ & \lfloor (rest-1)/2 \rfloor +n, \ rest > 2n+1\\end{aligned}
\right.
\]

输出\(n^2+RestBlock\).

代码的变量跟题目不一样,请留意。
code:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=105,INF=0x3f3f3f3f;
inline ll read()
{
    char c=getchar();ll x=0;
    for(;!isdigit(c);c=getchar());
    for(;isdigit(c);c=getchar())
        x=x*10+c-'0';
    return x;
}

void pr(ll x)
{
    if(x/10)pr(x/10);
    putchar(x%10+'0');
}

int main()
{
    //for(int i=1;i<100;i++)cout<<i<<' '<<((int)(sqrt(4+8*i)-2)/4)<<endl;
    ll T=read();
    while(T--)
    {
        ll n=read();
       // cout<<T<<' ';
        //ll n=T;
        ll k= (sqrt(4+8*n)-2)/4;
        ll rest=n-2*k*(k+1);
        if(rest<=2*k+1)
        {
            ll dlt=(rest-1)/2;
            pr(dlt+k*k);
            putchar('\n');
        }
        else
        {
            rest-=2*k+1;
            ll dlt= (rest-1)/2;
            pr(k*k+k+dlt);
            putchar('\n');
        }

    }
    return 0;
}

原文地址:https://www.cnblogs.com/kion/p/11846230.html

时间: 2024-08-24 17:19:58

[蒟蒻梦想-CSP考前加油赛] B 画地为佬的相关文章

liu_runda 给辣鸡蒟蒻做的 NOIP模拟赛 1.0 第二题 任(duty) 题解

问题 B: 任(duty) 时间限制: 2 Sec  内存限制: 512 MB 题目描述 liu_runda退役之后就失去梦想开始咸鱼生活了- Bilibili夏日画板活动中,所有人都可以在一块画板上进行像素画创作.UOJ群有一群无聊的人决定在画板上创作一个50*50的UOJ的LOGO.如下图. 这块画板实际上是很大的矩形网格.一个网格是一像素. 一个人每三分钟才能画一个像素.所以liu_runda的咸鱼生活非常无聊. 郭神表示他实在是看不下去liu_rudna这只颓狗了,于是随手出了一道神题,

【一个蒟蒻的挣扎】模拟赛2解题报告

---恢复内容开始--- 今天50分,我自闭 眼瞎看错了一道题,然后两道题的代码都出了点小毛病,自闭 真的竞赛我要这样可以收拾收拾退役了真的,眼睛不能这么瞎了考试莫得人帮忙改了 如果一切都没问题今天应该有130,啊!!!!!!!!!!!!!!!!! 今天两题可以用堆,一题模拟随便写写就过了,(所以我为什么考这么差) 进入正题 题目一览(其实就3道题)(CZR到底是谁这么爱数学和折磨我们) 24点 小游戏 中位数 题1. 24点 题目描述 1.1 Background CZR很喜欢学数学,但是他数

蒟蒻ACMer回忆录 &#183; 一段弱校ACM的奋斗史

三年半的ACM生涯终于迎来了终点,退役之时,感慨万分,故写此文以纪念逝去的时光,那些为ACM拼搏的日子,那段弱校ACM的奋斗史. 三年半的ACM生涯,窝见证了CUMT从打铁到铜牌的突破,又见证了从铜牌到银牌的突破:见证了集训队员从3人发展到10余人,又见证了ACM实验室的落实. 三年半的ACM生涯,窝经历了太多,有Accepted时的欢笑,有Wrong Answer时的沮丧,有Time Limit Exceeded时的无奈,有Runtime Error时的尴尬,有打铁的失落,有拿牌的惊喜. 13

dp专场的蒟蒻题解

前言:一直想练练dp,正好衣神弄了个训练赛..上次看cgold大佬的题解心血来潮所以自己试着写了第一次题解..可惜本蒟蒻的能力太差有两道题做不太出,只好搬运学习其它大佬的题解了.. a题 https://vjudge.net/contest/355951#problem/A 这题做题的过程十分痛苦 我又双叒叕看错题意了.. 以为是必须在对角线上 其实是随便n*n的都行.. 大概思路是从一个角开始更新,统计左边和上边相同的长度 #include <iostream> #include <c

算法描述》LCA两三事(蒟蒻向)

LCA是图论中常用的解决树形结构子问题的工具,这一问题一般需要用一个简短的子函数直接解决,但是这对于广大蒟蒻们仍然是一个不小的问题. LCA是指在树形结构中两点的最近公共祖先,对于这个问题,直接向上找事最直接的方法,但同时时间复杂度和数据给出的生成树的层数有关,最优情况是logN级别的,但是如果数据给出的是一条链就GG了,所以要用更优的方法写,一般来说,用的是log2N的操作,最糟糕的复杂度也是logN级别的,那如何实现这一过程捏,我这里有两种方法,和大家分享 第一种:树上倍增 具体方法是对于已

bzoj 4636: 蒟蒻的数列

4636: 蒟蒻的数列 Description 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k小的数改为k,他想知 道N次操作后数列中所有元素的和.他还要玩其他游戏,所以这个问题留给你解决. Input 第一行一个整数N,然后有N行,每行三个正整数a.b.k. N<=40000 , a.b.k<=10^9 Output 一个数,数列中所有元素的和 Sample Input 4 2 5

蒟蒻的第一篇博文

先刷一波存在感... 据说维护Blog可以作为积累然后就决定开一波Blog=.= 本来想用Hexo Framework加上GitHub Pages做一个Blog来着(因为GitHub比较Geek嘛) 然后折腾了半天搞了个NexT Theme感觉异常地漂亮 然后Commit上了GitHub还写了几篇测试文章自我感觉良好 然后调整了一发文件夹结构因为我总是要移动工作区 然后折腾了一段时间感觉这个Blog估计可以使了 然后... 然后突然发现Hexo Framework构造的是一大坨静态页面没法加载数

【NOIP考前模拟赛】纯数学方法推导——旅行者问题

一.写在前面 这题似乎是一道原创题目(不是博主原创),所以并不能在任何OJ上评测,博主在网盘上上传了数据(网盘地址:http://pan.baidu.com/s/1mibdMXi),诸位看官需者自取.另外博主使用此题并没有获得出题人授权,如果出题人看到这篇blog并认为在下侵犯了您的权利,请用站内消息与在下联系,在下会立即删除这篇blog,给您带来的困扰之处敬请谅解. 博主上传这道题主要是因为这题牵扯许多数学运算,推导过程比较复杂,但是却没有用到任何算法或者数学定理,可以说这是一道想法题的典范.

【BZOJ】4636: 蒟蒻的数列

4636: 蒟蒻的数列 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 145  Solved: 71[Submit][Status][Discuss] Description 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k小的数改为k,他想知 道N次操作后数列中所有元素的和.他还要玩其他游戏,所以这个问题留给你解决. Input 第一行