description
跳跳棋是在一條數軸上進行的。棋子只能擺在整點上。每個點不能擺超過乙個棋子。我們用跳跳棋來做乙個簡單的遊戲:棋盤上有3顆棋子,分別在a,b,c這三個位置。我們要通過最少的跳動把他們的位置移動成x,y,z。(棋子是沒有區別的)跳動的規則很簡單,任意選一顆棋子,對一顆中軸棋子跳動。跳動後兩顆棋子距離不變。一次只允許跳過1顆棋子。 寫乙個程式,首先判斷是否可以完成任務。如果可以,輸出最少需要的跳動次數。
這題好神啊!首先我們要把問題轉化一下:對於乙個狀態(x,y,z),假設x< y< z,那麼若y-x!=z-y,有三種跳法:中間向左邊或右邊跳,左邊或右邊向中間跳,然後我們可以把中間向兩邊跳的作為這種狀態的兒子,向中間跳的看做是父親,那麼問題就轉化為樹上兩點之間的距離。然後,然後我就不知道怎麼說了……lych_cys
#include
using
namespace
std;
#define ll long long
const
int inf=1000000000;
int read()
while(ch>='0'&&ch<='9')
return x*f;
}struct nodea,b;
bool same(node a,node b)
int step,len1,len2;
node get(node t,int tot)
else
}return t;
}int main()
puts("yes");
if(len1int l=0,r=len2;
while(l<=r)
printf("%d",(r+1)*2+len1-len2);
}
BZOJ2144 國家集訓隊 跳跳棋
跳跳棋是在一條數軸上進行的。棋子只能擺在整點上。每個點不能擺超過乙個棋子。我們用跳跳棋來做乙個簡單的遊戲 棋盤上有3顆棋子,分別在a,b,c這三個位置。我們要通過最少的跳動把他們的位置移動成x,y,z。棋子是沒有區別的 跳動的規則很簡單,任意選一顆棋子,對一顆中軸棋子跳動。跳動後兩顆棋子距離不變。一...
bzoj2144 國家集訓隊2011 跳跳棋
跳跳棋是在一條數軸上進行的。棋子只能擺在整點上。每個點不能擺超過乙個棋子。我們用跳跳棋來做乙個簡單的遊戲 棋盤上有3顆棋子,分別在a,b,c這三個位置。我們要通過最少的跳動把他們的位置移動成x,y,z。棋子是沒有區別的 跳動的規則很簡單,任意選一顆棋子,對一顆中軸棋子跳動。跳動後兩顆棋子距離不變。一...
跳跳棋 LCA 二分
description 跳跳棋是在一條數軸上進行的。棋子只能擺在整點上。每個點不能擺超過乙個棋子。我們用跳跳棋來做乙個簡單的遊戲 棋盤上有3顆棋子,分別在a,b,c這三個位置。我們要通過最少的跳動把他們的位置移動成x,y,z。棋子是沒有區別的 跳動的規則很簡單,任意選一顆棋子,對一顆中軸棋子跳動。跳...