列表

详情


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;
  }
  
}

上一题