【来源】:2008年哈尔滨区域赛

【题目链接】:

http://acm.hdu.edu.cn/showproblem.php?pid=2446


【题意】

题目是真的长呀,其实就问一个问题。

按照图里面的方法,请问第i个在第几堆,第几行,第几列。

例如,第19个在哪里呢?

在第4堆,第4行,第3列。


【题解】

利用二分快速找到第几堆,同样道理,找到第几行也一样。

这个题目关键在于公式推导。

前i堆有多少个 S(n)= Σ ( n+1)* n / 2 )

没有公式插入真的很麻烦呀。。。

 #include<cstdio>
#include<iostream>
#include<algorithm> typedef unsigned long long ll ;
using namespace std; ll F( ll n ){
ll x = n , y = n+ , z = n+ ;
if( x % == ){
x /= ;
}else if( y % == ){
y /= ;
}else{
z /= ;
} if( x % == ){
x /= ;
}else if( y % == ){
y /= ;
}else{
z /= ;
} return x * y * z ;
}
int main()
{
int T ;
for ( cin >> T ; T ; T -- ){
ll S, No , x , y ;
cin >> S; ll L = , R = ;
ll Mid , tmp ;
while ( L < R ){
Mid = (L + R ) >> ;
tmp = F(Mid);
if( S <= tmp ){
R = Mid ;
}else {
L = Mid + ;
}
}
//L;
tmp = F( L- ) ;
//cout << " L : " << L << " F(X) " << F(L) << endl;
S -= tmp ;
No = L; //cout << S << endl ; L = , R = ;
while( L < R ){
Mid = (L + R ) >> ;
tmp = ( Mid * (Mid+) ) / ;
if( S <= tmp ){
R = Mid ;
}else {
L = Mid + ;
}
}
x = L ;
L -- ;
tmp = ( L * (L+) ) / ;
y =( S - tmp ) ? S-tmp : L ;
cout << No << " " << x << " " << y << endl ;
}
return ;
}

【二分】Shell Pyramid的更多相关文章

  1. 二分算法题目训练(一)——Shell Pyramid详解

    HDU2446——Shell Pyramid 详解 Shell Pyramid 题目描述(Google 翻译的) 在17世纪,由于雷鸣般的喧嚣,浓烟和炽热的火焰,海上的战斗与现代战争一样.但那时,大炮 ...

  2. 【二分法】 HDU 2446 Shell Pyramid

    意甲冠军:非常多,形成一个金字塔球 文章x层 x*(x+1)/ 2 球 给你个S 金字塔的一层代表第一数字向下S球 它是其中  这层中的第几行 第几列 公式 1 : x*(x+1)*(x+2)/ 6 ...

  3. hdu 5432 Pyramid Split 二分

    Pyramid Split Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/conte ...

  4. hdu_2446_Shell Pyramid(数学,二分)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2446 题意:题面很大,有用的就那么几句,意思就是用自然数来堆它画的那个金字塔,比如第一个金字塔的第一个 ...

  5. 【AtCoder】【模型转化】【二分答案】Median Pyramid Hard(AGC006)

    题意: 给你一个排列,有2*n-1个元素,现在进行以下的操作: 每一次将a[i]替换成为a[i-1],a[i],a[i+1]三个数的中位数,并且所有的操作是同时进行的,也就是说这一次用于计算的a[], ...

  6. AT2165 Median Pyramid Hard 二分答案 脑洞题

    无论再来多少次也不可能想到的写法. 二分一个最小的顶端值\(k\),大于设为\(1\)小于等于设为\(0\),可以证猜出来(你跟我说这可以?)如果存在两个连在一起的0/1那么它们会一直往上跑,还可以很 ...

  7. [AGC006] D - Median Pyramid Hard 二分

    Description ​ 现在有一个NN层的方块金字塔,从最顶层到最底层分别标号为1...N1...N. ​ 第ii层恰好有2i−12i−1个方块,且每一层的中心都是对齐的. 这是一个N=4N=4的 ...

  8. Atcoder Grand Contest 006 D - Median Pyramid Hard(二分+思维)

    Atcoder 题面传送门 & 洛谷题面传送门 u1s1 Atcoder 不少思维题是真的想不出来,尽管在 Atcoder 上难度并不高 二分答案(这我倒是想到了),检验最上面一层的数是否 \ ...

  9. hdu5432 二分

    Pyramid Split Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

随机推荐

  1. Netfilter 之 连接跟踪初始化

    基础参数初始化 nf_conntrack_init_start函数完成连接跟踪基础参数的初始化,包括了hash,slab,扩展项,GC任务等: int nf_conntrack_init_start( ...

  2. HDU2795线段树入门 简单查询和修改

    http://acm.hdu.edu.cn/showproblem.php?pid=2795 #include<iostream> using namespace std; ; int h ...

  3. JS各循环的差别

    1.最普通的for循环: for(var i=0;i<arr.length;i++){ } 特点:只能针对数组循环,不能引用于非数组对象 2.for(var i in obj){ } 特点:用于 ...

  4. window 定时任务小项目,每秒钟,每分钟访问url

    个人百度网盘中 链接: https://pan.baidu.com/s/15sK2H-OtrAkAYcXjsxwihA 提取码: awv3 复制这段内容后打开百度网盘手机App,操作更方便哦

  5. mysql中的utf8mb4、utf8mb4_unicode_ci、utf8mb4_general_ci的关系

    mysql中的utf8mb4.utf8mb4_unicode_ci.utf8mb4_general_ci的关系 一.总结 一句话总结: utf8mb4是utf8的超集并完全兼容utf8,能够用四个字节 ...

  6. jquery中mouseover和mouseenter的区别

    jquery中mouseover和mouseenter的区别 一.总结 一句话总结: 见名知意:enter(进入)和over(在上方)的意思好好思考一下 mouseover就是从子元素回到自己的时候也 ...

  7. 用Qt生成dll类库及调用方法

    空白工程新建DLL后,将DLL和LIB文件放入需要调用的“指定目录” 项目->属性->连接器->常规->附加库目录->添加“指定目录” 项目->属性->连接器 ...

  8. excel导出显示默认格子

    <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:o ...

  9. python小白之list使用笔记

     List常见用法 list拆分 I=array([4.,2.]) print(I[:,newaxis])#将原本在一个列表里的两个数拆为两个不同列表里 list合并 法一 运算符重载 num=[1, ...

  10. 新导入的项目目录结构不对(main目录)

    Eclipse导入一个maven项目,碰到一个这样的错误:项目的包路径编程了main.java开头的,而java代码中的pakge却是com开头的,如图. 导致项目编译不通过 错误提示: 解决办法: ...