關於聲控燈(計蒜客熱身賽C題)

2021-10-24 15:52:56 字數 1351 閱讀 9018

關於計蒜客2023年10月的熱身賽c題

小明正在上樓梯,當小明逐漸接近某層樓的時候,這層樓的聲控燈檢測到小明的腳步聲便會亮起來,當小明逐漸遠去的時候,聲控燈由於一段時間內沒檢測到聲音又會滅下去。

由於小明是勻速上樓的,而且他的速度把控得剛剛好,腳步聲的音量也十分恰當,使得燈的亮滅呈現出這樣的狀態:他當前所在的樓層的聲控燈是亮起的,他即將抵達的下一層樓的聲控燈是亮起的,他剛剛離開的那層樓的聲控燈也是亮起的。

現在你站在樓的外面,通過窗戶看到了燈的亮滅狀態,請推斷小明現在在幾樓?

輸入格式

每個測試點包含以下內容:

第一行給出乙個整數 t,表示接下來給出 t 組測試資料

每組測試資料報含兩行

第一行包含兩個數 n,m,n表示這棟樓一共有 n 層,當前有m 盞燈是亮起的,而其餘燈都是熄滅的

第二行包含 m 個整數,這些整數按照從小到大的順序給出亮起的燈的序號

保證輸入資料是符合實際情況的

輸出格式

輸出 t 行,每行包含乙個數字,按照輸入的順序依次給出每組測試資料的答案。如果答案不確定,請輸出 -1

資料規模與約定

對於 100%的測試點,1≤m≤3,1≤n≤10^9

這是我第一次做這個題 所以解法其實比較麻煩 但是看網上的解析都是先判斷m在討論n 特意來寫一下

首先我們需要將事件分成以下幾個可能的大類

n==1 一層樓只能亮起一盞燈 則m!=1則輸出-1

n==2 此時的你無論是在一樓還是二樓都會亮起兩盞燈 無論如何都不能準確的確定你當前所在的位置 所以當n=2時可以直接輸出-1

n≥3 此時又要將事件分成兩個大類 即人在樓層中或者頂\底樓。當你在樓層之中 很簡單 我們只需要中間的數值就是你所在的樓層,但如果你在頂樓或者底樓 就會亮起兩盞燈 我們需要結合情況來確定你到底在幾樓 因為需要保證ac 我就把所有情況都列出來了 應該看起來比較冗雜

下面是ac**

#include

main()

else

if(n==

1&&m==2)

else

if(n==

1&&m==3)

else

if(n==

2&&m==1)

else

if(n==

2&&m==2)

else

if(n==

2&&m==3)

else

if(n>=

3&&m==2)

else

if(n>=

3&&m==3)

else

if(n>=

3&&m==1)

}return0;

}

計蒜客 2019計蒜之道D

題意 現在給定你乙個字串 s ss 以及乙個整數 k kk,請求出 s ss的字典序最小的長度為 k kk的子串行。資料範圍 0 s 5000000 00 s 5000 000 樣例輸入 helloworld 5樣例輸出 ellld思路 假如我們先不考慮長度為k的限制我們應當怎麼做?我們以樣例為例子...

計蒜客 解碼

蒜頭君自己發明了一種字串的編碼方式,對於只含有大小寫字母的字串,可以用數字來表示括號裡面的串連續出現的次數 數字有可能超過一位數 比如a abcd 2等價於aabcdabcd。特別地,如果數字前面沒有括號,表示緊貼數字的前面的 乙個字母 出現的次數。比如abc2表示abcc。為了降低解碼的難度,蒜頭...

計蒜客 郊遊

蒜頭君成為了計蒜客附屬幼兒園的一名老師,乙個陽光明媚的週末,蒜頭君帶領著小朋友們去野外郊遊。一共有 2n2n 個小朋友,正好是 n n 個男孩和 n n 個女孩。蒜頭君讓小朋友分組玩遊戲,每組乙個男孩和乙個女孩,但是有些女孩比較討厭某些男孩,不願意和他們分在一組,男孩覺得和誰分在一組都無所謂。你能告...