【t093】外星密码
Time Limit: 1 second
Memory Limit: 128 MB
【问题描述】
有了防护伞,并不能完全避免2012的灾难。地球防卫小队决定去求助外星种族的帮助。经过很长时间的努力,小队终于收到了外星
生命的回信。但是外星人发过来的却是一串密码。只有解开密码,才能知道外星人给的准确回复。解开密码的第一道工序就是
解压缩密码,外星人对于连续的若干个相同的子串”X”会压缩为”[DX]”的形式(D是一个整数且1 <= D <= 99),比如说字符
串”CBCBCBCB”就压缩为”[4CB]”或者”[2[2CB]]”,类似于后面这种压缩之后再压缩的我们称之为二重压缩。如果是
”[2[2[2CB]]]”,则是三重。现在我们将给你外星人发送的密码,请你对其进行解压缩。
[数据范围]
对于50%的数据:解压后的字符串长度在1,000以内,最多只有三重压缩。
对于100%的数据:解压后的字符串长度在20,000以内,最多只有十重压缩。
保证只包含数字、大写字母、’[’和’]’。
【输入格式】
第1行:一个字符串
【输出格式】
第1行:一个字符串
Sample Input
AC[3FUN]
Sample Output
ACFUNFUNFUN
【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t093
【题解】
按照所给的规则模拟一下展开的过程就好;
这个过程有很多重复的步骤;
所以考虑用递归来搞;
每一层递归,看看里面还有没有嵌套;
如果没有嵌套,那么就直接处理出来;
然后返回上层;
注意会有这样的输入
[3C[2D]]->CDDCDDCDD
[2C[2D]F[2B]]->CDDFBBCDDFBB
具体的看代码君吧。
【完整代码】
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;
string s;
string dfs(int l,int r)
{
int ll =0;
for (ll = l+1;ll <= r-1;ll++)//里面有没有嵌套
if (s[ll]=='[')
break;
if (ll==r)
{
int x = 0,i;
for (i = l+1;i <= r-1;i++)
if (s[i]>='0' && s[i] <= '9')
x = x*10+s[i]-'0';
else
break;
//i..r-1
string t = s.substr(i,r-i);
string ss = "";
for (i = 1;i <= x;i++)
ss+=t;
return ss;
}
else
{
//integer
//ll..rr待处理
int i,x = 0;
for (i = l+1;i<=r-1;i++)
if (s[i]>='0' && s[i]<='9')
x = x*10 + s[i]-'0';
else
break;
string ss = "",ts="";
for (int j = i;j<=r-1;j++)
if (s[j]=='[')
{
int jj = j+1;
int t = 1;
while (t!=0)
{
if (s[jj]==']') t--;
if (s[jj]=='[') t++;
if (t==0) break;
jj++;
}
ss+=dfs(j,jj);
j = jj;
}
else
ss+=s[j];
for (i = 1;i <= x;i++)
ts+=ss;
return ts;
}
}
int main()
{
//freopen("F:\\rush.txt","r",stdin);
cin >> s;
int len = s.size();
for (int i = 0;i <= len-1;i++)
if (s[i]=='[')
{
int j = i+1;
int t = 1;
while (j <= len-1 && t!=0)
{
if (s[j]=='[') t++;
if (s[j]==']') t--;
if (t==0) break;
j++;
}
//i..j是一个待展开的东西
cout << dfs(i,j);
i = j;
}
else
putchar(s[i]);
return 0;
}
【t093】外星密码的更多相关文章
- P1928 外星密码
题目描述 有了防护伞,并不能完全避免 2012 的灾难.地球防卫小队决定去求助外星种族的帮 助.经过很长时间的努力,小队终于收到了外星生命的回信.但是外星人发过来的却是一 串密码.只有解开密码,才能知 ...
- [Luogu] 外星密码
https://www.luogu.org/problemnew/show/P1928 沙比提 读清题目 #include <bits/stdc++.h> using namespace ...
- 【BZOJ-1923】外星千足虫 高斯消元 + xor方程组
1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 766 Solved: 485[Submit][Status ...
- 【BZOJ-2251】外星联络 后缀数组 + 暴力
2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 670 Solved: 392[Submit][ ...
- bzoj 2251: [2010Beijing Wc]外星联络 后缀数组
2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 424 Solved: 232[Submit][ ...
- bzoj 1923 [Sdoi2010]外星千足虫(高斯消元+bitset)
1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 634 Solved: 397[Submit][Status ...
- BZOJ 1923: [Sdoi2010]外星千足虫 [高斯消元XOR]
1923: [Sdoi2010]外星千足虫 对于 100%的数据,满足 N≤1,000,M≤2,000. 裸高斯消元解异或方程组 给定方程顺序要求用从上到下最少的方程,那么找主元时记录一下最远找到哪个 ...
- 【阿里聚安全·安全周刊】科学家警告外星恶意代码|新方法任意解锁iPhone
本周的七个关键词: 外星恶意代码 丨 任意解锁iPhone 丨 安卓9.0 丨 黑客攻击医疗设备 丨 仙女座僵尸网络 丨 苹果联合创始人被骗比特币 丨JavaScript -1- [恶意代码] ...
- BZOJ_1923_[Sdoi2010]外星千足虫_高斯消元+bitset
BZOJ_1923_[Sdoi2010]外星千足虫_高斯消元 Description Input 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结 ...
随机推荐
- 笔记:投机和投资 F4NNIU
笔记:投机和投资 F4NNIU 投机是零和交易. 投资是正和博弈. 投机看是短期,只关心当下. 投资是看的长期,更关注未来. 投机容易分散注意力. 投资更关心交易外的注意力. 投机像是看运气,运气有好 ...
- UWP获取任意网页加载完成后的HTML
主要思想:通过后台WebView载入指定网页,再提取出WebView中的内容 关键代码: var html = await webView.InvokeScriptAsync("eval&q ...
- Java Map 排序
1. 按照key值排序 对于java中Map的排序,有排序Map,比如TreeMap,对于这个Map,首先只能按照键排序,其次再put和remove的时候由于需要排序,性能上会有所牺牲. 这种方案,使 ...
- QT 引用之前项目模板导致计算速度严重下降
最近做RRT规划算法,在新建工程中测试时,每一个周期大概花费20MS,但是当我把算法移植到之前写的工程模板中时,计算效率相当低,变为500毫秒.期初是以为代码有问题,然后就逐句查找,发现代码并没有问题 ...
- bzoj1179 Atm
Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口 ...
- VS中,卸载,移除,删除项目的区别
不说话,上图.
- hdu5437 优先队列 长春网赛
优先队列做,然后遍历人数. #include <queue> #include <stdio.h> #include <string.h> #define maxn ...
- MUI - 为textarea添加语音输入和清除的功能
为textarea添加语音输入和清除的功能 mui支持input输入框语音输入和清除的功能,只需要添加相关css类即可. http://www.cnblogs.com/phillyx/ 代码如下 &l ...
- 51nod 1686 第K大区间【离散化+二分】
题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1686 题意: 定义一个区间的值为其众数出现的次数. 现给出n ...
- XML之DOM解析文档 Day24
TestDom.java package com.sxt.dom; import java.io.File; import java.io.IOException; import javax.xml. ...