[AGC055A] ABC Identity 题解

题目描述

给定长度为 \(3n (1 \le n \le 2e5)\) 的序列,其中字母 A,B,C 各有 \(n\) 个。

一个合法序列 \(T\) 满足以下条件:

  • 其长度为 \(3k (1 \le k \le n)\)。

  • \(T_1 = T_2 = ... = T_k\)

  • \(T_{k + 1} = T_{k + 2} = ... = T_{2k}\)

  • \(T_{2k + 1} = T_{2k + 2} = ... = T_{3k}\)

  • \(T_1, T_{k + 1}, T_{2k + 1}\) 互不相同。

    求一个把这个序列分成不多于 \(6\) 个合法的序列的方案。

    可以证明,一定存在一种合法的划分。

解析

将序列分成等长的 3 段,用桶来记录每一段 A,B,C 个数,枚举 6 种排列 \(ABC,ACB,BAC,BCA,CAB,CBA\)。

等长的 3 段中,第 \(i\) 段取当前排列的第 \(i\) 个字母。

取尽量多,也就是三个桶取min

可以证明枚举完以后序列所有字母会被选完。

第 \(k\) 种排列就划分到第 \(k\) 组。

排列只有 6 种,当然也只有 6 组。

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 6e5 + 9;
int n,l,r,mid,ans[N];
char a[N],ck[7][4]={{'0','0','0'},
{'A','B','C'},{'A','C','B'},
{'B','A','C'},{'B','C','A'},
{'C','A','B'},{'C','B','A'}};
int t[4][4];
void input(){
cin>>n>>a + 1;
for(int i = 0; i <= 2; ++i){
for(int j = i * n + 1; j <= (i + 1) * n; ++j){
++t[i][a[j] - 'A'];
}
}
}
void cg(int num, int cd){
for(int i = 0; i <= 2; ++i){
int now = num;
for(int j = i * n + 1; j <= (i + 1) * n && now; ++j){
if(ck[cd][i] == a[j] && (!ans[j]))
ans[j] = cd, --now;
}
}
}
void op(){
for(int i = 1; i <= 6; ++i){
int num = min(t[0][ck[i][0] - 'A'], min(t[1][ck[i][1] - 'A'], t[2][ck[i][2] - 'A']));
cg(num, i);
t[0][ck[i][0] - 'A'] -= num;
t[1][ck[i][1] - 'A'] -= num;
t[2][ck[i][2] - 'A'] -= num;
}
}
int main(){
cin.tie(0)->sync_with_stdio(0);
input();
op();
for(int i = 1; i <= 3 * n; ++i)
cout<<ans[i];
}

