【UR #2】猪猪侠再战括号序列
UOJ小清新题表
题目摘要
有一个由 \(n\) 个左括号 “(” 和 \(n\) 个右括号 “)” 组成的序列。每次操作时可以选定两个数 \(l,r\),然后把第 \(l\) 到第 \(r\) 个括号的顺序翻转(括号的朝向保持不变)。例如将 “()((()(” 翻转第 \(3\) 到第 \(7\) 个括号后的结果为 “()()(((”。
我希望使用不超过 \(n\) 次操作,将这个序列变为一个合法的括号序列。
众所周知,合法括号序列的定义如下:
()是合法括号序列;- 如果
A是合法括号序列,则(A)是合法括号序列; - 如果
A,B是合法括号序列,则AB是合法括号序列。
数据范围
\(n\leq 100000\)
思路
GGBond!!!
难度:入门
由于新换的主题感觉很好看于是来水博客
显然最好的结构就是((())),由于题目保证有解,所以直接双指针 \(O(n)\) 扫一遍,遇到一个左括号就和左面第一个右括号(如果有)交换即可。可以证明一定是对的。
然后小坑就是字符串最大长度为 \(2n\),你要是开数组为 \(10^5\) 的话就 \(RE\) 了...
代码
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e5+10;
int tot;
char s[maxn];
int L[maxn],R[maxn];
int main(){
scanf("%s",s+1);
int len=strlen(s+1);
for(int i=1,j=1;i<=len;i++){
if(s[i]=='('){
while(j<i&&s[j]!=')')j++;
if(i!=j){
swap(s[i],s[j]);
L[++tot]=j;R[tot]=i;
}
}
}
printf("%d\n",tot);
for(int i=1;i<=tot;i++)
printf("%d %d\n",L[i],R[i]);
return 0;
}
【UR #2】猪猪侠再战括号序列的更多相关文章
- uoj #31. 【UR #2】猪猪侠再战括号序列 贪心
#31. [UR #2]猪猪侠再战括号序列 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/31 Descript ...
- 学长小清新题表之UOJ 31.猪猪侠再战括号序列
学长小清新题表之UOJ 31.猪猪侠再战括号序列 题目描述 大家好我是来自百度贴吧的_叫我猪猪侠,英文名叫\(\_CallMeGGBond\). 我不曾上过大学,但这不影响我对离散数学.复杂性分析等领 ...
- UOJ#31 【UR #2】猪猪侠再战括号序列
传送门http://uoj.ac/problem/31 大家好我是来自百度贴吧的_叫我猪猪侠,英文名叫_CallMeGGBond. 我不曾上过大学,但这不影响我对离散数学.复杂性分析等领域的兴趣:尤其 ...
- 【UR #2】猪猪侠再战括号序列 题解
题目链接 前言 是的没脑子选手只会做签到题. 思路分析 一开始把题目看成反转括号的状态,直接浪费 \(40\ mins\) . 我们考虑把不确定的"正确括号"转换成一个固定的括号序 ...
- uoj problem 31 猪猪侠再战括号序列
题目大意: 给定一个长度为2n的括号序列.定义一个关于区间[l,r]的翻转操作为位置平移对调. 即翻转")))()("可以得到"()()))((" 用不超过n次 ...
- 【UOJ】【UR #2】猪猪侠再战括号序列(splay/贪心)
http://uoj.ac/problem/31 纪念伟大的没有调出来的splay... 竟然那个find那里写错了!!!!!!!!!!!!! 以后要记住:一定要好好想过! (正解的话我就不写了,太简 ...
- [BZOJ 4350]括号序列再战猪猪侠 题解(区间DP)
[BZOJ 4350]括号序列再战猪猪侠 Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个 ...
- BZOJ4350: 括号序列再战猪猪侠
Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个合法的括号序列. 2.若A是合法的括号序列 ...
- BZOJ4350: 括号序列再战猪猪侠【区间DP】
Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号序列S合法,当且仅当: 1.( )是一个合法的括号序列. 2.若A是合法的括号序列, ...
随机推荐
- 车联网容器应用探索:5G下边缘云计算的车路协同实践
导语 | 5G网络下,多接入边缘计算(MEC)应运而生.结合TKEStack强大的集群管理能力和异构计算资源管理能力,腾讯打造了一个功能完备的边缘计算PaaS平台TMEC,提供了高精确度定位.视频处理 ...
- 【Azure DevOps系列】使ASP.NET Core应用程序托管到Azure Web App Service
使用Azure DevOps Project设置ASP.NET项目 我们需要先在Azure面板中创建一个Azure WebApp服务,此处步骤我将省略,然后点击部署中心如下图所示: 此处我选择的是Az ...
- CSS特效(一)
三角形 <!-- log --> <div class="tri"></div> <style> .tri { width: 0; ...
- oracle之分组函数
分组函数 5.1 最重要的五个分组函数 sum(); avg(); count(); max(); min(). 数值类型可以使用所有组函数SQL> select sum(sal) sum, a ...
- Java源码之HashMap的hash篇
提到哈希,我们脑袋中立马就会闪过一个方法,就是hashCode(),没错.就是这个! 我们知道HashMap是通过 数组+链表 的结构进行数据存储的,有数组就会有索引,而HashMap内的数据要存储在 ...
- RXJAVA源码之多线程
在不指定线程的情况下, RxJava 遵循的是线程不变的原则,即:在哪个线程调用 subscribe(),就在哪个线程生产事件:在哪个线程生产事件,就在哪个线程消费事件.如果需要切换线程,就需要用到 ...
- 搜索引擎学习(一)初识Lucene
一.Lucene相关基础概念 定义:一个简易的工具包,实现文件搜索的功能,支持中文,关键字,多条件查询,凡是文件名或文件内容包含的都查出来. 数据分类:结构化数据(固定格式或有限长度的数据)和非结构化 ...
- [HarekazeCTF2019]Avatar Uploader 1 &&
[HarekazeCTF2019]Avatar Uploader 1 这是一个文件上传的题目,但是这导体是通过满足条件来获取flag的. 他有两个函数,一个是getimagesize,还有一个是FIL ...
- python类,魔术方法等学习&&部分ssti常见操作知识点复习加深
python类学习&&部分ssti常见操作知识点复习加深 在做ssti的模块注入的时候经常觉得自己python基础的薄弱,来学习一下,其实还是要多练习多背. 在python中所有类默认 ...
- 国产化之路-统信UOS操作系统安装
专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...