【二分】Shell Pyramid
【来源】: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的更多相关文章
- 二分算法题目训练(一)——Shell Pyramid详解
HDU2446——Shell Pyramid 详解 Shell Pyramid 题目描述(Google 翻译的) 在17世纪,由于雷鸣般的喧嚣,浓烟和炽热的火焰,海上的战斗与现代战争一样.但那时,大炮 ...
- 【二分法】 HDU 2446 Shell Pyramid
意甲冠军:非常多,形成一个金字塔球 文章x层 x*(x+1)/ 2 球 给你个S 金字塔的一层代表第一数字向下S球 它是其中 这层中的第几行 第几列 公式 1 : x*(x+1)*(x+2)/ 6 ...
- hdu 5432 Pyramid Split 二分
Pyramid Split Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/conte ...
- hdu_2446_Shell Pyramid(数学,二分)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2446 题意:题面很大,有用的就那么几句,意思就是用自然数来堆它画的那个金字塔,比如第一个金字塔的第一个 ...
- 【AtCoder】【模型转化】【二分答案】Median Pyramid Hard(AGC006)
题意: 给你一个排列,有2*n-1个元素,现在进行以下的操作: 每一次将a[i]替换成为a[i-1],a[i],a[i+1]三个数的中位数,并且所有的操作是同时进行的,也就是说这一次用于计算的a[], ...
- AT2165 Median Pyramid Hard 二分答案 脑洞题
无论再来多少次也不可能想到的写法. 二分一个最小的顶端值\(k\),大于设为\(1\)小于等于设为\(0\),可以证猜出来(你跟我说这可以?)如果存在两个连在一起的0/1那么它们会一直往上跑,还可以很 ...
- [AGC006] D - Median Pyramid Hard 二分
Description 现在有一个NN层的方块金字塔,从最顶层到最底层分别标号为1...N1...N. 第ii层恰好有2i−12i−1个方块,且每一层的中心都是对齐的. 这是一个N=4N=4的 ...
- Atcoder Grand Contest 006 D - Median Pyramid Hard(二分+思维)
Atcoder 题面传送门 & 洛谷题面传送门 u1s1 Atcoder 不少思维题是真的想不出来,尽管在 Atcoder 上难度并不高 二分答案(这我倒是想到了),检验最上面一层的数是否 \ ...
- hdu5432 二分
Pyramid Split Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
随机推荐
- dos切换其他目录加参数/D
D:\>cd /D c:\Windows c:\Windows> 不加参数/D 无法切换到另一个盘符
- bypass disable_function总结学习
通常bypass的思路如下 1. 攻击后端组件,寻找存在命令注入的.web 应用常用的后端组件,如,ImageMagick 的魔图漏洞.bash 的破壳漏洞 2. 寻找未禁用的漏网函数,常见的执行命令 ...
- webstorm设置babel,使用es6
原文链接:https://blog.csdn.net/peade/article/details/76522177 网上有很多关于如何设置babel的.我学习着设置,但总差那么几步,没能满足我的需求. ...
- 最大生成树+map实现技巧
POJ2263 //#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include< ...
- pytorch-卷积基本网络结构-提取网络参数-初始化网络参数
基本的卷积神经网络 from torch import nn class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self ...
- 前端知识点回顾——Javascript篇(三)
数组的冒泡.选择和插入排序法 冒泡排序法(从小到大) function bubble(arr){ for(let i = 0 ;i<arr.length-1;i++){ for(let j = ...
- VSCode查询快捷键对应功能技巧
- java程序引用别的jar包打包方法
参考文章:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 目前亲测:eclipse打包: 1.不需要手动写mainfest.inf 先利用ecl ...
- RTSP协议-中文定义
RTSP协议-中文定义 转自:http://blog.csdn.net/arau_sh/article/details/2982914 E-mail:bryanj@163.com 译者: Bryan. ...
- React Native面试题记录
一.ES6中增加了那些新的功能? 1> for-of循环: 使用 for-of 的时候,循环的是数组内部的元素且不会出现 for-in 中将附加属性也遍历的情况,其次,循环变量的类型和其在数组中 ...