鮮花
A
構造一個字串,滿足恰好有 \(n\) 個特殊字元,當一個字元恰好有一個與其相鄰的字元與其相等,則該字元相同。
一段相同的字元,長度超過 \(2\) 是沒有額外貢獻的,都是隻有兩個特殊字元。同時只放一個顯然是沒有特殊字元的。所以貢獻一段相同的字元只能是 \(2\),總的特殊字元個數只能是偶數,所以奇數一定無解。對於偶數,只需要來回交替 \(AA\) 和 \(BB\) 即可。
B
長度為 \(n\) 陣列,陣列都是個位數或者兩位數,你可以選擇任意個兩位數,把它十位上的數和個位上的數按順序拆成兩個個位數,求能否使陣列單調不降。
暴力出奇跡,列舉每個位置拆或不拆,如果可以拆需要滿足如下條件:
多剪枝一下就過了。
C
有一個 \(2\) 行 \(n\) 列的網格,每個格子上有一個向左或向右的箭頭(即
<
或>
)。現在你從 \((1, 1)\) 開始移動,並遵循以下的移動方式,選擇一個上下左右走 \(1\) 格,但你需要保證不會走出網格,走完一步後,如果當前所在格為<
,則向左走 \(1\) 格,否則向右走 \(1\) 格。注意,你也需要保證這一步不會走出網格。請回答你能否到達 \((2, n)\)。
直接暴力建邊跑寬搜,第一行編號 \(1 \sim n\),第二行建邊 \(n+1 \sim 2n\)。
具體來說,對於第一行,如果左邊是 <
向 \(i-2\) 建邊,否則不建,右邊是 >
向 \(i+2\) 建邊,下邊是 <
向 \(i+n-1\) 建邊,下邊是 >
向 \(i+n+1\) 建邊。第二行同理。
然後判斷最後能不能到就可以了。
D
給定一個由小寫字母和問號
?
組成的字串 \(s\),你可以將問號?
替換為任何小寫字母。
替換後,你需要找到 \(s\) 中最長的重複子串長度。一個重複子串是由兩個完全相同的字串拼接而成。
答辯題,可以 \(n^3\) 剪枝過。
首先一層迴圈列舉可能的答案長度,一定為偶數。
然後一層迴圈進行判斷,如何判斷?給每個位置開個棧,預處理出在此之前與該位置字元相同的下標與該位置的差,塞入佇列當中。此時只要有一個為問號,我們就認為兩個位置相同。
然後倒序列舉答案長度 \(2x\),維護每個位置棧頂小於等於 \(2x\),如果連著 \(x\) 個位置棧頂都是 \(x\),說明有解,這是因為這代表著有 \(x\) 個連著的位置,他們都與各自 \(x\) 位置前的字元相同,也就是找到了重複子串。
E
給定 \(n,k\),你需要構造一個 \(1\) 到 \(n\) 的排列 \(a\),然後根據你的排列生成一張 \(n\) 個點的無向圖,其中邊 \((i,j)\) 存在當且僅當 \(abs(i-j)+abs(a_i-a_j) \leq k\)。你需要將這張圖劃分為若干張子圖,使每個點正好在一個子圖內且每個子圖均為完全圖(即其中任意兩點間均存在邊)。最小化子圖數量,並給出相應的子圖劃分方案與排列。
答辯打表找規律題。
首先一個子圖中最多隻有 \(k\) 個點,這是因為假設有 \(k+1\) 個點,肯定存在 \(abs(i-j)\ge k\),又 \(a\) 是排列沒有相同值,\(abs(a_i-a_j)\ge 1\),所以 \(abs(i-j)+abs(a_i-a_j) \ge k+1\),與已知條件矛盾,所以不可能成立。
得到了這點後,考慮 \(n=k\) 的情況如何解決。
F
不會字串,咕咕咕。