C

为了解决这个问题,我们需要明确小李的目标:通过最少的修改次数,移除所有标记为2(闪烁)的灯,同时保持标记为0(熄灭)或1(亮着)的灯的状态不变。

意思是保持(0或1)一种情况的所有灯不变:1.可以修改’1‘,但’0‘一定不可以修改;2.可以修改’0‘,但’1‘一定不可以修改;特殊情况’0‘和’1‘都不需要修改。

#include <iostream>
using namespace std;


void solve(){
    int n;
    cin >> n;
    string s;
    cin >> s;
    int m1 = 0, m2 = 0;
    for (int i = 0;i < n;i ++){
        if(s[i] == '2'){
            while(s[i] != '0'&&i < n){
                i ++;
            }
            m1 ++;
        }
    }
    for (int i = 0;i < n;i ++){
        if(s[i] == '2'){
            while(s[i] != '1'&&i < n){
                i ++;
            }
            m2 ++;
        }
    }
    if(m1 < m2) printf("%d\n", m1);
    else printf("%d\n", m2);

}

int main() {
    int t;
    cin >> t;
    while(t --){
        solve();
    }
    return 0;
}