博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[恢]hdu 1030
阅读量:4958 次
发布时间:2019-06-12

本文共 978 字,大约阅读时间需要 3 分钟。

2011-12-27 00:16:34

地址:

题意:问图里两个数字之间最少需要多少步。

mark:注意小数在前大数在后,先算出行列,然后分奇偶。

代码:

# include 
# include
int min(int a, int b){
return a
b?a:b;} int row(int n) {
int r = sqrt(1.0*n) ; if (r*r == n) return r ; else return r+1 ; } int col(int r, int n) {
return n-(r-1)*(r-1) ; } int gao(int r1, int c1, int r2, int c2) {
int range = c1 + (r2-r1)*2 ; if (c2 > range) return c2-range+gao(r1, c1, r2, range) ; if (c2 < c1) return c1-c2+gao(r1, c1, r2, c1) ; return (r2-r1)*2-((c2&1)==0) ; } int calc(int a, int b) {
int r1 = row(a), c1 = col(r1, a) ; int r2 = row(b), c2 = col(r2, b) ; if ((c1&1)==0) return 1+min(gao(r1, c1-1, r2, c2), gao(r1, c1+1, r2, c2)) ; return gao(r1, c1, r2, c2) ; } int main () {
int a, b ; while (~scanf ("%d %d", &a, &b)) printf("%d\n", calc(min(a,b), max(a,b))) ; return 0 ; }

转载于:https://www.cnblogs.com/lzsz1212/archive/2012/01/06/2315370.html

你可能感兴趣的文章
路由器开源系统openwrt配置页面定制
查看>>
判断任意多边形与矩形的相交(线段与矩形相交或线段与线段相交)
查看>>
C语言_第一讲_C语言入门
查看>>
fouc
查看>>
在不同浏览器都实用的各窗口大小获取方法
查看>>
夜间模式的开启与关闭,父模板的制作
查看>>
JavaScript 基础,登录前端验证
查看>>
linux 安装python3.x
查看>>
Java 集合系列01之 总体框架
查看>>
Spring Boot-定义拦截器(七)
查看>>
(04) if语句
查看>>
XML修改节点值
查看>>
Memcached简介
查看>>
leecode第十题(正则表达式匹配)
查看>>
SQLSERVER字符串截取------PARSENAME
查看>>
java修饰符
查看>>
【CodeForces】91E Igloo Skyscraper
查看>>
有趣的 zkw 线段树(超全详解)
查看>>
webview页面缩放 & 自适应
查看>>
主流图片加载框架 ImageLoader、Glide、Picasso、Fresco 对比
查看>>