现在你有一个长度为 \(n\) 的 01
串 \(s\),每次操作你可以选择一个后缀并将其中的 0
和 1
互换,求将其完全变为 0
所需要的最小操作次数和操作方法。
期望复杂度:\(O(n)\)。
lcw's lemma
显然,对于任意一个后缀 \([i,n]\),其要么被操作一次,要么不被操作,且操作顺序不影响。更进一步地,lcw 证明了,后缀 \([i,n]\) 应当被操作当且仅当:
- \(s_i\) 逻辑异或 \(s_{i-1}\) 的值为 \(1\)。特别地,将 \(s_0\) 视为 \(0\)。
该引理容易通过归纳法证明。
例题:
- (奇偶分页问题)Issue 939 - typst/typst
- CF1882D 参考实现:225759904