Jumping Jack CodeForces - 11B

就是一个贪心。

基本思路:

正负没有关系,先取绝对值。

首先跳过头,然后考虑怎么回来。

设超过头的步数为kk。如果kk为偶数,那么直接在前面跳过来的步数中选一个kk/2的步数,改成反着跳即可,不需要额外步数。

如果kk为奇数:

显然如果只把前面跳的改成反着跳不可能导致位置与目标位置差值的奇偶性变化,而kk为奇数,需要达到的差值0是偶数,因此一定需要额外步数。

那么可能有两种情况:

设当前已经跳了p步。如果p为偶数,那么这一步的下一步(p+1)为奇数,只需要再跳一步,并且在前面找到一步为(kk+p+1)/2改成反着跳即可,需要1步额外的。(试一试能发现一定能找到改法,也不难证)

如果p为奇数,那么(p+1)为偶数,(p+1)为奇数,显然现在需要奇数步来使得位置与目标位置的差值由奇变成偶,因此要额外走2步。(试一试能发现一定能找到改法)

当然,像我这样做,有一些性质在距离为0的时候会出现不适合的情况,因此需要特判0。

错误记录:

找规律以偏概全,23行写成if((tt+1)%2==1)

 #include<cstdio>
typedef long long LL;
LL x,tt,p,kk;
int main()
{
scanf("%lld",&x);
if(x==)
{
printf("");
return ;
}
if(x<)
x=-x;
while(true)
{
tt+=++p;
if(tt>=x) break;
}
kk=tt-x;
if(kk%==)
{
p++;
if(p%==)
p++;
}
printf("%lld",p);
return ;
}

最新文章

  1. ServiceStack.Redis订阅发布服务的调用
  2. java 自动装箱自动拆箱
  3. QA要懂的Linux命令
  4. PHP 读取逐条数据库记录,以及提交下拉菜单选项
  5. HTML--9表单和验证事件
  6. 创建kafkatopic和productor
  7. C_functions
  8. HDOJ(HDU) 4847 Wow! Such Doge!(doge字符统计)
  9. 杭电 1795 The least one
  10. RSA算法详解及C语言实现
  11. HDU_2019——向排序好的数列中插入数
  12. jQuery插件-jgcharts实现Javascript制作Google Charts
  13. scrollWidth,offsetWidth,clientWidth,width;scrollHeight,offsetHeight,clientHeight,height;offsetTop,scrollTop,top;offsetLeft,scrollLeft,left还有谁
  14. jumpserver V0.4.0 在CentOs7上的安装
  15. NYOJ 题目12喷水装置(二)
  16. ASP.NET Core MVC 2.1 顶级参数验证
  17. Object.prototype.toString.call(obj)使用方法以及原理
  18. scan函数用法详解
  19. 高通开发笔记---Yangtze worknote
  20. Django时区设置的郁闷

热门文章

  1. L0、L1与L2范数
  2. Linux 思维导图
  3. Unable to connect to database server to retrieve database list; Arcgis 连接不上postsql库;
  4. 《The Swift Programming Language》的笔记-第27页
  5. linux core文件设置
  6. 2.NetDh框架之简单高效的日志操作类(附源码和示例代码)
  7. GEO,IGSO,MEO,LEO
  8. WCF Rest post请求
  9. NDK编程中如何在C文件中打印调试信息
  10. YTU 2598: 编程题B-小平智斗自动售货机