NOIP2012普及組T2 尋寶

2021-08-20 06:54:45 字數 2264 閱讀 9705

傳說很遙遠的藏寶樓頂層藏著誘人的寶藏。小明歷盡千辛萬苦終於找到傳說中的這個藏寶樓,藏寶樓的門口豎著乙個木板,上面寫有幾個大字:尋寶說明書。說明書的內容如下:

藏寶樓共有 n+1 層,最上面一層是頂層,頂層有乙個房間裡面藏著寶藏。除了頂層外,藏寶樓另有 n 層,每層 m 個房間,這 m 個房間圍成一圈並按逆時針方向依次編號為 0,…,m-1。其中一些房間有通往上一層的樓梯,每層樓的樓梯設計可能不同。每個房間裡有乙個指示牌,指示牌上有乙個數字 x,表示從這個房間開始按逆時針方向選擇第 x 個有樓梯的房間(假定該房間的編號為 k),從該房間上樓,上樓後到達上一層的 k 號房間。比如當前房間的指示牌上寫著 2,則按逆時針方向開始嘗試,找到第 2 個有樓梯的房間,從該房間上樓。如果當前房間本身就有樓梯通向上層,該房間作為第乙個有樓梯的房間。

尋寶說明書的最後用紅色大號字型寫著:「尋寶須知:幫助你找到每層上樓房間的指示牌上的數字(即每層第乙個進入的房間內指示牌上的數字)總和為開啟寶箱的金鑰」。

請幫助小明算出這個開啟寶箱的金鑰。輸入格式:

第一行 2 個整數 n 和 m,之間用乙個空格隔開。n 表示除了頂層外藏寶樓共 n 層樓,m 表示除頂層外每層樓有 m 個房間。

接下來 n*m行,每行兩個整數,之間用乙個空格隔開,每行描述乙個房間內的情況,其中第(i-1)*m+j 行表示第 i 層 j-1 號房間的情況(i=1, 2, …, n;j=1, 2, … ,m)。第乙個整數表示該房間是否有樓梯通往上一層(0 表示沒有,1 表示有),第二個整數表示指示牌上的數字。注意,從 j 號房間的樓梯爬到上一層到達的房間一定也是 j 號房間。

最後一行,乙個整數,表示小明從藏寶樓底層的幾號房間進入開始尋寶(注:房間編號從 0 開始)。

輸出格式:

輸出只有一行,乙個整數,表示開啟寶箱的金鑰,這個數可能會很大,請輸出對 20123取模的結果即可。

輸入樣例:

2 3

1 20 3

1 40 1

1 51 2

1

輸出樣例:

5
【輸入輸出樣例說明】

第一層: 

0 號房間,有樓梯通往上層,指示牌上的數字是 2;

1 號房間,無樓梯通往上層,指示牌上的數字是 3;

2 號房間,有樓梯通往上層,指示牌上的數字是 4;

第二層:

0 號房間,無樓梯通往上層,指示牌上的數字是 1;

1 號房間,有樓梯通往上層,指示牌上的數字是 5;

2 號房間,有樓梯通往上層,指示牌上的數字是 2;

小明首先進入第一層(底層)的 1 號房間,記下指示牌上的數字為 3,然後從這個房間

開始,沿逆時針方向選擇第 3 個有樓梯的房間 2 號房間進入,上樓後到達第二層的 2 號房間,

記下指示牌上的數字為 2,由於當前房間本身有樓梯通向上層,該房間作為第乙個有樓梯的

房間。因此,此時沿逆時針方向選擇第 2 個有樓梯的房間即為 1 號房間,進入後上樓梯到達

頂層。這時把上述記下的指示牌上的數字加起來,即 3+2=5,所以開啟寶箱的金鑰就是 5。

【資料範圍】

對於 50%資料,有 0<n≤1000,0<x≤10000;

對於 100%資料,有 0<n≤10000,0<m≤100,0<x≤1,000,000。

題目分析:

題目給出了詳細的尋寶方法,所以模擬即可。詳細解釋在**中。

**如下:

#includeusing namespace std;

int a[10001][101],num[10001][101];//a存的是該房間有沒有樓梯(1有0沒有),num存的是門上的數字

int l[10001],ans;//l[i]代表第i層的有多少個房間有樓梯(避免不必要操作的關鍵),ans為金鑰

int main()

} int k;

scanf("%d",&k);//當前房間號

for(i=1;i<=n;i++)//從第一層到第n層,最後上到n+1層結束

{ ans=(ans+num[i][k])%20123;//加上當前房間的數字,防止溢位

int walk=(num[i][k]-1)%l[i]+1;//!!!這是關鍵:因為可能會繞很多圈,如果用迴圈來模擬操作會超時,(num[i][k]-1)%l[i]+1意思是繞了圈回到當前位置,再行走到目標位置。可以直接得到目標位置相對於當前位置的距離

NOIP2012普及組 尋寶

這道實際難度入門的題做得真 要麻煩死我,由於摸不到電腦,在大腦裡調了3天都翻不轉!p1076 尋寶 思路 暴力模擬 這是基礎,單純暴力據說會全部tle 取模優化 這樣時間複雜度驟降到o nm ac includeusing namespace std long long n,m,t,a 10005 ...

Noip2012普及組 擺花

小明的花店新開張,為了吸引顧客,他想在花店的門口擺上一排花,共 m 盆。通過調查顧客的喜好,小明列出了 顧客最喜歡的 n 種花,從 1 到 n 標號。為了在門口展出更多種花,規定第 i 種花不能超過 ai盆,擺花時同一 種花放在一起,且不同種類的花需按標號的從小到大的順序依次擺列。試程式設計計算,一...

noip2012普及組 擺花

小明的花店新開張,為了吸引顧客,他想在花店的門口擺上一排花,共m盆。通過調查顧客的喜好,小明列出了顧客最喜歡的n種花,從1到n標號。為了在門口展出更多種花,規定第i種花不能超過ai盆,擺花時同一種花放在一起,且不同種類的花需按標號的從小到大的順序依次擺列。試程式設計計算,一共有多少種不同的擺花方案。...