首先 x, y 的正負性是沒有影響的。
分三種情況討論:
1.無解:
有解的充要條件是 x, y 奇偶性相同
x, y 同為偶數:
有兩種走法:
x, y 分別用 (2) 走到 (0, 0)
x, y 先走 (1) 再走 (2)
答案就是兩種走法所需步數的最小值。
為什麼會有走法2呢?
考慮走法1中 x, y 一直走 2(l - 1) 步,直到不能走 (x < 2l, y < 2l),
如果此時 x < l, y < l 且 x != y 的話,那麼需要兩步,但是我們卻可以通過調整走法1
中最後一步的大小使得 x = y ,那麼就只需要再走1步 (2) 就可以了。
那麼我們把這最後一步 (2) 放到開始,並且貪心地讓它最大。
注意:過程中要時刻保證 x, y 為偶數。
x, y 同為奇數:
先通過 (1) 使 x, y 變成偶數,然後按照偶數地走法就好了
最後就是高精度操作操作了 (**打得好醜)
(以上純屬個人理解出鍋不背)
#include
#include
#include
using
namespace std;
#define n 500
#define l 10
#define fo(i, x, y) for(int i = x; i <= y; i ++)
#define fd(i, x, y) for(int i = x; i >= y; i --)
#define re return
#define max(x, y) (x > y ? x : y)
struct num
bool
operator
>
(const num &u)
void
operator-=
(const num u)
void
init()
bool
operator!=(
const num &u)
void
updata()
void
operator+=
(const num &u)
} a, b, c, c1, d, ans;
bool
cmp(num &u,
int l, num &v)
void
del(num &u,
int l, num &v)
num c
(num &u, num &v)
} d.
updata()
;return d;
}num a1, a2, a3;
num get_ans
(num u, num v)
num get
(num u, num v)
a2 =
get_ans
(u, v)
;++ a2.x[1]
; a2.
updata()
;return a1 > a2 ? a2 : a1;
}int
main()
-- c.x[1]
;fo(i,1
, c.tot)
if(c.x[i]
<0)
c.x[i]
+= l,
-- c.x[i +1]
;while
(! c.x[c.tot]
)-- c.tot;
fo(i,
1, c.tot) c1.x[i]
=(c.x[i]
<<1)
; c1.
updata()
;if(a > b)
swap
(a, b);if
(a.x[1]
&1) ans =
get(a, b)
;++ ans.x[1]
; ans.
updata()
;}else
ans =
get(a, b);fd
(i, ans.tot,1)
printf
("%d"
, ans.x[i]);
puts(""
);}return0;
}
基金轉換 乾坤大挪移
記得武俠裡面的絕學 乾坤大挪移 麼?夏洛激動得補充道,轉換基本上就是那個意思。以前夏洛每每看到在危急時刻,主人公使出一招 乾坤大挪移 只是輕鬆作了個調換,卻能夠消大象於無形,剎那間就可能風雲變幻 扭轉乾坤,感覺頗得道家之味。喏,轉換就照這個去理解,夏洛得意地一挑眉,只要你選對轉換時機,選對轉換目標就...
SQL行列乾坤大挪移
今天dalao郵件裡需要新增一張每月累計長長的圖,可是,拿到手上的sql匯出資料不符合我最愛的pyecharts的資料輸入格式,頭大。獲得到的資料 日期種類 數量9012 01 01 香蕉10 9012 01 01 蘋果99 9012 01 01梨9 9012 01 02 香蕉100 9012 01...
SQL 內功心法之乾坤大挪移
sql 指結構化查詢語言,全稱是 structured query language。sql語言包括三種主要程式語言類別的語句 資料定義語言 ddl 資料操作語言 dml 及資料控制語言 dcl dcl 資料庫控制語言,data control language,用來設定或更改資料庫使用者或角色許可...