NC14595. 方块 I
描述
有 N 个方块排成一排,每个方块都染有颜色,第 i 个的颜色为 Ci,一共有三种颜色,分别为红,黄,蓝,现在你可以对相邻的颜色不同的方块进行施法,使其变成第三种颜色,比如对相邻的红方块和黄方块进行施法,就会使其合并为蓝方块。施法顺序的不同,可能对最终的结果产生不同的影响,问在最优策略下,最少能剩下多少个方块。
输入描述
T组数据。
每组数据一行,将方块序列用字符串形式给出,a,b,c表示三种不同颜色的方块。
T <= 10
1 <= N <= 5000
输出描述
每组数据一个整数,表示答案。
示例1
输入:
abc
输出:
2
C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 420K, 提交时间: 2023-07-12 22:35:37
#include<bits/stdc++.h> using namespace std; int main(){ string s; while (cin >> s) { vector<int> A(3); for (auto ch: s) A[ch-'a']++; while (true) { sort(A.begin(), A.end()); if (A[1] >= 1) A[1]--, A[2]--, A[0]++; else break; } cout << A[2] << endl; } }