POJ-2590-Steps题目详解,思路分析及代码,规律题,重要的是找到规律~~
| Time Limit: 1000MS | Memory Limit: 65536K | |
http://poj.org/problem?id=2590
Description
What is the minimum number of steps in order to get from x to y? The length of the first and the last step must be 1.
Input
Output
Sample Input
3
45 48
45 49
45 50
Sample Output
3
3
4
Source
题目意思很好懂:求x点到y点的最小步数,起始和结束的都只能走一步,中间的可以等于前一步,可以比前一步大一或小一;
我们可以推算出,假设走n步,所能达到的最长距离为:1+2+3+4+...+(n+1)/2+...+4+3+2+1;明白了吧,1 2 3 4 5 ...(n+1)/2... 5 4 3 2 1 ;是不是很熟悉;;
步数(n): 最大距离 f(n)
1 1 f(1)=1;
2 1 + 1 f(2)=2=f(1)+(2+1)/2;
3 1 + 2 + 1 f(3)=4=f(2)+(3+1)/2;
... ... ...
n 1 + 2 + 3 +...+ (n+1)/2 +...+ 3 + 2 +1 f(n)=f(n-1)+(n+1)/2;
这样的话方法就多了,可以把距离与步数的关系打表,然后算出距离差,二分查找即可,但开始我有个疑问,如果这个差值介于f(n)与f(n-1)之间怎么办,我们知道n-1步所能达到的最大距离是f(n-1),如果f(n-1)还比差值小,那么无论如何n-1步都是无法达到的,即只能在n步达到;
这里介绍一种很好的方法,代码简洁易懂,思路都差不多;
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int find(int x)
{
int i,a=1;
for(i=2;;i++)
{
a+=(i+1)/2;//a为i步能达到的最大距离,这样连打表都不用了;
if(a>=x)
break;
}
return i;
}
int main()
{
int t,a,b;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
if(b-a<=3)
printf("%d\n",b-a);//革除了a b 相等的情况;
else
printf("%d\n",find(b-a));
}
return 0;
}
POJ-2590-Steps题目详解,思路分析及代码,规律题,重要的是找到规律~~的更多相关文章
- 性能测试监控工具nmon详解和分析
性能测试监控工具nmon详解和分析 1.命令安装 1.查看liunx版本版本x86_64_14i 目录:cd /nmon/logs/ 版本x86_64_14i [root@localhost u06] ...
- RHCE脚本题目详解
目录 RHCE脚本题目详解 题目一 shell脚本之if语句实现: shell脚本之case语句实现: 题目二 实现 测试 解析 写在后面 RHCE脚本题目详解 题目一 在system1上创建一个名为 ...
- 训练技巧详解【含有部分代码】Bag of Tricks for Image Classification with Convolutional Neural Networks
训练技巧详解[含有部分代码]Bag of Tricks for Image Classification with Convolutional Neural Networks 置顶 2018-12-1 ...
- SENet详解及Keras复现代码
转: SENet详解及Keras复现代码 论文地址:https://arxiv.org/pdf/1709.01507.pdf 代码地址:https://github.com/hujie-frank/S ...
- 详解计算miou的代码以及混淆矩阵的意义
详解计算miou的代码以及混淆矩阵的意义 miou的定义 ''' Mean Intersection over Union(MIoU,均交并比):为语义分割的标准度量.其计算两个集合的交集和并集之比. ...
- 八大排序算法详解(动图演示 思路分析 实例代码java 复杂度分析 适用场景)
一.分类 1.内部排序和外部排序 内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程. 外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需 ...
- 【并查集】模板 + 【HDU 1213、HDU 1232、POJ 2236、POJ 1703】例题详解
不想看模板,想直接看题目的请戳下面目录: 目录: HDU 1213 How Many Tables[传送门] HDU 1232 畅通工程 [传送门] POJ 2236 Wireless Network ...
- phpwamp单身狗模式的详解与分析,单身狗模式/即霸体模式的作用讲解。
最近有学生在使用PHPWAMP的时候,问我霸体模式的作用. 学生问:老师,PHPWAMP里面的霸体模式是什么意思,有什么用? 回答:额...就是以前我发布测试版的时候,模式切换里面的单身狗模式. 学生 ...
- DenseNet算法详解——思路就是highway,DneseNet在训练时十分消耗内存
论文笔记:Densely Connected Convolutional Networks(DenseNet模型详解) 2017年09月28日 11:58:49 阅读数:1814 [ 转载自http: ...
- nginx 日志记录 自定义详解(分析上报用)
nginx 日志记录 自定义详解 1.log_format 普通格式 log_format main '$remote_addr - $remote_user [$time_local] $req ...
随机推荐
- C++类成员函数与成员变量的内存布局
一.成员函数 成员函数可以被看作是类作用域的全局函数,不在对象分配的空间里,只有虚函数才会在类对象里有一个指针,存放虚函数的地址等相关信息.
- 482 License Key Formatting 注册码格式化
详见:https://leetcode.com/problems/license-key-formatting/description/ C++: class Solution { public: s ...
- 01_C++学习笔记_入门
1.float类型只能表示数字里面的前6位或者前7位.也就是说c++只能保证float类型的数字的前6位是正确的.如果要求的精度更高的话,请使用double和long double. float精度是 ...
- CF778A(round 402 div.2 D) String Game
题意: Little Nastya has a hobby, she likes to remove some letters from word, to obtain another word. B ...
- requirejs&&springboot
1.Spring Boot Spring boot 基础结构主要有三个文件夹: (1)src/main/java 程序开发以及主程序入口 (2)src/main/resources 配置文件 (3) ...
- iOS 创建xcode插件
苹果的"一个足以应付所有"策略使得它的产品越来越像一个难以下咽的药丸.尽管苹果已经将一些工作流带给了iOS/OS X的开发者,我们仍然希望通过插件来使得Xcode更加顺手! 虽然苹 ...
- git设置log的别名 for hist
hist -- alias for 'log --color --graph --date=short --pretty=format:'%Cred%h%Creset -%C(yellow)%d%C ...
- Two-Phase Commit (2PC)
两阶段提交模式像极了比赛发令:“预备,开始!”
- 11G GI启动顺序
--11gR2 Clusterware and Grid Home - What You Need to Know (文档 ID 1053147.1) 上图来自<Oracle C ...
- JavaScript-基础类型和运算符
JavaScript-基础类型和运算符 P02.稍微了解 1.js代码需要编写到script标签中 <script type="text/javascript"> 此处 ...