Gym - 100283F Bakkar In The Army(二分)
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(二分)的更多相关文章
- Gym 100283F Bakkar In The Army
数学公式: n^2的前n项和n(n+1)(2*n+1)/6,用二分进行查找: 算出层数后继续二分查找位于这一层的哪一位,也可以推出相应公式 #include <iostream> #inc ...
- 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 ...
- F. Bakkar In The Army 二分
http://codeforces.com/gym/100283/problem/F 思路是二分第几行,二分出来的行是总和 >= n的,那么第k - 1行一定要选,那么再在第k行中二分那一列. ...
- Codeforces Gym 100803G Flipping Parentheses 线段树+二分
Flipping Parentheses 题目连接: http://codeforces.com/gym/100803/attachments Description A string consist ...
- Codeforces Gym 100500F Problem F. Door Lock 二分
Problem F. Door LockTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/at ...
- Gym 102091L Largest Allowed Area 【二分+二维前缀和】
<题目链接> 题目大意:给你一个由01组成的矩形,现在问你,该矩形中,最多只含一个1的正方形的边长最长是多少. 解题分析: 用二维前缀和维护一下矩形的01值,便于后面直接$O(1)$查询任 ...
- codeforces gym 100947 J. Killing everything dp+二分
J. Killing everything time limit per test 4 seconds memory limit per test 64 megabytes input standar ...
- GYM - 101490 J Programming Tutors (匈牙利+二分)
题意:有N个学生和N个老师,每个人都有自己的坐标X,Y,给每个学生匹配一个老师,要求N个匹配中的距离最大值最小.其中距离的定义为:|X − X’| + |Y − Y ‘|. 分析:一道典型的最大值最小 ...
- GYM 101933D(最短路、二分、dp)
要点 非要先来后到暗示多源最短路,求最小的最大值暗示二分 二分内部的check是关键,dp处理一下,\(dp[i]\)表示第\(i\)笔订单最早何时送达,如果在ddl之前到不了则\(return\ 0 ...
随机推荐
- 在linux下安装Avria(小红伞)
1.下载AntiVir PersonalEdition Classic for linux http://www.free-av.com/ 2.解压: tar zxvf antivir.tar.gz ...
- maven学习(二)(转)
一.maven父工程与子模块的拆分与聚合原理 问题描述:将ssh工程拆分为多个模块开发 1.1.拆分原理 创建一个maven project(pom),然后在创建三个子模块(maven moudule ...
- 详探TextRange对象--查找与选择(转载)
TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本.文本范围让您可以选择性的将字符.单词和句子从文档中挑选出来.TextRange对象 ...
- postgresql数据库创建、修改、删除
一.数据库创建 语法: Command: CREATE DATABASEDescription: create a new databaseSyntax:CREATE DATABASE nam ...
- python2在安装pywin32后出现ImportError: DLL load failed 解决方法
python2在安装pywin32后出现ImportError: DLL load failed 解决方法 在python2中有时候会出现: import win32api ImportError ...
- 《Git权威指南》读书笔记
这本书一直在拿SVN和CVS 与Git进行对比.对于有过SVN和CVS经验的开发者来讲,这种方法很好,能够通过对比去了解各种的优缺点,从而更快地掌握Git的使用方法,更加欣赏Git.而对于刚刚接触源码 ...
- 介绍一个Redis的WEB 客户端
http://webd.is/ $ git clone git://github.com/nicolasff/webdis.git $ cd webdis$ make$ ...
- ping 10.13.5.233
3. 环境 URL选择器 tableView ping 10.13.5.233
- 广通软件获“2016年度中国最具影响力IT运维管理软件提供商”殊荣
12月16日,“科技原力觉醒引领创新巅峰”-- 2016创新影响力年会暨国家产业服务平台•2016年终评活动在北京裕龙国际酒店落下帷幕. 本活动在主管部门的指导参与下,总结本年度技术成果并籍此对未来科 ...
- Git学习-->GitLab如何修改时区?
一.背景 今天有同事在GitLab上查看时间的时候,发现GitLab上显示的时间和提交的时间不一致. 本地时间现在为:2017-11-28 11:43 查看本地代码提交的时间为:2017-11-28 ...