ZOJ 3593

      题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3593

      5A级别的题目,彻底败给她了。让哥纠结了一个星期了!

      起初我是先把A与B的距离缩短(减c,a,b,减的越多越好),然后留下的一段距离用广度搜索(a,-a,b,-b,c,-c),结果很惨,预设的队列完全不够用,想想就应该知道的,6的8次方已经是多少了呀!根本不能往下探多少步……

       然后换个方法,总结出问题的通式:ax+by=d. d是|A-B|。发现这不就是求不定方程的整数解嘛!a,b都已知了,剩下的就是找单调性,代入整数比较大小,可不幸的是,哥哥又错了:求出来x,y确直接绝对值相加了,完全忘了还有c=a+b这种走法……

       无奈,只能从CP大神的解题报告中求方法了,链接如下:http://blog.sina.com.cn/s/blog_5123df350100zk1d.html
       根据大神的方法,四个公式依次求解,然后找最小值,不过,还是没成功……大神的讲解中没说怎么判断“走不通”的情况,于是,我就从1开始依次代入,代到百万级还没解就判定此公式无整数解……超时了!

       最后,又搜到了一篇总结,链接:http://hi.baidu.com/codeblood/blog/item/a6a6186c0f1453ff8cb10d1b.html

       总算得救了,发这博客的哥们把解题思想说的很细,佩服。但还是有一点儿不明白的,就是判断最小值时,“而最小值只有当(x==y)时或者 (x==0, y)  或者(x, y==0)(==代表 接近)”这句话的理论依据是什么?还有代码中“k=(y-x)/(addx+addy);”的依据又是什么?

       我真心不喜欢纯数学的编程题,丫丫的,这数论知识一点儿都不知道,思维无法触及到呀!不过,数论是个好东西,碰巧下午听了个数论学家的讲座,晚上迅速下了本华罗庚的《数论导引》,留着仔细研究,嘿嘿。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值