【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是合法的括号序列, ...
随机推荐
- 矩阵LU分解的MATLAB与C++实现
一:矩阵LU分解 矩阵的LU分解目的是将一个非奇异矩阵\(A\)分解成\(A=LU\)的形式,其中\(L\)是一个主对角线为\(1\)的下三角矩阵:\(U\)是一个上三角矩阵. 比如\(A= \beg ...
- VUE常用问题hack修改
vue-router router这里踩的坑主要是组件的重用.构建单页面大型应用的话,肯定要开启组件的缓存的,因为一般会要求后退的时候不要重新加载页面,而且要记住原始的滚动位置.首先,引入router ...
- Mysql主从分离与双机热备超详细配置
一.概述 本例是在Windows环境,基于一台已经安装好的Mysql57,在本机安装第二台Mysql57服务. 读完本篇内容,你可以了解到Mysql的主从分离与双机热备的知识,以及配置期间问题的解决方 ...
- An Introduction to Differential Privacy
原文链接:An Introduction to Differential Privacy 差分隐私算法可以允许分析人员执行良性的聚合分析,同时保证个人隐私得到切实的保护.. 背景数据分析中的隐私保护技 ...
- oracle数据处理之逻辑备份与恢复
逻辑备份与恢复 17.1 传统的导入导出exp/imp:传统的导出导入程序指的是exp/imp,用于实施数据库的逻辑备份和恢复. 导出程序exp将数据库中的对象定义和数据备份到一个操作系统二进制文件中 ...
- 微信小程序入门到精通[更新版]
微信小程序账号与工具 在线文档:https://mp.weixin.qq.com/debug/wxadoc/dev/ 小程序开发者账号注册 微信公众平台:https://mp.weixin.qq.co ...
- 阿里巴巴内部Java成长笔记,首次曝光!真的香!
前言 关于技术人如何成长的问题,一直以来都备受关注,因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距,所以技术人保持学习,提升自己,才能够扛得住不断上赶的后浪,也 ...
- Vue 3.0 来了,我们该做些什么?
靓仔路过,不要错过 想必 Vue3.0 发布这件事,大家都知道了. 我也是从朋友圈的转发得知此事,博客平台.公众号.朋友圈基本都有这么一条新闻,可见 Vue3.0 的被期待程度,因为 React 16 ...
- java identityHashCode 和 hashCode
当类并没有重写Object#hashCode()时, 对于 System.identityHashCode(Object) 和 Object#hashCode() 的结果是一致的; 但对于类似Stri ...
- ava实现时钟小程序【代码】
其实这个程序并不难,主要是用Java 2D画图,弄一个线程,每隔一秒,依照时针分针秒针各自的速度重新计算它们走过的角度(相对12点方向顺时针偏离的角度),利用这个角度算出它们各自端点的坐标,重绘一次表 ...