Parencodings

Description

Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways:
q By an integer sequence P = p1 p2...pn where pi is the number of left parentheses before the ith right parenthesis in S (P-sequence).
q By an integer sequence W = w1 w2...wn where for each right parenthesis, say a in S, we associate an integer which is the number of right parentheses counting from the matched left parenthesis of a up to a. (W-sequence).

Following is an example of the above encodings:

S (((()()())))

P-sequence 4 5 6666

W-sequence 1 1 1456

Write a program to convert P-sequence of a well-formed string to the W-sequence of the same string.
Input

The first line of the input contains a single integer t (1 <= t <= 10), the number of test cases, followed by the input data for each test case. The first line of each test case is an integer n (1 <= n <= 20), and the second line is the P-sequence of a well-formed string. It contains n positive integers, separated with blanks, representing the P-sequence.
Output

The output file consists of exactly t lines corresponding to test cases. For each test case, the output line should contain n integers describing the W-sequence of the string corresponding to its given P-sequence.
Sample Input

2
6
4 5 6 6 6 6
9
4 6 6 6 6 8 9 9 9
Sample Output

1 1 1 4 5 6
1 1 2 4 5 1 1 3 9

题目大意:
设序列 S 是一个完全匹配的括号序列。序列 S 能用下面两种不同方法加密:
通过一个整数序列 P = p1 p2...pn ,其中 pi 表示序列 S 中第 i 个右括号 ")" 之前的左括号 “(” 的数量。当然这些括号是从左到右数的。
通过一个整数序列 W = w1 w2...wn ,wi 表示从第 i 个右括号 ")" 相匹配的左括号 “(” 的位置开始数的右括号 “)” 的数目,包括第 i 个右括号 “)” 本身。 (摘自百度知道)
输入序列P输出序列W。

解题思路:模拟做的。根据序列P将字母串写出来,在根据W的规则写出序列W。(被String的用法坑了。。)
Code:

 #include<string>
#include<iostream>
using namespace std;
int main()
{
string tmp;
int T,n,a[],i,j,k,t,cnt,sum;
cin>>T;
while (T--)
{
cin>>n;
k=;
tmp="";
for (i=; i<=n; i++)
{
cin>>a[i];
if (i!=) t=a[i]-a[i-];
else t=a[i];
for (j=; j<=t; j++)
tmp+='(';
tmp+=')';
}
k=;
for (i=; i<=tmp.length()-; i++)
if (tmp[i]==')')
{
cnt=,sum=;
for (j=i; j>=; j--)
{
if (tmp[j]==')') cnt++,sum++;
else cnt--;
if (!cnt) break;
}
a[k++]=sum;
}
for (i=; i<k; i++)
{
cout<<a[i];
if (i!=k-) cout<<' ';
else cout<<endl;
}
}
return ;
}

POJ1068——Parencodings的更多相关文章

  1. [POJ1068]Parencodings

    [POJ1068]Parencodings 试题描述 Let S = s1 s2...s2n be a well-formed string of parentheses. S can be enco ...

  2. Hdu1361&&Poj1068 Parencodings 2017-01-18 17:17 45人阅读 评论(0) 收藏

    Parencodings Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total ...

  3. [ACM_模拟] POJ1068 Parencodings (两种括号编码转化 规律 模拟)

    Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two diff ...

  4. POJ1068 Parencodings(模拟)

    题目链接. 分析: 水题. #include <iostream> #include <cstdio> #include <cstring> using names ...

  5. POJ1068 Parencodings 解题报告

    Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two diff ...

  6. 【数据结构(高效)/暴力】Parencodings

    [poj1068] Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26686   Accepted ...

  7. dir命令只显示文件名

    dir /b 就是ls -f的效果 1057 -- FILE MAPPING_web_archive.7z 2007 多校模拟 - Google Search_web_archive.7z 2083 ...

  8. 备战NOIP每周写题记录(一)···不间断更新

    ※Recorded By ksq2013 //其实这段时间写的题远远大于这篇博文中的内容,只不过那些数以百记的基础题目实在没必要写在blog上; ※week one 2016.7.18 Monday ...

  9. 【POJ1068】Parencodings

    题目传送门 本题知识点:模拟 这是一道恐怖的括号题.题意稍微理解以下还是可以的. 我们针对样例来理解一下 S.P.W 到底是什么意思: S:( ( ( ( ) ( ) ( ) ) ) ) P: \(P ...

随机推荐

  1. GTEST-ASSERT出错

    ASSERT_TRUE(1==1); ASSERT_EQ(1,1); 会给出以下错误: "cfunctest_normal.cpp", line 121.9: 1540-0258 ...

  2. 分类算法之贝叶斯(Bayes)分类器

    摘要:旁听了清华大学王建勇老师的 数据挖掘:理论与算法 的课,讲的还是挺细的,好记性不如烂笔头,在此记录自己的学习内容,方便以后复习.   一:贝叶斯分类器简介 1)贝叶斯分类器是一种基于统计的分类器 ...

  3. MySQL主从设定

    MySQL的安装   一.下载MySQL         http://dev.mysql.com/downloads/mysql/ 二.安装         $tar -xzvf mysql-5.1 ...

  4. [SQL Server]树形结构的创建

    对于SQL Server来说,构建显示一个树形结构不是一件容易的事情,逻辑构造能力不是它的强项.不过也不是说它没有能力干这个事情,只要换一种思维方式就可以理解它的工作原理. 例如,现在有一张表的内容如 ...

  5. Oracle中对象权限与系统权限revoke

    实验: 1.以sys登陆,创建用户test1, test2: 2.授予test1系统权限(带admin option)-connect,授予test1对象权限(带grant option)-selec ...

  6. ASP.NET MVC 简易在线书店

    写这篇博客的目的是为了记录自己的思想,有时候做项目做着做着就不知道下面该做什么了,把项目的具体流程记录下来,培养好习惯. 创建MVC项目 创建控制器StoreController public cla ...

  7. 黑马程序员 SaveFileDialog的跨线程调用 (专题三)

    <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a> ...

  8. linux驱动系列之文件压缩解压小节(转)

    转至网页:http://www.jb51.net/LINUXjishu/43356.html Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通 ...

  9. ubuntu下安装GTK过程

    GTK的安装过程比较繁琐,以前也安装过,但没有记录下来,Google一下记录下来备用. 利用此方法成功在ubuntu12.04下安装GTK 2.24.10 1.安装gcc/g++/gdb/make 等 ...

  10. hdu 2566 统计硬币

    http://acm.hdu.edu.cn/showproblem.php?pid=2566 假设一堆由1分.2分.5分组成的n个硬币总面值为m分,求一共有多少种可能的组合方式(某种面值的硬币可以数量 ...