https://vjudge.net/problem/Gym-100283F

题意:

1

1 2 1

1 2 3 2 1

1 2 3 4 3 2 1 ....

给出这样的序列,然后给出一个n,计算从1+1+2+1+1+2+3...加到大于等于n至少需要多少个数。

思路:

二分法。

每一行的总和为,所以第i行之前的数总和为,所以我们可以可以利用二分法,确定第i行(第i+1行的总和大于了n)。接下来我们继续在第i+1行进行二分。

 #include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
#include<cmath>
using namespace std; typedef long long LL; LL n; int main()
{
freopen("army.in","r",stdin);
/*
for(LL i=10000;;i++)
{
LL num=(i*(i+1)*(2*i+1))/6;
if(num>=1e18)
{
cout<<i<<endl;
break;
}
}
*/ int T;
int kase=;
scanf("%d",&T);
while(T--)
{
scanf("%lld",&n);
LL ans=;
LL L =, R =;
while(L+<R)
{
LL mid =(L+R)/;
LL num =mid*(mid+)*(*mid+)/;
if(num >= n) R=mid;
else L=mid;
} n-=L*(L+)*(*L+)/;
ans+=L*L;
if(n<R*(R+)/)
{
L=-;
while(L+<R)
{
LL mid=(L+R)/;
LL num=mid*(mid+)/;
if(num>=n) R=mid;
else L=mid;
}
ans+=R;
}
else
{
ans +=*R-;
n =R*R-n;
L =;
while(L+<R)
{
LL mid =(L+R)/;
if(mid*(mid+)/ > n) R =mid;
else L =mid;
}
ans -=L;
}
printf("Case %d: %lld\n",++kase,ans);
}
return ;
}

Gym - 100283F Bakkar In The Army(二分)的更多相关文章

  1. Gym 100283F Bakkar In The Army

    数学公式: n^2的前n项和n(n+1)(2*n+1)/6,用二分进行查找: 算出层数后继续二分查找位于这一层的哪一位,也可以推出相应公式 #include <iostream> #inc ...

  2. Gym - 100283F F. Bakkar In The Army —— 二分

    题目链接:http://codeforces.com/gym/100283/problem/F F. Bakkar In The Army time limit per test 2 seconds ...

  3. F. Bakkar In The Army 二分

    http://codeforces.com/gym/100283/problem/F 思路是二分第几行,二分出来的行是总和 >= n的,那么第k - 1行一定要选,那么再在第k行中二分那一列. ...

  4. Codeforces Gym 100803G Flipping Parentheses 线段树+二分

    Flipping Parentheses 题目连接: http://codeforces.com/gym/100803/attachments Description A string consist ...

  5. Codeforces Gym 100500F Problem F. Door Lock 二分

    Problem F. Door LockTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/at ...

  6. Gym 102091L Largest Allowed Area 【二分+二维前缀和】

    <题目链接> 题目大意:给你一个由01组成的矩形,现在问你,该矩形中,最多只含一个1的正方形的边长最长是多少. 解题分析: 用二维前缀和维护一下矩形的01值,便于后面直接$O(1)$查询任 ...

  7. codeforces gym 100947 J. Killing everything dp+二分

    J. Killing everything time limit per test 4 seconds memory limit per test 64 megabytes input standar ...

  8. GYM - 101490 J Programming Tutors (匈牙利+二分)

    题意:有N个学生和N个老师,每个人都有自己的坐标X,Y,给每个学生匹配一个老师,要求N个匹配中的距离最大值最小.其中距离的定义为:|X − X’| + |Y − Y ‘|. 分析:一道典型的最大值最小 ...

  9. GYM 101933D(最短路、二分、dp)

    要点 非要先来后到暗示多源最短路,求最小的最大值暗示二分 二分内部的check是关键,dp处理一下,\(dp[i]\)表示第\(i\)笔订单最早何时送达,如果在ddl之前到不了则\(return\ 0 ...

随机推荐

  1. centos7上安装iptables

    centos7上安装iptables的步骤 注意:CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #安装iptables ...

  2. Lucene构建索引时的一些概念和索引构建的过程

    在搜索文档内容之前要做的事情就是对从各种不同来源(网页,数据库,电子邮件等)的文档进行索引,索引的过程就是对内容进行提取,规范化(通过对内容进行建模来实现),然后存储. 在索引的过程中有几个基本的概念 ...

  3. 【BZOJ4236】JOIOJI STL

    [BZOJ4236]JOIOJI Description JOIOJI桑是JOI君的叔叔.“JOIOJI”这个名字是由“J.O.I”三个字母各两个构成的. 最近,JOIOJI桑有了一个孩子.JOIOJ ...

  4. 最近遇到的bug

    1. 地图周边快查,按钮点击没反应 子控件超出了父控件 2.图片显示灰色背景,一直去不掉    设置图片背景图片clear cloro  3. 显示隐藏导航栏  下面两个方法效果不同     self ...

  5. Django - 路由层(URLconf)

    一.django 静态文件配置 /mysite1/settings.py STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_ ...

  6. 使用Navicat连接Mysql报错:can not get hostname for your address

    以管理员的身份使用cmd命令运行netsh winsock reset即可!

  7. mysql 数据操作 单表查询 limit 练习

    1. 分页显示,每页5条 mysql,; +----+------------+--------+-----+------------+---------+--------------+------- ...

  8. python 定义类 学习1

    此时的d1就是类Dog的实例化对象 实例化,其实就是以Dog类为模版,在内存里开辟一块空间,存上数据,赋值成一个变量名 # 定义类模板 class dog(object): # 定义类的方法功能 # ...

  9. google浏览器插件安装

    1:安装本地插件,直接将下载好的crx插件拖入到   chrome://extensions/    的空白处 http://www.cnplugins.com/tool/outline-instal ...

  10. Checkpoint的运行原理和源码实现

    引言 Checkpoint 到底是什么和需要用 Checkpoint 解决什么问题: Spark 在生产环境下经常会面临 Transformation 的 RDD 非常多(例如一个Job 中包含1万个 ...