[AGC055A] ABC Identity 题解的更多相关文章

  1. AtCoder ABC 242 题解

    AtCoder ABC 242 题解 A T-shirt 排名前 \(A\) 可得 T-shirt 排名 \([A+1,B]\) 中随机选 \(C\) 个得 T-shirt 给出排名 \(X\) ,求 ...

  2. CF1494A ABC String 题解

    Content 给定 \(T\) 个仅包含大写字母 A,B,C 的字符串 \(s\).问你是否能够通过将每个 A,B,C 换成 (,) 中的一个(同一个字母必须要换成同一个字符),使得最后得到的括号序 ...

  3. AtCoder Grand Contest 055题解

    我太菜啦!!!md,第一题就把我卡死了...感觉对构造题不会再爱了... A - ABC Identity 先来看这个题吧,题意就是给定你一个字符串,让你将这个字符串最多分成6个子串,使得每个字符都在 ...

  4. LeetCode Palindrome Permutation II

    原题链接在这里:https://leetcode.com/problems/palindrome-permutation-ii/ 题目: Given a string s, return all th ...

  5. Microsoft SQL Server 管理 (常用管理及维护命令)

    --查询当前连接的实例名 select @@servername --察看任何数据库属性 sp_helpdb master --设置单用户模式,同时立即断开所有用户 alter database No ...

  6. new Map的妙用

    const actions = new Map([ [1, ['processing','IndexPage']], [2, ['fail','FailPage']], [3, ['fail','Fa ...

  7. BZOJ3325 [Scoi2013]密码 【manacher】

    题目 Fish是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进.通过翻阅古籍,Fish 得知了这个密码的相关信息: 该密码的长度 ...

  8. codeforces CF475 ABC 题解

    Bayan 2015 Contest Warm Up http://codeforces.com/contest/475 A - Bayan Bus B - Strongly Connected Ci ...

  9. Codeforces Round #109 (Div. 1) 题解 【ABC】

    A - Hometask 题意:给你一个字符串,然后再给你k个禁止挨在一起的字符串,问你最少删除多少个字符串,使得不会有禁忌的字符串对挨在一起.题目保证每个字符最多出现在一个禁忌中. 题解:由于每个字 ...

  10. AtCoder ABC 215 简要题解

    A - B 模拟 C 可以直接爆搜,也可以写逐位确定的多项式复杂度算法,使用多重组合式求随意乱排的方案数. D 首先对 \(A\) 所有数暴力分解质因数,然后把遇到过的质因数打上标记. 接下来再对 \ ...

随机推荐

  1. 一些随笔 No.2

    数据库 单表VS多表联合 多表联合查询的优势区域在于敏捷开发,主要用于过于庞大却可拆分的储存需求 但是劣势也很明显:更多的查询约束条件会用掉数据库服务器额外的cpu/内存/io,也不方便更未来的分布式 ...

  2. Vue 环境准备

    近期接触了下前端项目,记录下学习过程. 近几年前端发展的迅猛,各种框架层出不穷,vue react angular ,各种第三方组件 原来会点js,jQuery 前后端一个人全搞定了,现在前后端分离, ...

  3. Poe – Fast AI Chat 一款集成AI工具

    前言 Poe – Fast AI Chat是由知名问答社区 Quora 开发的 AI 产品,提供实时在线与多个 AI 机器人交流的功能.在去年12月,Quora首次推出Poe作为封闭测试版,并于2月份 ...

  4. Springboot集成MongoDB存储文件、读取文件

    一.前言和开发环境及配置 可以转载,但请注明出处. 之前自己写的SpringBoot整合MongoDB的聚合查询操作,感兴趣的可以点击查阅. https://www.cnblogs.com/zaoyu ...

  5. 人工智能AI图像风格迁移(StyleTransfer),基于双层ControlNet(Python3.10)

    图像风格迁移(Style Transfer)是一种计算机视觉技术,旨在将一幅图像的风格应用到另一幅图像上,从而生成一幅新图像,该新图像结合了两幅原始图像的特点,目的是达到一种风格化叠加的效果,本次我们 ...

  6. docker上面部署nginx-waf 防火墙“modsecurity”,使用CRS规则,搭建WEB应用防火墙

    web防火墙(waf)免费开源的比较少,并且真正可以商用的WAF少之又少,modsecurity 是开源防火墙鼻祖并且有正规公司在维护着,目前是https://www.trustwave.com在维护 ...

  7. Python全栈开发工程师 day57 jQuery

    二.jQuery样式操作标签样式操作<!DOCTYPE html><html lang="en"><head> <meta charset ...

  8. boot-admin整合Quartz实现动态管理定时任务

    淄博烧烤爆红出了圈,当你坐在八大局的烧烤摊,面前是火炉.烤串.小饼和蘸料,音乐响起,啤酒倒满,烧烤灵魂的party即将开场的时候,你系统中的Scheduler(调试器),也自动根据设定的Trigger ...

  9. 阿里云 AIGC 白嫖 FC 搭建 stable diffusion

    下午瞎逛在 V 站看到阿里在做推广,正好这几天在研究 stable-diffusion,就进去看了看,活动地址: https://developer.aliyun.com/topic/aigc . 主 ...

  10. 魔王语言问题c语言实现及思路求解

    文章目录 问题描述及需求分析 需求分析 问题分析及实现路线(队列+栈) 结构体核心代码 队列核心代码 入队 出队 栈的核心代码 入栈 出栈 全部代码 单向循环队列和栈(改变B的对应密码) 总结 问题描 ...