URAL 1654. Cipher Message (STL stack)

1654. Cipher Message

Time limit: 1.0 second

Memory limit: 64 MB

Müller tried to catch Stierlitz red-handed many times, but alwaysfailed because Stierlitz could ever find some excuse. Once Stierlitz waslooking through his email messages. At that moment, Müller enteredsecretly and watched a
meaningless sequence of symbols appear on the screen.“A cipher message,” Müller thought.“UTF-8,” Stierlitz thought.

It is known that Stierlitz ciphers messages by the following method.

  1. He deletes all spaces and punctuation marks.
  2. He replaces all successive identical letters by one such letter.
  3. He inserts two identical letters at an arbitrary place many times.

Try to restore a message as it was after the second step. For that, remove fromthe message all pairs of identical letters inserted at the third step.

Input

The only input line contains a message ciphered by Stierlitz. The messageconsists of lowercase English letters and its length is at most 200000.

Output

Output the restored message.

Sample

input output
wwstdaadierfflitzzz
stierlitz

Problem Author: Vladimir Yakovlev (idea by Alexander Klepinin)

Problem Source: NEERC 2008, Eastern subregion quarterfinals

解析:相邻两相同字母可消去,直接进栈一遍即可,相同则出栈,不同则进栈。

AC代码:

#include <bits/stdc++.h>
using namespace std;

stack<char> p;

int main(){
    #ifdef sxk
        freopen("in.txt", "r", stdin);
//        freopen("out.txt", "w", stdout);
    #endif // sxk

    string s;
    while(cin>>s){
        int len = s.size();
        for(int i=0; i<len; i++){
            if(!p.empty() && p.top() == s[i]) p.pop();
            else p.push(s[i]);
        }
        s = "";
        while(!p.empty()){
            s += p.top();
            p.pop();
        }
        reverse(s.begin(), s.end());
        cout<<s<<endl;
    }
    return 0;
}
时间: 2024-10-03 04:56:12

URAL 1654. Cipher Message (STL stack)的相关文章

详解括号匹配问题(STL stack)

1. 括号匹配的四种可能性: ①左右括号配对次序不正确 ②右括号多于左括号 ③左括号多于右括号 ④左右括号匹配正确 2. 算法思想: 1.顺序扫描算数表达式(表现为一个字符串),当遇到三种类型的左括号时候让该括号进栈: 2.当扫描到某一种类型的右括号时,比较当前栈顶元素是否与之匹配,若匹配,退栈继续判断: 3.若当前栈顶元素与当前扫描的括号不匹配,则左右括号配对次序不正确,匹配失败,直接退出: 4.若字符串当前为某种类型的右括号而堆栈已经空,则右括号多于左括号,匹配失败,直接退出: 5.字符串循

URAL 1203 Scientific Conference(贪心 || DP)

Scientific Conference 之前一直在刷计算几何,邀请赛连计算几何的毛都买见着,暑假这一段时间就做多校,补多校的题目,刷一下一直薄弱的DP.多校如果有计算几何一定要干掉-.- 题意:给你N个报告会的开始时间跟结束时间,问你做多可以听几场报告会.要求报告会之间至少间隔为1. 思路:其实是个活动安排问题,可以用贪心也可以用DP,贪心写起来会比较简单一些,因为练习DP,所以又用DP写了一遍. 贪心的话就是一个很简单的活动选择问题,从结束时间入手,找每次的最优选择. 1 struct n

【ThinkingInC++】26、下推栈(push_down stack)不会越出内存

头文件 /** * 功能:下推栈(push_down stack)不会越出内存 * 时间:2014年8月18日08:13:36 * 作者:cutter_point */ #ifndef STACK_H_INCLUDED #define STACK_H_INCLUDED struct Stack { struct Link { void* data; //这个结构的数据 Link* next; //这个指向这种结构的指针 void initialize(void* dat, Link* nxt);

UVA 10474:Where is the Marble?(STL初步)

 Where is the Marble?  Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on them. At the beginning, Raju would place the marbles one after another in ascending order of the numbers written on them. Then Mee

【POJ2774】Long Long Message(后缀数组)

[POJ2774]Long Long Message(后缀数组) 题面 Vjudge Description Little cat在Byterland的首都读物理专业.这些天他收到了一条悲伤地信息:他的母亲生病了.担心买火车票花钱太多(Byterland是一个巨大的国家,因此他坐火车回家需要16小时),他决定只给母亲发短信. Little cat的家境并不富裕,因此他经常去营业厅查看自己发短信花了多少钱.昨天营业厅的电脑坏掉了,打印出两条很长的信息.机智的little cat很快发现: 1.信息

P1540 机器翻译(STL 链表)

题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译:如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译. 假设内存中有M个单元,每单元能存放一个单词和译义.每当软件将一个新单词存入内存前,如果当前内存中已存入的单

CodeForces 993B Open Communication(STL 模拟)

https://codeforces.com/problemset/problem/993/b 题意: 现在有两个人,每个人手中有两个数,其中两个人手中的数有一个是相同的(另一个不一样), 现在第一个人会给你n对数,保证其中一对就是他手上的两个数,第二个人会给你m对数,保证其中一对是他手上的两个数. 现在你作为一个旁观者,如果能分辨出相同的数,则输出它,如果你知道手上有牌的人知道相同的数,那么输出0,其余则输出-1. 思路: 其实就是n对和m对数中,找共享数字,直接看样例吧: 在第一示例中,第一

URAL 1563. Bayan (STL map)

1563. Bayan Time limit: 1.0 second Memory limit: 64 MB As everybody knows, there are a lot of stores in skyscrapers, it's the favourite place of glamorous girls. Blonde Cindy loves only one thing - the shopping. Today is one of the best days, she's g

ZOJ - 4016 Mergeable Stack (STL 双向链表)

[传送门]http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4016 [题目大意]初始有n个空栈,现在有如下三种操作: (1) 1 s v  即 s.push(v) (2) 2 s 即 s.pop() 输出弹出的元素,如果栈s为空则输出 "EMPTY" (3) 3 s t 把t栈元素全部移到s栈中,使s的尾部与t的首部相连. 现在有若干上述三种类型的操作,遇到操作2则输出相应内容. [题解]由于站的数量n和操作次数