P15879 [ICPC 2026 NAC] Evil Judges

题意

给出一个字符串 ss 和一个整数 mm,最多可以移动相邻字符 mm 次,使最后的字符串含有的 AC\texttt{AC}AK\texttt{AK} 最少,输出这个值。

思路

首先统计 ssAC\texttt{AC}AK\texttt{AK} 的子序列的数量,再减去 mm ,因为每次交换最多去掉一个 AC\texttt{AC}AK\texttt{AK} ,而原字符串中只有 三种,因此每个交换必定会去掉一个子序列。

为了防止结果为负数,把结果和 00 取最大值即可。

Code

line-numbers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<bits/stdc++.h>
using namespace std;
long long n,m,cnt,ans;
string s;
int main(){
cin>>s>>m;
for(int i=0;i<s.size();i++){
if(s[i]=='A'){
cnt++;
}else ans+=cnt;
}
ans=max(ans-m,0ll);
cout<<ans;
}

P15879 [ICPC 2026 NAC] Evil Judges
https://ywrow.github.io/2026/03/26/P15879-ICPC-2026-NAC-Evil-Judges/
Beitragsautor
ywrow
Veröffentlicht am
2026年3月26日
Urheberrechtshinweis