强迫症
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 49(19 users) Total Accepted: 20(15 users) Rating:  Special Judge: Yes
Description

众所周知,我们在使用网络聊天时如果在结尾加上一个括号会使语气变的十分有趣(。

但是这对于一位强迫症患者,xiaodao 队友Wangzhpp的下铺 wsc500而言,则是一件无法忍受的事情 —— Wangzhpp给他发送的消息中又有一大堆没有被匹配起来的括号!善良的xiaodao决定帮助他将这一大坨括号完美地匹配起来。

已知消息是一个由n个左括号“(”与n个右括号“)”所组成的括号序列,xiaodao需要使用不超过n次操作将所给的括号序列变为一个完美匹配的括号序列。

每次操作,xiaodao可以指定一个区间[l,r],将其中的所有括号反序。如“()(()”在进行操作后会变为“)(()(”。

Input

第一行一个整数 T ,代表有 T 组数据。

每组数据仅一行,包含一个如上所述的括号序列。

(括号序列的长度 2 <= 2n <= 100000)

Output

对于每组数据,

第一行输出一个整数m(m<=n),代表xiaodao的操作次数。

接下来m行,每行输出两个整数l, r(l<=r),代表xiaodao这一次对区间[l,r]内的序列进行了操作。

Sample Input

2

)()()(

)(())(

Sample Output

1

1 6

2

1 2

5 6

Hint
只需要构造一个合法解而非最优解。
Source
"诚德软件杯"哈尔滨理工大学第四届ACM程序设计团队赛

思路:既然是题目保证了有n个左括号和n个右括号,辣么不难想到,因为是逆序放置,只要使得左边的括号全是左括号,右边的括号全是右括号即可,辣么操作就是这样滴:

在左半边遍历,如果遇到了右括号,就在后边找左括号,如果找到了左括号,加入答案数组中,然后别忘记使得左括号变成右括号。

AC代码:

#include<stdio.h>
#include<string.h>
using namespace std;
char a[200000];
int ans[200000][2];
int main()
{int t;scanf("%d",&t);while(t--){scanf("%s",a+1);int n=strlen(a+1);int cont=0;int p=0;for(int i=1;i<=n/2;i++){if(a[i]==')'){while(p<i||a[p]==')')p++;a[p]=')';ans[cont][0]=i;ans[cont][1]=p;cont++;}}printf("%d\n",cont);for(int i=0;i<cont;i++){printf("%d %d\n",ans[i][0],ans[i][1]);}}
}

hrbust/哈理工oj 2220 强迫症【思维】相关推荐

  1. hrbust 哈理工oj 1418 夏夜星空【带权并查集】

    夏夜星空 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 43(20 users) Total Accepted: 19(18 user ...

  2. hrbust 哈理工oj 1633 word!word!【欧拉路、欧拉回路的有向图判断】

      word!word! Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 58(20 users) Total Accepted: 25 ...

  3. hrbust 哈理工oj 1989 营救小组【BFS】

    营救小组 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 181(39 users) Total Accepted: 46(35 use ...

  4. hrbust 哈理工oj 1588 神医【贪心】

    神医 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 140(33 users) Total Accepted: 43(31 users ...

  5. hrbust 哈理工oj 2016 势力较量 (并查集)

    势力较量 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 123(48 users) Total Accepted: 70(46 use ...

  6. C. 啊对对对 (南阳理工oj—21第二次招新赛)

    解法 找到最长的公共前后缀以后,我们可以先输出t,然后t中的最长公共前后缀无需再输出(重复),只输出不重复的部分即可. 比如 aba公共前后缀为a ,不重复的部分为ba,所以你只需要先输出t(aba) ...

  7. hrbust 1424 哈理工oj 1424 Hrbust的校车【水题】【思维】

    Hrbust的校车 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 573(179 users) Total Accepted: 176 ...

  8. 哈理工OJ 1304 13哥的机器人(思维题)

    13哥的机器人 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 379(122 users) Total Accepted: 139(1 ...

  9. 哈理工 oj——队列列列列!!!!!

    队列列列列!!!!! Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 337(148 users) Total Accepted: 15 ...

  10. 哈理工OJ 1380 Vagaa, eMule and Apple(水题)

    题目链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1380 Vagaa, eM ...

最新文章

  1. 谷歌放出AI平民化大招: 李飞飞宣布推出AutoML云平台,让普通企业也能用上深度学习
  2. C#, CLR, and .NET Framework versions
  3. linux菜鸟入门-1
  4. 定义一个计算字符串有效长度的_一个正方形的小抽屉柜,根据设计草图计算出所需四片木板的长度...
  5. 2019山东省赛B - Flipping Game ZOJ - 4114 题解
  6. C#中的Explicit和Implicit了解一下吧
  7. reStructuredText(.rst)语法规则快速入门
  8. python中 yield 的用法详解——最简单,最清晰的解释(排序节省内存消耗)
  9. WPF案例 (五) 对控件界面使用倒影
  10. 三层架构(命名规则)
  11. linux动态鼠标光标,自定义鼠标光标---Linux Mint 18.2 Sonya系统
  12. playwright之贴吧签到
  13. JavaScript设计模式----策略模式
  14. 使用for循环打印空心菱形图案
  15. navicat的基本使用技巧
  16. MySQL添加字段和删除字段
  17. rhel7 pcs pacemaker corosync配置主从高可用
  18. DATA GUARD代码(部分)
  19. SAP HANA client2.0 下载网站
  20. cadence原理图生成网表错误解决方法,出现Unable to open file ......Temp\tmp_pstxnet.dat“ for writing

热门文章

  1. 无线投屏视频经过服务器吗,无线投屏方案
  2. 澜沧江某水电站下坝址坝址初步设计
  3. TTL电平和CMOS 电平
  4. 【图文教程】de4dot实战字符串解密(演示:hishop微分销系统)
  5. java udp 接收16进制_java UDP通信中十六进制的接收与发送
  6. [VB.NET]请教一个如何对姓名进行同音字查询?
  7. 单片机C语言的编译模式,手把手教你学单片机的C语言程序设计六编译预处理.pdf...
  8. 1.2 说说大学这滩泥淖——《逆袭大学》连载
  9. plcst语言编程教程_ST 结构文本 PLC编程语言 教程.pdf
  10. 智能汽车软件行业深度研究:汽车软件的星辰大海