2016國慶清北Day2T1

2021-07-23 13:26:38 字數 1969 閱讀 6983

pa

【題目描述】

漢諾塔公升級了:現在我們有n個圓盤和n個柱子,每個圓盤大小都不一樣,

大的圓盤不能放在小的圓盤上面,n個柱子從左到右排成一排。每次你可以將一

個柱子上的最上面的圓盤移動到右邊或者左邊的柱子上 (如果移動之後是合法的

話)。 現在告訴你初始時的狀態, 你希望用最少的步數將第i 大的盤子移動到第i根

柱子上,問最小步數。

【輸入格式】

第一行乙個正整數t,代表詢問的組數。

接下來t組資料,每組資料第一行乙個整數n。

接下來一行每行n個正整數,代表每個柱子上圓盤的大小。

【輸出格式】

輸出共t行,代表每次的答案。如果方案不存在,輸出「−1」 。

【樣例輸入】

4 3

2 1 3

2 7 8

2 10000 1000

3 97 96 95

【樣例輸出】

4 0

-1 20

【樣例解釋】

無。 【資料範圍與規定】

對於70%的資料,n的值都是相等的。

對於100%的資料,1 ≤t≤ 6 × 10^3, 1 ≤ n≤ 7

當時考場上看見這個題直接棄療….zz漢諾塔。

今天吸血鬼又給講了一下,發現也不是難到不能做的地步。(mdzz!快去練暴搜!)

其實這個題其實是打表啊…..用bfs打表,然後對應詢問直接輸出,時空複雜度大丈夫。

對於讀入進來的資料,離散化一下,用z陣列記錄這個盤子是第幾大。

用bit陣列記錄位,這個是當你移動盤子的時候有用的….(具體我也說不太清楚,看**理解理解吧。)

我們開乙個top和place陣列,分別記錄第i個柱子的最上面的盤子,和當前盤子在哪根柱子上,

預處da理biao的時候,首先從初始狀態開始搜(1,12,123,1234……1234567)

每搜到乙個新的可能狀態,就把這個狀態記錄下來。(試想一下,從某個給定狀態到初始狀態的步數==從初始狀態的步數到給定狀態的步數)

細節處理的話,直接看**吧。

(看了半天才看出來鍾小鳥是手打的佇列= =)

orz清北學堂最最最帥的神犇 鐘皓曦曦。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓鐘皓曦 的**

#include

#include

#include

#include

using namespace std;

const int maxn=10000000;

int n,top[10],place[10],bit[10];//最上面|每個盤子位置 |進製儲存

int res[maxn];//答案

intq[maxn];//佇列

int front,tail;//佇列頭尾指標

int w[10],z[10];//z為離散化後的大小

bool use[maxn];

bool cmp(int a,int b)

reverse(place+1,place+x+1);//逆轉 (乙個奇怪的函式)

for (int a=x;a>=1;a--)

top[place[a]]=a;

//初始最上面位置 即123

4567

for (int a=1;a<=x;a++)

}//左移

if (p!=x && (a1] || !top[p+1]))

}//右移 } }

}int main()

//bit 10

1001000

10000...

for(;front<=tail;)

printf("%d",tail);

int t;

scanf("%d",&t);

for(;t--;)

return

0;}

NOI2016江蘇省選Day2T1 詳解

jstsc day2t1 airport 解題報告 問題描述 大意 jsoi王國有n個機場,m條直達航班。每兩個機場之間都有乙個固定的飛行時間。由於流量控制,氣候,地形等因素,從i到j的飛行時間與從j到i的飛行時間不一定相等。飛機每降落在某一機場,都需要例行檢查,維護,加油。在第i座機場維護的時間為...

NOIP2016 提高組Day2 T1 組合數問題

題目描述 組合數表示的是從n個物品中選出m個物品的方案數。舉個例子,從 1,2,3 三個物品中選擇兩個物品可以有 1,2 1,3 2,3 這三種選擇方法。根據組合數的定 義,我們可以給出計算組合數的一般公式 其中n 1 2 n 小蔥想知道如果給定n,m和k,對於所有的0 i n,0 j min i,...

清北合肥day1

題目 1.給出乙個由0,1組成的環 求最少多少次交換 任意兩個位置 使得0,1靠在一起 n 1000 2.兩個數列,支援在第乙個數列上區間 1,1 每次花費為1 求a變成b的最小代價 n 1e5 3.有n首歌,每首歌每秒有p i 的機率被破譯 當大於等於t時自動破譯 求期望破譯歌數 題解 t1t2都...