題解:CF1292E Rin and The Unknown Flower
一道有趣的思維題。
我們從最簡單的情況開始考慮:如果還剩下 \(2\) 格電呢?
那么直接詢問 \(\texttt{O}\) 和 \(\texttt{H}\),剩下的位置就是 \(\texttt{C}\)。
從以上的樸素做法中我們得到啟發:能不能通過耗電量更低的方式來確定三個字母的所有位置?
詢問一個長度為 \(t\) 的串的耗電量是 \(\frac{1}{t^2}\),注意到分母越?。丛儐柕淖址L度越短)耗電量越大,因此我們希望盡可能加長詢問的串的長度。
考慮詢問 \(\texttt{CC,CH,CO}\),這樣我們可以確定(除了最后一個字母以外)所有 \(\texttt{C}\) 的位置。再詢問 \(\texttt{OO,HO}\),這樣我們可以確定(除了第一個字母以外)所有 \(\texttt{O}\) 的位置。這時我們消耗了 \(1.25\) 格電量。
現在我們至多只剩下第一個字母和最后一個字母不確定,因此我們至多再進行三次詢問就能夠確定完整的串是什么。具體地,第一個字母只有可能是 \(\texttt{H,O}\) 兩種情況(如果是 \(\texttt{C}\) 已經在以上的第 \(1\) 到 \(3\) 個詢問中被問出來了),最后一個字母只有可能是 \(\texttt{C,H}\) 兩種情況(如果是 \(\texttt{O}\) 已經在以上的第 \(3\) 到 \(5\) 個詢問中被問出來了)。
經過計算,當字符串長度大于 \(4\) 的時候,總耗電量是小于 \(1.4\) 的(長度為 \(4\) 時總耗電量為 \(1.4375\),長度為 \(5\) 時總耗電量為 \(1.37\))。
因此我們以下考慮字符串長度等于 \(4\) 的情況。
首先還是要詢問 \(\texttt{CC,CH,CO}\),如果三個中有至少一個出現了,那么就已經有至少兩個位置確定了。并且如果字符串中還有 \(\texttt{C}\) 沒有被問出,則這個 \(\texttt{C}\) 只有可能在最后一位。
此時如果最后一位已經被確定,則一共有 \(4\) 種可能的情況(以最后兩位已經被確定為例,分別為 \(\texttt{HH**,HO**,OH**,OO**}\),\(\texttt{*}\) 處為已經被確定的字母)。如果最后一位沒有被確定,則一共有 \(6\) 種可能的情況(以前兩位已經被確定為例,分別為 \(\texttt{**HC,**OC,**HH,**OH,**HO,**OO}\))。則至多只需進行 \(5\) 次詢問,最多耗電量為 \(1.0625\)。
如果以上三者都未出現,再詢問 \(\texttt{HO}\),如果出現過,則至多有 \(6\) 種可能的情況,與以上同理,最多耗電量為 \(1.3125\)。
如果以上四者都未出現,再詢問 \(\texttt{OO}\),如果出現過,此時原字符串有可能是 \(\texttt{OOOO}\) 或 \(\texttt{OOO?}\) 或 \(\texttt{OOH?}\)(\(\texttt{?}\) 處為未確定的字母)。如果是第一種情況,則此時已經確定,詢問結束,總耗電量為 \(1.25\);如果是第二種情況,則前三位已經確定,再詢問一次即可(因為最后一位不能是 \(\texttt{C}\)),總耗電量為 \(1.3125\);如果不是前兩種情況,則第三位也已經確定是 \(\texttt{H}\),與第二種情況同理,再詢問一次即可。
如果以上五者都未出現,則該字符串一定是 \(\texttt{?HH?}\) 的形式(因為如果中間兩位出現 \(\texttt{C,O}\),應當在前五次詢問中被問出),此時第一位可能是 \(\texttt{C}\) 或 \(\texttt{H}\),最后一位可能是 \(\texttt{O}\) 或 \(\texttt{H}\)。此時詢問 \(\texttt{HHH}\),則所有 \(\texttt{H}\) 的位置都已被問出,那么根據排除法就能確定第一位和最后一位的位置??偤碾娏考s為 \(1.3611\)。
將以上兩種情況合起來,本題就完成了。
本題分討比較復雜,蒟蒻只會暴力地寫一大堆條件判斷,導致代碼很不優美,就不放了,大家可以看其他大佬更加簡潔的實現方式。

浙公網安備 33010602011771號