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题【思维好题--括号匹配问题】
题意:给出一个串,只包含 ( ? ) 三种符号,求出有多少个子串是完美匹配的. ( ) ? ) => ( ) ( ) 完美匹配( ( ) ? => ( ( ) )完美匹配? ? ? ? = ...
随机推荐
- PHP代码审计笔记--变量覆盖漏洞
变量覆盖指的是用我们自定义的参数值替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击. 经常导致变量覆盖漏洞场景有:$$,extract()函数,parse_str()函数, ...
- Linux平台上用C语言实现与MySQL数据库的连接
安装编译工具 ---- 这将安装gcc/g++/gdb/make 等基本编程工具: sudo apt-get install build-essential 输入命令"sudo apt-ge ...
- 操作系统定期定时执行python脚本
1. Windows 控制面板 --> 管理工具 -->任务计划程序 --> 创建任务 接下来就是设置执行的时机以及脚本路径等 1>>常规 设置任务名称描述,以及是否执行 ...
- VS05 VS08 VS10 工程之间的转换
VS05 VS08 VS10 工程之间的转换 安装了VS2010后,用它打开以前的VS2005项目或VS2008项目,都会被强制转换为VS2010的项目,给没有装VS2010的电脑带来不能打开高版本项 ...
- 关于控制台程序下使用mfc库中的函数时断言
例如: TCHAR path[8192]; int len = getmodulefilename(afxgetinstancehandle(),path,8192);//会出现断言 如果没有选择支持 ...
- 原创:超简单!windows配置NDK开发环境使用JNI
前段时间看android版的opencv的配置教程时,看到了它的NDK配置方法,感觉简单又不会出错!!! 1.下载NDK,设置NDK路径: 在windows的系统环境变量中添加NDK的路径,环境变量名 ...
- windows 命令行下 简单好用的查看端口占用情况的方法
在windows命令行窗口下执行: C:\>netstat -aon|findstr "4444" TCP 127.0.0.1:4444 0.0.0.0:0 LISTENIN ...
- Matlab练习——素数查找
输入数字,0结束,判断输入的数字中的素数 clc; %清空命令行窗口的数据 clear; %清除工作空间的变量 k = ; n = ; %素数的个数 zzs(k) = input('请输入正整数: ' ...
- 【架构师之路】APP架构师必看:面对爆发流量如何进行架构调整
一.APP架构与WEB架构的最大不同 移动APP的架构和传统PC的WEB架构有三点不同: 1.连接的稳定性.在传统的web端连接成功后就可以认为它是稳定的,但在移动端.无线端,APP连接非常敏感,可能 ...
- delphi for android 获取手机号
delphi for android 获取手机号 uses System.SysUtils, System.Types, System.UITypes, System.Classes, Syste ...