Delta-wave

题意:用图中所示的数字填满这个三角形,求n到m的最短路径,也就是最少通过几条边。

思路:简单贪心就可以了,本人是先将每一层的左右端点用结构体存起来,然后分奇偶判断。

这题必须理清思路才更省时间,二分、搜索都试过,没有什么结果,突然发现当前点正对的另一层的点可以用来判断终点方向。

被以前做的一个题误导了一下,其实理清思路10分钟就可以写出来,结果近一小时左调右调,删了再写写了又删,,,结局悲惨。。。

const int N=1e6+10;
struct node
{
ll l,r;
} a[N];
int n,m,mi;
void init()
{
a[1].l=a[1].r=1;
ll l=1,r=1;
for(int i=2;; i++)
{
l=r+1,r=l+2*(i-1);
a[i].l=l,a[i].r=r;
if(l>1e9) break;
}
}
int main()
{
init();
while(~scanf("%d%d",&n,&m))
{
if(n==m)
{
puts("0");
continue;
}
if(n>m) swap(n,m);
ll k1=1,k2=1;
for(int i=1;; i++)
if(n>=a[i].l&&n<=a[i].r)
{
k1=ll(i);
break;
}
for(int i=1;; i++)
if(m>=a[i].l&&m<=a[i].r)
{
k2=ll(i);
break;
}
// printf("%I64d %I64d\n",k1,k2);
int ans=0;
while(1)
{
if(k1==k2)
{
ans+=abs(n-m);
break;
}
ll tmp=n+(k1+k2-1)*(k2-k1);//正下方
if(k1&1)
{
if(n&1)//奇数
n=n+k1*2,k1++;
else//偶数
{
if(tmp<m) n++;
else n--;
}
}
else
{
if(n&1)//奇数
{
if(tmp<m) n++;
else n--;
}
else//偶数
n=n+k1*2,k1++;
}
// printf("%d %d\n",n,k1);
ans++;
}
printf("%d\n",ans);
}
return 0;
}


HDU-1030 Delta-wave ,暴力贪心!的更多相关文章

  1. hdu 3697 Selecting courses (暴力+贪心)

    Selecting courses Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 62768/32768 K (Java/Others ...

  2. HDU 3723 Delta Wave (高精度+calelan数)

    题意:给定一个图,问你只能向上向下,或者平着走,有多少种方法可以走到最后一个格. 析:首先先考虑,如果没有平的情况就是calelan数了,现在有平的情况,那么就枚举呗,因为数很大,所以要用高精度. 答 ...

  3. hdu 4825 Xor Sum(trie+贪心)

    hdu 4825 Xor Sum(trie+贪心) 刚刚补了前天的CF的D题再做这题感觉轻松了许多.简直一个模子啊...跑树上异或x最大值.贪心地让某位的值与x对应位的值不同即可. #include ...

  4. uva 1478 - Delta Wave(递推+大数+卡特兰数+组合数学)

    option=com_onlinejudge&Itemid=8&category=471&page=show_problem&problem=4224" st ...

  5. HDU3723 Delta Wave —— 卡特兰数

    题目链接:https://vjudge.net/problem/HDU-3723 Delta Wave Time Limit: 6000/3000 MS (Java/Others)    Memory ...

  6. Delta-wave HDU - 1030

    Delta-wave HDU - 1030 A triangle field is numbered with successive integers in the way shown on the ...

  7. Codeforces Round #503 (by SIS, Div. 2) C. Elections (暴力+贪心)

    [题目描述] Elections are coming. You know the number of voters and the number of parties — n and m respe ...

  8. HDU - 6570 - Wave(暴力)

    Avin is studying series. A series is called "wave" if the following conditions are satisfi ...

  9. HDU 3697 Selecting courses(贪心+暴力)(2010 Asia Fuzhou Regional Contest)

    Description     A new Semester is coming and students are troubling for selecting courses. Students ...

  10. hdu 1030 Delta-wave (C++, 0ms, explanatory comments.) 分类: hdoj 2015-06-15 12:21 45人阅读 评论(0) 收藏

    problem description http://acm.hdu.edu.cn/showproblem.php?pid=1030 #include <cstdio> #include ...

随机推荐

  1. spark常用参数

    val conf = new SparkConf().setAppName("WordCount_groupBy").setMaster("local") // ...

  2. hadoop ssh 问题WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

    0.0.0.0: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0.0.0.0: @    WARNING: REMOTE HO ...

  3. python 基础网络编程2

    python 基础网络编程2 前一篇讲了socketserver.py中BaseServer类, 下面介绍下TCPServer和UDPServer class TCPServer(BaseServer ...

  4. java 使用htmlunit模拟登录爬取新浪微博页面

    mport java.io.IOException;import java.net.MalformedURLException;import com.gargoylesoftware.htmlunit ...

  5. DP一直是自己的弱势 开始练滚动数组——HDOJ4502

    http://acm.hdu.edu.cn/showproblem.php?pid=4502//题目链接 思路 : dp[i]表示 到第i天能获得的最大工资  依次更新 #include<cst ...

  6. libxml2.dylb 导致<libxml/tree.h> 老是找不到头文件

    添加了libxml2.dylb的framework ,结果还是引用不了<libxml/tree.h>,  老是提示找不到头文件. 这个问题其实比较容易解决,但是XCode的版本问题确实让开 ...

  7. 用valgrind检查内存问题

    Valgrind Valgrind作为一个免费且优秀的工具包,平时大部分人可能都是使用valgrind检测内存问题,如内存泄露,越界等. Valgrind工具包包含多个工具,如Memcheck,Cac ...

  8. 国庆集训 || Wannafly Day1

    网址:https://www.nowcoder.com/acm/contest/201#question A.签到 手速石头剪刀布 #include <cstdio> #include & ...

  9. C#获得DataTable的key值

    //获得dataTable的key值 List<string> keyList = new List<string>(); ; i < dt.Columns.Count; ...

  10. 使用xib开发界面

    使用xib开发界面 2015-02-02 10:03 编辑: suiling 分类:iOS开发 来源:jymn_chen‘s blog   纯代码写界面有时候会降低开发效率,对于一些通用简单的界面,例 ...