作者bleed1979 (十三)
站内Prob_Solve
标题Re: [问题] Codeforces R11 Problem B
时间Wed Apr 28 13:50:42 2010
以下这个方法只是能AC,但不代表恒正确,也可能是错的。
解这题的基本认知︰
1.测资的正负是一样的,所以一开始要转正来解。
2.相邻两步数最少会差一步,2和3最小可能是+1或-1。
3.0,0 + 1 = 1, 0 + 1 + 2 = 3, 0 + 1 + 2 + 3 = 6,
0 + 1 + 2 + 3 + 4 = 10, 0 + 1 + 2 + 3 + 4 + 5 = 15,
0 + 1 + 2 + 3 + 4 + 5 + 6 = 21,
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28
为0,1,3,6,10,15,21,28....
0不要看,依序是奇奇偶偶奇奇偶偶奇奇偶偶....
解题,数据观察。
1 2 3 最大为6
+ + + 6
+ + - 0
+ - + 4
+ - - 4 取绝对值,以下皆是。
- + + 4
- + - 2
推到这就可以发现,最大为6,但0,2,4,6通包了。
1 2 3 4 5 最大15
+ + + + + 15
+ + + - + 7
+ + + - - 3
+ + - + + 9
+ + - + - 1
+ + - - - 9
+ - + + + 11
+ - - + + 5
- + + + + 13
我跳着推,但推到这就发现,最大为15,但1,3,5,7,9,11,13,15通包了。
到此阶段可以合理的假设。总和如果是奇数,从1开始的奇数会包含。
同理如偶数。
所以,我的作法就是用for回圈一直加总,
跳出回圈的条件为总和大於等於测资且测资%2和总和%2相等。
有人可能会说,如果找14呢?
14相当於15差两步(5 + 2 = 7)(基础知识1) 或是
加总到7(15, 21, 28)(基础知识3)
都是7步。
如果是找20呢?
从21倒回来找的话,6 + 2 = 8步
但是在加总到7时,28 % 2 == 20 % 2,7步就会有解了。
特别讲一下CodeForces这题和UVa 10025的差别,
UVa 10025规定找到的数字>= 1
所以input 0的话,这个假设的公式会找到0但在UVa那里必须是3。
Bleed
※ 引述《chchwy (mat)》之铭言:
: http://codeforces.com/contest/11/problem/B
: 请问一下这题到底该怎麽解呢
: 感觉应该是有某种规律....不过我找不出来 orz
: 建表跟暴力搜寻都太慢了
: ==
: 顺便偷问..这里也有人在打code force吗
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.177.97
※ 编辑: bleed1979 来自: 114.32.177.97 (04/28 14:36)