Educational Codeforces Round 149 (Rated for Div. 2)

news/2024/10/30 23:16:31/

D. Bracket Coloring

链接


题目大意就是给一个括号序列染色以成为漂亮的括号序列 题目大意就是给一个括号序列染色以成为漂亮的括号序列 题目大意就是给一个括号序列染色以成为漂亮的括号序列
题目要求最少染色颜色种类 题目要求最少染色颜色种类 题目要求最少染色颜色种类
不难发现,只要左括号和右括号数量相等就一定可以成为漂亮的括号序列 不难发现,只要左括号和右括号数量相等就一定可以成为漂亮的括号序列 不难发现,只要左括号和右括号数量相等就一定可以成为漂亮的括号序列
当左括号右括号数量相等的情况下,我们发现完美的括号子序列就是 当左括号右括号数量相等的情况下,我们发现完美的括号子序列就是 当左括号右括号数量相等的情况下,我们发现完美的括号子序列就是
括号匹配顺序相同的一组括号对,当出现括号匹配顺序不同的时候就是下一个颜色 括号匹配顺序相同的一组括号对,当出现括号匹配顺序不同的时候就是下一个颜色 括号匹配顺序相同的一组括号对,当出现括号匹配顺序不同的时候就是下一个颜色
括号匹配顺序相同的意思就是这一子序列都是 ( ) ( ) ( ) 这样的一左一右,而不出现 ) ( 的顺序 括号匹配顺序相同的意思就是这一子序列都是()()()这样的一左一右,而不出现)(的顺序 括号匹配顺序相同的意思就是这一子序列都是()()()这样的一左一右,而不出现)(的顺序
关于染色,我们就可以先遍历一次字符串,在这个过程中给符合 s [ 0 ] 匹配方式 关于染色,我们就可以先遍历一次字符串,在这个过程中给符合s[0]匹配方式 关于染色,我们就可以先遍历一次字符串,在这个过程中给符合s[0]匹配方式
的括号染色为 1 即全部 ( ) ( ) ( ) ( ( ) ) 或者全部 ) ( ) ( ) ) ( ( 的子序列 的括号染色为1即全部()()()(())或者全部)()())((的子序列 的括号染色为1即全部()()()(())或者全部)()())((的子序列
然后剩余的括号组成的都是另一种匹配方式,所以顶多还会出现另一种颜色,我们染为2即可


Code

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;int t, n;
int res[N];void solve()
{cin >> n;string s;cin >> s;int ll = 0, rr = 0;for(int i = 0; i < n; i ++){if(s[i] == '('){ll ++;}else rr ++;res[i] = 0;}if(ll != rr) {puts("-1");return ;}queue<int> l;char c = s[0];l.push(0);for(int i = 1; i < n; i ++){if(s[i] == c){l.push(i);}else{if(l.size()){res[i] = 1;int tem = l.front();res[tem] = 1;l.pop();}else{res[i] = 2;}}}int cnt = 1;if(l.size()) cnt = 2;while(l.size()){int tem = l.front();res[tem] = 2;l.pop();}printf("%d\n", cnt);for(int i = 0; i < n; i ++){printf("%d ", res[i]);}cout << endl;return ;
}int main()
{cin >> t;while(t --){solve();}return 0;
}/*
)(()(((()))()()(())))((()))))(()(()(())))()()(()(())((()))(())((()
*/


http://www.ppmy.cn/news/88905.html

相关文章

如何真正开启docker远程访问2375

注意看官方文档 Configure remote access for Docker daemon | Docker Documentation 1. windows上Docker Desktop开启远程访问端口2375 系统版本&#xff1a; win10专业版 Docker Desktop版本&#xff1a;4.18.0 很简单勾上&#xff0c; 应用并重启即可 2. linux上开启 尝…

Java和其他编程语言有什么区别?

Java是一种通用、面向对象、高级编程语言&#xff0c;具有以下与其他编程语言的区别&#xff1a; 平台无关性&#xff1a;Java是一种平台无关的编程语言。Java源代码被编译为字节码&#xff0c;然后在Java虚拟机&#xff08;JVM&#xff09;上运行。这种设计使得Java可以在不同…

Tuxera for Mac2023中文版读写硬盘U盘工具

在日常生活中&#xff0c;我们使用Mac时经常会遇到外部设备不能正常使用的情况&#xff0c;如&#xff1a;U盘、硬盘、软盘等等一系列存储设备&#xff0c;而这些设备的格式大多为NTFS&#xff0c;Mac系统对NTFS格式分区存在一定的兼容性问题&#xff0c;不能正常读写。 那么什…

Java程序设计入门教程--物体的抽象过程

类的概念 面向对象的思想来源于对客观世界的认知。 现实的世界是缤纷复杂、种类繁多&#xff0c;难于认识和理解的&#xff0c;但聪明的人们学会了把这些错综复杂的事物进行分类&#xff0c;从而使世界变得井井有条。比如我们由各式各样的汽车抽象出汽车的概念&#xf…

【2】Jmeter获取token,模拟多用户并发及token存储文本文件

按以下步骤来&#xff0c;以下各种处理程序的放置位置很重要&#xff01;&#xff01;不然会出现各种问题&#xff1a; 1、setup线程组 前置获取token的接口&#xff08;login&#xff0c;以下都用login表示获取token接口&#xff09;请求&#xff0c;获取类似token等后续需要…

ROS学习笔记(九):MoveIt!与机械臂控制

ROS学习笔记&#xff08;九&#xff09;&#xff1a;MoveIt&#xff01;与机械臂控制 MoveIt&#xff01;简介MoveIt&#xff01;系统架构MoveIt&#xff01;编程与机械臂控制关节空间规划工作空间规划笛卡尔运动规划避障规划 Pick and Place示例 MoveIt&#xff01;简介 Move…

ChatGPT在智能外呼机器人领域的应用

随着人工智能技术的不断发展&#xff0c;自然语言处理(NLP)技术也逐渐成为各行各业的热门技术。其中&#xff0c;ChatGPT技术是近年来备受关注的技术之一。ChatGPT技术是一种基于自然语言处理和深度学习的人工智能技术&#xff0c;它可以处理自然语言文本&#xff0c;实现自动化…

02_stack栈

1. Stack 栈是什么&#xff1f; 栈也叫栈内存&#xff0c;主管Java程序的运行&#xff0c;是在线程创建时创建&#xff0c;它的生命期是跟随线程的生命期&#xff0c;线程结束栈内存也就释放&#xff0c;对于栈来说不存在垃圾回收问题&#xff0c;只要线程一结束该栈就Over&…