先预处理一下层和行所对应的数,然后二分三个答案,注意细节

 

#include<cstdio>

#define inf 0x3f3f3f3f

const int maxn=;

typedef __int64 LL;

using namespace std;

int i;

LL n,s,ans1,ans2,ans3;

LL sum[maxn+];

LL a[maxn+];

void solve(){
int flag=;
LL lb=,ub=maxn,mid=(lb+ub)>>;
while(ub-lb>){
mid=(lb+ub)>>;
if(s>a[mid]) lb=mid;
else if(s<a[mid]) ub=mid;
else if(s==a[mid]) {
flag=;
break;
}
}
if(s<=a[mid]&&s>=a[mid-]&&flag) ans1=mid;
else if(s<=a[lb]&&s>=a[lb-]) ans1=lb;
else if(s<=a[ub]&&s>=a[ub-]) ans1=ub;
s-=(a[ans1-]);
//printf("%I64d\n",s);
//printf("%I64d\n",ans1);
flag=;
lb=,ub=ans1,mid=(lb+mid)>>;
while(ub-lb>){
mid=(lb+ub)>>;
// printf("%d %d\n",mid,sum[3]);
if(s>sum[mid])
lb=mid;
else if(s<sum[mid])
ub=mid;
else if(s==sum[mid]){
flag=;
break;
}
}
//printf("%I64d %I64d %I64d %I64d\n",sum[lb],sum[lb-1],s,lb);
if(s<=sum[mid]&&s>=sum[mid-]&&flag){
// printf("1 %I64d %I64d %I64d %I64d\n",sum[mid],sum[mid-1],s,mid);
ans2=mid;
}
else if(s<=sum[lb]&&s>=sum[lb-]){
// printf("2 %I64d %I64d %I64d %I64d\n",sum[lb],sum[lb-1],s,lb);
ans2=lb;
}
else if(s<=sum[ub]&&s>=sum[ub-]){
//printf("3 %I64d %I64d %I64d %I64d\n",sum[ub],sum[ub-1],s,ub);
ans2=ub;
}
flag=;
lb=,ub=ans2,mid=(lb+ub)>>;
//printf("%d\n",ans2);
while(ub-lb>){
mid=(lb+ub)>>;
if(s>sum[ans2-]+mid) lb=mid;
else if(s<sum[ans2-]+mid) ub=mid;
else if(s==mid+sum[ans2-]) {
flag=;
break;
}
}
if(s==mid+sum[ans2-]&&flag) ans3=mid;
else if(s==lb+sum[ans2-]) ans3=lb;
else if(s==ub+sum[ans2-]) ans3=ub;
printf("%I64d %I64d %I64d\n",ans1,ans2,ans3);
} int main()
{
for(int i=;i<=maxn;i++)
sum[i]=sum[i-]+i;
for(int i=;i<=maxn;i++)
a[i]=sum[i]+a[i-];
scanf("%I64d",&n);
while(n--){
scanf("%I64d",&s);
solve();
}
return ;
}

hdu2466-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. 【二分】Shell Pyramid

    [来源]:2008年哈尔滨区域赛 [题目链接]: http://acm.hdu.edu.cn/showproblem.php?pid=2446 [题意] 题目是真的长呀,其实就问一个问题. 按照图里面 ...

  4. Shell替换

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. #!/bin/bash a= echo -e "Value of a is ...

  5. Shell特殊变量

    $ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...

  6. shell变量

    定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

  7. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  8. shell简介

    Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...

  9. Shell碎碎念

    1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...

  10. MongoDB学习笔记二—Shell操作

    数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...

随机推荐

  1. input标签添加上disable属性在移动端字体颜色不兼容的解决办法。

    input[disabled],input:disabled,input.disabled{ color: #999; -webkit-text-fill-color:#999; -webkit-op ...

  2. the art of seo(chapter eleven)

    Tracking Results and Measuring Success goal -> driver ***Why Measuring Success Is Essential to th ...

  3. ACM学习历程——HDU3333 Turing Tree(线段树 && 离线操作)

    Problem Description After inventing Turing Tree, 3xian always felt boring when solving problems abou ...

  4. 【Lintcode】098.Sort List

    题目: Sort a linked list in O(n log n) time using constant space complexity. Example Given 1->3-> ...

  5. Ubuntu 16.04 LTS 一键安装VNC

    Ubuntu 16.04 LTS 安装VNC,在百度和谷歌找了很多教程,不是太老,就是说的驴唇不对马嘴,所以忍不住写一些以正视听. Ubuntu 16.04 LTS是最近出的LTS版本系统,估计未来也 ...

  6. CAS单点登录学习(一):服务端搭建

    下载先在网上下载cas-server-3.5.2,将里面的cas-server-webapp-3.5.2.war放到tomcat的webapps目录下. https设置cas单点登默认使用的是http ...

  7. 快速排序(java)

    快速排序是冒泡排序的优化,是一种非常高效的排序, 甚至是目前为止最高效的排序,其思想是这样的:设数组a中存放了n个数据元素,low为数组的低端下标,high为数组的高端下标,从数组a中任取一个元素(通 ...

  8. 02_SQliteOpenHelper介绍&oncreate方法介绍

    file:///D:/BaiduNetdiskDownload/adt-bundle-windows-x86_64_20140101/adt-bundle-windows-x86_64_2014010 ...

  9. C#&nbsp;Andriod&nbsp;AES&nbsp;加密算法

    android端: package com.kingmed.http; import java.io.UnsupportedEncodingException; import javax.crypto ...

  10. Spring入门第十课

    Spring表达式语言:SpEL Spring表达式语言(简称SpEL)是一个支持运行时查询和操作对象图的强大的表达式语言. 语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都 ...