CF993B 公開交流

2022-03-23 02:17:57 字數 1434 閱讀 7628

時間限制 \(1s\) | 空間限制 \(256m\)

有兩個人各有一對由數字 \(1\) 到 \(9\) 構成的數對,他們兩人數對中都有且只有乙個相同的數字。他們兩人把自己的數對隱藏在很多數對中,然後在公開的通道中傳輸。每個數對中的數字都不同。請確定你是否可以從公共通道中的數對推導出這個相同的數字,或者確定他們互相知道了對方的數字,但是你無法推導出來。也有可能他們互相也不知道對方的數字。

我們分析什麼情況下我們可以確定,什麼情況下我們輸出 \(0\),什麼情況下我們輸出 \(-1\)。如果兩個數列中只存在乙個數相等且處於兩個數列中,那麼這個數肯定是他們公共的數。如果存在多個相等的數,且某一對數中有兩個數都跟對面數列有相同的數,那麼即使是這兩個人也不知道,輸出 \(-1\)。

我們講講具體細節:對於輸入的所有數對,使用 \(bool\) 型別的兩個陣列儲存,\(f_ = 1\) 表示存在該數對,\(f_ = 0\) 表示不存在該數對。隨後,我們從 \(1\) 到 \(9\) 列舉公共數字 \(i\),然後再分別列舉第乙個數列中與該公共數字可能存在數對的數字 \(j\) 和第二個數列中與該公共數字可能存在數對的數字 \(k\)。如果此時存在數對 \((i, j)\) 和 \((i, k)\),那麼我們將答案記為 \(i\),並且給 \(ans_\) 和 \(ans_\) 的值設為 \(1\),\(ans_\) 標誌該數對在 \(i\) 數列中以 \(j\) 為公共數字,可以在另外乙個數列中找到與其匹配的數。如果我們發現此前已經出現過了某個與 \(i\) 不一樣的公共數字,說明我們已經無法確定答案了,將 \(flag\) 置 \(1\)。如果迴圈結束時 \(flag\) 仍然為 \(0\),那麼說明該公共數字唯一,輸出即可。

接下來,我們對 \(flag\) 為 \(1\) 的情況進行處理。如果這個時候發現對於任意不相等的 \(j, k\),存在 \(ans_\) 與 \(ans_\) 都為 \(1\),也就是說數對 \((j, k)\) 中的 \(j, k\) 都可以在同乙個與當前數列不同的數列中找到,此時答案為 \(-1\)。

如果列舉一遍所有的 \(j, k\) 都沒有發現上述情況,輸出 \(0\)。

CF993C 飛船大戰

時間限制 2s 空間限制 256m 有兩艘小宇宙飛船被兩組敵人的大宇宙飛船包圍了。他們在乙個二維平面上,有一組敵人的飛船的所有 x 座標都是 100 y 座標都是整數,另外一組所有 x 座標都是 100 y 座標都是整數。兩組飛船裡面的每艘飛船都同時發出兩束雷射 功率極大,接觸到的飛船都會被徹底摧毀...

cf 551B 暴力列舉

交換a中字元的位置,求b,c字串在a中出現的最多次數 列舉b出現的次數,然後求出c在a中還可以出現的最大次數,求得最多的次數 關鍵在於如何計算b出現的次數 如下 for int i 0 i 26 i if s1 i sum min sum,ans i s1 i 知道了這個就不會超時了啦,我開始就沒想...

cf 1471 B 最大貢獻

t 組樣例 每組有長度為 n 的陣列 a 和 乙個數 x 下一行 輸入陣列 a 如果a i x 0 那麼就將 x個 a i x 放在陣列的末尾,然後繼續這樣的操作,直到a i x 0時停止 求陣列的和 1.昨天打的比賽,其實題目很簡單,考慮一下每個數的最大貢獻值,然後直接模擬就好,但是不是直接暴力模...