hdu2466-Shell Pyramid
先预处理一下层和行所对应的数,然后二分三个答案,注意细节
#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的更多相关文章
- 二分算法题目训练(一)——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 ...
- 【二分】Shell Pyramid
[来源]:2008年哈尔滨区域赛 [题目链接]: http://acm.hdu.edu.cn/showproblem.php?pid=2446 [题意] 题目是真的长呀,其实就问一个问题. 按照图里面 ...
- Shell替换
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. #!/bin/bash a= echo -e "Value of a is ...
- Shell特殊变量
$ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...
- shell变量
定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...
- 第一个shell脚本
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...
- shell简介
Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...
- Shell碎碎念
1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...
- MongoDB学习笔记二—Shell操作
数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...
随机推荐
- input标签添加上disable属性在移动端字体颜色不兼容的解决办法。
input[disabled],input:disabled,input.disabled{ color: #999; -webkit-text-fill-color:#999; -webkit-op ...
- the art of seo(chapter eleven)
Tracking Results and Measuring Success goal -> driver ***Why Measuring Success Is Essential to th ...
- ACM学习历程——HDU3333 Turing Tree(线段树 && 离线操作)
Problem Description After inventing Turing Tree, 3xian always felt boring when solving problems abou ...
- 【Lintcode】098.Sort List
题目: Sort a linked list in O(n log n) time using constant space complexity. Example Given 1->3-> ...
- Ubuntu 16.04 LTS 一键安装VNC
Ubuntu 16.04 LTS 安装VNC,在百度和谷歌找了很多教程,不是太老,就是说的驴唇不对马嘴,所以忍不住写一些以正视听. Ubuntu 16.04 LTS是最近出的LTS版本系统,估计未来也 ...
- CAS单点登录学习(一):服务端搭建
下载先在网上下载cas-server-3.5.2,将里面的cas-server-webapp-3.5.2.war放到tomcat的webapps目录下. https设置cas单点登默认使用的是http ...
- 快速排序(java)
快速排序是冒泡排序的优化,是一种非常高效的排序, 甚至是目前为止最高效的排序,其思想是这样的:设数组a中存放了n个数据元素,low为数组的低端下标,high为数组的高端下标,从数组a中任取一个元素(通 ...
- 02_SQliteOpenHelper介绍&oncreate方法介绍
file:///D:/BaiduNetdiskDownload/adt-bundle-windows-x86_64_20140101/adt-bundle-windows-x86_64_2014010 ...
- C# Andriod AES 加密算法
android端: package com.kingmed.http; import java.io.UnsupportedEncodingException; import javax.crypto ...
- Spring入门第十课
Spring表达式语言:SpEL Spring表达式语言(简称SpEL)是一个支持运行时查询和操作对象图的强大的表达式语言. 语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都 ...