Codeforce 604C 思維 交替子串行

2022-09-22 06:54:09 字數 678 閱讀 1643

//思維可能就是找規律看誰找的快吧

題意:給出乙個0和1組成的字串,可以對任意一段進行翻轉,0變1,1變0。求翻轉後的最長的交替子串行。

補充:交替子串行:相鄰元素不同,可以不連續,但要保持原順序。如,10011011,交替子串行為10101.

思路:無論如何翻轉,對於子串行來說,最多增加乙個01或10,所以結果為原來的交替子串行長度加2,再和總長n比較(有可能最長交替子串行就是其本身),取最小值。要找出最長的子串行串,只能翻轉不是原來序列裡的0和1,因為是0和1互變,翻轉區間裡原來不交替的翻轉後也依然不交替,所以一次只能增加乙個01或10。(大佬原話:我想要最長就只能翻轉不在最長的01子串行範圍內的1個0或1,構成01或10,就可以加二,構成01或10,但是不能超過字串本來的長度,所以就是min(ct+2,n)//不得不說思路流暢,順理成章)。

完整**:

#include #include 

#include

using

namespace

std;

#define n 100005

char

s[n];

intmain()

}cout

<2,n)

}

CodeForce961E 思維加樹狀陣列

一看這種題就知道用樹狀陣列 一開始推錯了 後來才發現一開始的演算法有問題 其實不是太難吧 不太明白為什麼是e題 需要一點點思維 有一點樹狀陣列求逆序對的感覺 ac includeusing namespace std typedef long long ll ll n const ll n 4e5 ...

C語言(思維陷阱)

程式設計開發的初學者若能掌握 機器思維 的技巧往往能事半功倍,但熟練掌握該技能後卻要避免陷入思維陷阱。拓展 所謂機器思維,就是貼近計算機執行的原理,充分利用計算機的優勢。電腦最大的特點就是效率高,最擅長的事情就是迴圈操作,因此我們能使用迴圈來處理很多事情。但是一旦形成這樣的思維習慣,也許就會陷入思維...

C 設計新思維(1)

本文所有的例證 在reactos 0.3.14 include c stlport type traits有所展示,這是reactos專案中的stl庫檔案 編譯期assertion template to safe reinterpret cast from from 要保證轉型時安全的,那麼必須保...