雖然我似乎解釋明了貪心是可行的,但是我還是有些不爽
dp 做更直觀吧
入手這道題,看了看,就直接奔去寫貪心。
至於如何貪心?
題目大意:對於每乙個操作有兩種操作選擇,使終串全為 a
\texttt
a 。對於這道題,貪心只考慮區域性最優解,不能影響到其他位置
於是,就有兩種情況要討論:
對於單獨出現的 b
\texttt
b,執行方法 1 需要 1 步,即直接修改(操作 1)。並且不會對字串造成其他影響。
執行方法 2 需要 2 步,才能使字串不會出現變化。
比如說:aabaa
\texttt
aabaa
在位置3執行操作2,bbaaa
\texttt
bbaaa
(操作 2)
再在位置2執行操作2,aaaaa
\texttt
aaaaa
(操作 2)
顯然,當出現單獨的 b
\texttt
b 時,執行方法 1 改變單個字元更優。
對於出現一串的 bbbb......
\texttt
bbbb......
執行方法 1 需要執行 ∣s∣
|s|∣s
∣ 步,s
ss 為全 b
\texttt
b 子串。
執行方法 2 需要執行 2 步,與 「單獨的 b」中考慮一樣。
由於 ∣s∣
≥2
|s| \ge 2
∣s∣≥
2,所以,在出現連續的 b
\texttt
b 串時,執行方法 2 更優於方法 1。
綜上,需要不影響其他步驟,從右往左掃;
單獨的 b
\texttt
b 就直接修改;
連續的 b
\texttt
b 就通過方法 2 改變(其實第二次操作沒必要進行,因為執行結束後會繼續往前掃,自然會繼續改變)。
上**!
#
include
using
namespace std;
intmain()
}if(str[i]
+t%2
=='b'
) len++;}
cout<(len!=0)
;//結尾還剩餘其他 b
return0;
}
還有更好的貪心思路要告訴我啊 qaq。 洛谷 P1101 題解
這道題可以用深搜 回溯 來寫,相信大部分人都是這麼想的,但是有些人可能在一些地方饒了半天,所以這裡就貼一下我的思路,個人覺得自己的很好懂,除了tx和ty那裡,但是tx和ty的那種用法對於輸出路徑的題目一般很實用 這個算是比較簡單的吧,題目裡給出了具體要找的字串,我們要做的就是對它進行8個方向的搜尋,...
洛谷 P1169 題解
請你在乙個黑白矩陣中選出乙個長方形 含正方形 和正方形的子矩陣,使得所有相鄰的點顏色不一樣。矩陣大小 兩條邊都 2000 2000 2 000輸入 3 31 0 1 0 1 0 1 0 0輸出4 6解釋給定矩陣 正方形 長方形 我的控制台是萌萌噠 ffc0cb粉色 乙個小技巧 如果您的控制台是像我的...
題解 洛谷 P3332
題目描述 權值線段樹套線段樹板子題 首先觀察題目,判斷為二維偏序問題 操作1為區間修改,所以一定是外部線段樹維護權值,內部線段樹維護所在區間,否則時間複雜度 qwq 為方便查詢,雜湊時我採用雜湊每個數的相反數的方法將求第k大轉換為求第k小 詢問可以直接想到的做法就是二分答案,查詢1 ans在區間內的...