2015 湘潭大学程序设计比赛(Internet)H题-括号匹配
括号匹配 |
||
| Accepted : 30 | Submit : 234 | |
| Time Limit : 10000 MS | Memory Limit : 65536 KB | |
题目描述有一串括号(只包含"(", ")", "[", "]", "{", "}"), 保证这一括号串是匹配的, 长度小于100000, 有m个询问, 每个询问为一个整数x;对于每一个询问, 要求输出一行四个整数y, a, b, c; 表示第x个括号是跟第y个配对的, x和y之间有a对小括号, b对中括号, c对大括号。 输入约200个样例, 每个样例第一行为一个只包含括号的长度小于100000的字符串, 第二行一个小于100000的整数m, 接下来m行每行一个整数x,x不大于括号字符串的长度, x > 0; 输出每个询问输出一行四个整数y, a, b, c,用空格隔开。每个样例之后输出一个空行 样例输入(){}[]
样例输出2 0 0 0 SourceCKBoss |
代码如下:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stack>
#define N 100100
using namespace std; struct node
{
int index,k,pre,r[];//k是看它是哪种括号,pre是对应的另一半下标,r[1]是小括号,其次是中括号,大括号;
}; char str[N];
node a[N]; int main()
{
node q,t;
int i,m,x,j;
int b[]={}; b['(']=;b['[']=;b['{']=;
b[')']=;b[']']=;b['}']=; while(scanf("%s",str+)!=EOF)
{
stack<node>sta;
memset(a,0,sizeof(a));
for(i=;str[i];i++)
{
a[i].index=i;
a[i].k=b[str[i]];
if(a[i].k<=)
{
sta.push(a[i]);
}
else
{
q=sta.top();
sta.pop();
a[i].pre=q.index;
q.pre=i;
if(sta.size())
{
t=sta.top();
sta.pop();
t.r[]+=q.r[];t.r[]+=q.r[];t.r[]+=q.r[];
t.r[q.k]+=;
sta.push(t);
}
a[q.index]=q;
}
}
scanf("%d",&m);
for(i=;i<m;i++)
{
scanf("%d",&x);
j=min(x,a[x].pre);
printf("%d %d %d %d\n",a[x].pre,a[j].r[],a[j].r[],a[j].r[]);
}
}
return ;
}
http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1232
2015 湘潭大学程序设计比赛(Internet)H题-括号匹配的更多相关文章
- 2015 湘潭大学程序设计比赛(Internet)部分题解,其中有一个题与NYOJ1057很像,贪心过~~
仙剑奇侠传 祝玩的开心 ...
- 2015 湘潭大学程序设计比赛(Internet)--E题--烦人的异或
烦人的异或 Accepted : 27 Submit : 102 Time Limit : 5000 MS Memory Limit : 65536 KB 题目描述 如下图,有一N*M的表格, ...
- 2015 湘潭大学程序设计比赛(Internet)--D题-最小的数
最小的数 Accepted : 47 Submit : 276 Time Limit : 1000 MS Memory Limit : 65536 KB 题目描述 给你一个n位数,每次操作可以 ...
- 2015 湘潭大学程序设计比赛(Internet)--G题-人生成就
人生成就 Accepted : 54 Submit : 104 Time Limit : 10000 MS Memory Limit : 65536 KB 题目描述 人生就像一个n*n的矩阵, ...
- LeetCode 第20题--括号匹配
1. 题目 2.题目分析与思路 3.代码 1. 题目 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭 ...
- 集训第五周动态规划 J题 括号匹配
Description We give the following inductive definition of a “regular brackets” sequence: the empty s ...
- 牛客网-湘潭大学校赛重现H题 (线段树 染色问题)
链接:https://www.nowcoder.com/acm/contest/105/H来源:牛客网 n个桶按顺序排列,我们用1~n给桶标号.有两种操作: 1 l r c 区间[l,r]中的每个桶中 ...
- 2018湘潭大学程序设计竞赛【H】
题目链接:https://www.nowcoder.com/acm/contest/105/H 题意:两个操作,一个在[l,r]区间放颜色为c的球,一个统计在[l,r]里有多少不同颜色的球. 题解:哎 ...
- Codeforces Round #459 (Div. 2) C题【思维好题--括号匹配问题】
题意:给出一个串,只包含 ( ? ) 三种符号,求出有多少个子串是完美匹配的. ( ) ? ) => ( ) ( ) 完美匹配( ( ) ? => ( ( ) )完美匹配? ? ? ? = ...
随机推荐
- metasploit 中的DB
渗透测试任务中,主机/服务/漏洞等信息如果手动维护,会带来巨大的工作量. 在metasploit中,这部分工作已经被封装的非常好,每次调用内部模块执行的任务结果都会自动存入DB.通过简单的指令即可以方 ...
- 为啥RESTFULL如此重要?
为啥RESTFULL如此重要? 2014-6-3 20:13| 发布者: admin| 查看: 57| 评论: 0|来自: java365 摘要: 本文我们将讨论REST,它定义了一组体系架构原则,您 ...
- Apache Kafka 0.11版本新功能简介
Apache Kafka近日推出0.11版本.这是一个里程碑式的大版本,特别是Kafka从这个版本开始支持“exactly-once”语义(下称EOS, exactly-once semantics) ...
- 关于MFLAGS与MAKEFLAGS
与子make通讯的选项 诸如‘-s’和‘-k’标志通过变量MAKEFLAGS自动传递给子make.该变量由make自动建立,并包含make收到的标志字母.所以,如果您是用‘make –ks’变量MAK ...
- 【面试题】100IT名企java面试必考面试题
一.Java 基础部分 1. JAVA 的基本数据类型有哪些 ? String 是不是基本数据类型 ? Java 有 8 种基本数据类型: byte int ...
- openstack nova 用户管理
用户管理 创建管理员用户 用法: nova-manage user admin name [access] [secret] 其中access 和secret可 ...
- rabbitmq日志记录进出的每条消息
参考: https://blog.csdn.net/u013256816/article/details/76039201 https://blog.csdn.net/aosica321/articl ...
- 剑指offer题目记录
1.如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString { public: CMyString(char* pData = NULL); CMyStri ...
- Cracking the Coding Interview(String and array)
1.1实现一个算法判断一个字符串是否存在重复字符.如果不能利用另外的数据结构又该如何实现? My solution: /** *利用类似一个hash table的计数 *然后检查这个hash tabl ...
- C程序设计语言习题(1-12)
统计行数.单词数,字符数的程序: #include<stdio.h> #define IN 1 /*在单词内*/ #define OUT 0 /*在单词外*/ int main() { i ...