我觉得P2882可以降绿
  • 板块灌水区
  • 楼主qi_feng_yi
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/9/15 17:20
  • 上次更新2024/9/15 20:17:53
查看原帖
我觉得P2882可以降绿
1384758
qi_feng_yi楼主2024/9/15 17:20

RT


这道题我觉得并不难,AC代码也不长,枚举反转区间长度k即可(bushi

我的代码(微调防chao版)

#include <bits/stdc++.h>
#include <iostream>
#define ll long long
using namespace std;

int n;
int f[1006],dir[1006];
char t;

int solve(int k){
	memset(f,0,sizeof(f));
	int sum = 0,res = 0;
	for(int i = 0; i + k <= n; i++){
        if((di[i] + sum) % 2 == 1){
            f[i] = 1;
            res++;
        }
        sum += f[i];
        if(i - k + 1 >= 0) sum -= f[i - k + 1];
    }
    for(int i = n - k + 1; i < n; i++){
        if((dir[i] + sum) % 2 == 1) return -1;
        if(i - k + 1 >= 0) sum -= f[i - k + 1];
    }
    return res;

}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    cin >> n;
    for(int i = 0;i < n; i++){
        cin >> t;
        if(t == 'B') dir[i] = 1;
    }
    int mink = 1, minans = n;
    for(int k = 1; k <= n; k++){
        int res = solve(k);
        if(res >= 0 && res < minans){
            minans = res;
            mink = k;
        }
    }
    cout << mink << " " << minans << '\n';

我觉得达不到蓝题标准

2024/9/15 17:20
加载中...