Codeforces Round #610 (Div. 2) D. Enchanted Artifact 交互 + 思维
傳送門
 
文章目錄
- 題意:
- 思路:
題意:
思路:
首先我們發現如果知道了字符串的長度,我們就可以O(n+1)O(n+1)O(n+1)次詢問求解出來。比如當前長度為nnn,那么我們就可以構造出一個長度為nnn的全′a′'a'′a′字符串,讓后問一下他的花費costcostcost,之后遍歷每一位,把它修改成′b′'b'′b′,看花費是否減少,如果不能減少就改回′a′'a'′a′,否則的話就更新花費。
 既然如此我們考慮如何111次詢問求出長度。
 首先它可以插入,修改,刪除。修改求長度不是很現實,我們考慮插入和刪除。
 首先可以詢問一下′a′'a'′a′這個字符,返回值為xxx。現在無非幾種情況:
 (1)(1)(1)要求的串就是′a′'a'′a′,返回000,直接結束。
 (2)(2)(2)要求的串全是′b′'b'′b′,那么這個串長度必須是xxx,因為這xxx個修改里面有一次是把′a′'a'′a′改成′b′'b'′b′的,剩下的都是插入′b′'b'′b′。
 (3)(3)(3)要求的串有至少一個′a′'a'′a′,那么這個串長度是x+1x+1x+1,因為有一個′a′'a'′a′,還需要插入xxx個數。
 當然直接按照以上思路來的話次數是O(n+3)O(n+3)O(n+3)的,因為我們要詢問xxx個′b′'b'′b′的花費,還要詢問x+1x+1x+1個′a′'a'′a′的花費,所以我們考慮是否能利用已經詢問過的信息來解決。
 考慮如果xxx個′b′'b'′b′不符合的話,假設他的返回值為yyy,那么我們知道符合條件的長度是x+1x+1x+1,那么我們需要把y??y--y??來增加一個長度,之后的yyy就是初始狀態全為′b′'b'′b′的花費了,我們可以把之前詢問全′a′'a'′a′的操作去掉,因為全′a′'a'′a′和全′b′'b'′b′是一樣的,這樣次數就是O(n+2)O(n+2)O(n+2)了。
總結
以上是生活随笔為你收集整理的Codeforces Round #610 (Div. 2) D. Enchanted Artifact 交互 + 思维的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: CF741D Arpa’s letter
- 下一篇: 田七叶的功效与作用、禁忌和食用方法
