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

 

#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. css:before和after中的content属性

    css有一个属性叫做content.content只能使用在:after和:before之中.它用于在元素之前或者元素之后加上一些内容 就像这样: .email-address:before { co ...

  2. Java的访问权限修饰符

    default或者friendly表示默认的访问权限修饰符.

  3. str_2.判断两个字符串是否互为旋转词

    1. 字符串str的前面任意部分挪到后面形成的字符串叫做字符串str的旋转词 $str1 = "2ab1"; $str2 = "ab12"; $ret = is ...

  4. 【Lintcode】046.Majority Number

    题目: Given an array of integers, the majority number is the number that occurs more than half of the ...

  5. 《c# 实现p2p文件分享与传输系统》 一、 模型

    c#实现P2P文件分享与传输系统 一.模型 P2P的概念大家都不陌生,也就是所谓的“点对点传输”,即不直接通过服务器,在两台或多台客户端之间传输数据,实现信息交流和资源共享.P2P技术已经发展了很多年 ...

  6. linux命令配置IP详解

    在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,有时需要编辑这些文件来完成联网工作. vi /etc/sysconfig/network-scripts/ifcfg-eth0 :进 ...

  7. (二)搭建SSH环境

    一.struts 1.添加jar包: commons-fileupload-1.3.1.jar,[文件上传相关包] commons-io-2.2.jar, commons-lang-2.4.jar , ...

  8. Centos 6.5 下Nginx安装部署https服务器

    一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩.1.选定源码目录选定目录 /usr/local/cd /usr/local/2.安装PCRE库cd /usr/ ...

  9. 如何在VS2015中使用Git命令提示符

    本文转载自 http://qkxue.net/info/176223/Visual-Studio-Git VS2015自带了Git插件,但有时候觉得Git控制台命令更方便些.VS中本身不能把Git B ...

  10. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...