ACM_堆箱子咯

堆箱子咯

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

双十一大家都在买买买,可忙坏了快递小哥了。zl和皮卡鸡在大伙在剁手的时候,偷偷去快递公司那当兼职赚钱了。zl将箱子一个个叠起来,皮卡鸡将那堆箱子搬到别的地方去,但由于箱子太重,他每次只能拿最上面的一个。zl一边叠箱子,皮卡鸡就一边把目前最上面的箱子搬走,但由于动作快慢不一,有时候zl叠了几个箱子皮卡鸡才搬走一个,有时候皮卡鸡搬走几个箱子,zl才叠上去一个……那么问题来了,根据zl叠箱子的顺序,皮卡鸡搬箱子的顺序可不可能实现?(每个箱子都以一个字符编号,每个字符各不相同)

Input:

输入包含多组数据。
每组数据第一行输入一个整数n(3<n<100),表示箱子的个数,第二行输入一串字符s,表示zl叠箱子的顺序,第三行输入一串字符c,表示皮卡鸡搬箱子的顺序

Output:

如果可以实现,输出“yes”,否则输出“no”,每个输出占一行,不包括双引号。

Sample Input:

5
12345
54321
5
12345
14235

Sample Output:

yes
no解题思路:判断出栈序列是否为入栈序列的一种,详细题解看这:ACM_栈的压入、弹出序列AC代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 bool IsPopOrder(string Push,string Pop) {
 4     if(Push.size()==0)return false;
 5     vector<char> vec;
 6     for(size_t i=0,j=0;i<Push.size();++i){
 7         vec.push_back(Push[i]);
 8         while(j<Pop.size()&&Pop[j]==vec.back()){vec.pop_back();j++;}
 9     }
10     return vec.empty();
11 }
12 int main(){
13     string pushlist,poplist;int t;
14     while(cin>>t){getchar();
15         cin>>pushlist>>poplist;
16         if(IsPopOrder(pushlist,poplist))cout<<"yes"<<endl;
17         else cout<<"no"<<endl;
18     }
19     return 0;
20 }

原文地址:https://www.cnblogs.com/acgoto/p/9240879.html

时间: 2024-10-03 23:17:33

ACM_堆箱子咯的相关文章

堆箱子

[转]http://blog.csdn.net/shangqing1123/article/details/47661389 /** * 功能:给你一堆n个箱子,箱子宽wi,高hi,深di.箱子不能翻转,将箱子堆起来时,下面箱子的宽度.高度和深度必须大于上面的箱子. * 实现方法:搭出最高的一堆箱子,箱子堆的高度为每个箱子高度的总和. */ 两种方法: 方法一:递归法 [java] view plain copy //递归法 public static ArrayList<Box> creat

9.9递归和动态规划(十)——堆箱子

/** * 功能:给你一堆n个箱子,箱子宽wi,高hi,深di.箱子不能翻转,将箱子堆起来时,下面箱子的宽度.高度和深度必须大于上面的箱子. * 实现方法:搭出最高的一堆箱子,箱子堆的高度为每个箱子高度的总和. */ 两种方法: 方法一:递归法 //递归法 public static ArrayList<Box> createStackR(Box[] boxes,Box bottom){ int maxHeight=0; ArrayList<Box> maxStack=null;

杭电OJ_hdu2821_Pusher

题目大意: 在http://www.hacker.org/push网站上,有一个名字叫PusherBoy的游戏.这个游戏给出一个R * C的棋盘,棋盘上有许多堆阻碍前进的箱子.游戏的胜利条件是通过推箱子的方式,清除掉棋盘上所有的箱子. 现在你需要选择一块空旷的区域作为PusherBoy的初始位置,然后选择一个方向(U代表向上,D代表向下,L代表向左,R代表向右)来推箱子.一旦你选好了一个方向,PusherBoy将一直向前走直到碰到箱子才停下来(不能走出棋盘),然后他从这堆箱子中移除一个箱子(当然

bzoj4950

[Wf2017]Mission Improbable Time Limit: 1 Sec  Memory Limit: 1024 MBSubmit: 105  Solved: 49[Submit][Status][Discuss] Description 那是春日里一个天气晴朗的好日子,你准备去见见你的老朋友Patrick,也是你之前的犯罪同伙.Patrick在编程竞赛 上豪赌输掉了一大笔钱,所以他需要再干一票.为此他需要你的帮助,虽然你已经金盆洗手了.你刚开始很不情愿, 因为你一点也不想再回到

平面分拆的 Macmahon 公式

首先看一个计数问题:一个边长为 $a\times b\times c$ 的平行六边形,每个内角都是 120 度.用边长为 1 的菱形去覆盖,有多少种不同的方法? 比如下图就是一种: 我们从上方俯视这张图(虽然这是一个平面图形,但是我们想象在空间中鸟瞰它),发现它很像是在墙角堆箱子:在一个边长为 $a\times b\times c$ 的长方体空间中堆放若干形状为单位正方体的 "箱子".不仅如此,箱子堆放的规则是有限制的:紧贴墙角处的那一摞箱子最高,从墙角向外,箱子的高度是递减的.这个规

Bzoj 4950 (二分图最大匹配)

Description 那是春日里一个天气晴朗的好日子,你准备去见见你的老朋友Patrick,也是你之前的犯罪同伙.Patrick在编程竞赛 上豪赌输掉了一大笔钱,所以他需要再干一票.为此他需要你的帮助,虽然你已经金盆洗手了.你刚开始很不情愿, 因为你一点也不想再回到那条老路上了,但是你觉得听一下他的计划也无伤大雅.在附近的一个仓库里有一批货物, 包含一些贵重的消费性部件,Patrick企图从中尽可能多地偷些东西出来.这意味着要找一条进去的路,弄晕安保人 员,穿过各种各样的激光射线,你懂的,都是

Codeforces 551C - GukiZ hates Boxes(二分加贪心)

题意: 就是n个学生帮助教授搬箱子, 箱子分成m 堆, 每个学生每秒可以选择的两个操作 操作1,为从i堆迈向第i+1堆, 操作2,从i-1堆箱子中帮忙抱走一个箱子 问抱走所有箱子的最少时间为多少, 每个学生每秒可以同时行动 题解: 二分时间   然后再当前时间下,一个一个派出所有的学生,使其走到他能走的最远距离 代码: #include<stdio.h> int flag, value[100005], value2[100005], n, m; void find(long long int

cubieboard学习笔记

ubieboard学习笔记 2014-05-09  hginvent   阅 5345  转 16 转藏到我的图书馆 微信分享: 入手开发板,刷机肯定是少不了的,就像我们平时刷安卓手机一样.开发板也有很多适配的固件.比如Cubieboard3 Cubietruck就有安卓,debian,ubuntu等定制的固件. Cubieboard3 Cubietruck出厂的固件为安卓,拿到手上电,用HDMI接上电视,没有反应,后来确定是我HDMI切换器的问题.个人比较喜欢debian,去 Cubieboa

codeforces 551 C GukiZ hates Boxes

--睡太晚了...脑子就傻了-- 这个题想的时候并没有想到该这样-- 题意大概是有n堆箱子从左往右依次排列,每堆ai个箱子,有m个人,最开始都站在第一个箱子的左边, 每一个人在每一秒钟都必须做出两种选择中的一种:1若他的位置有箱子则搬走一个箱子,2往右走一步. 问把所有箱子都搞掉的最少时间-- 很显然二分一下答案,若为x秒,则每个人都有x秒,一个一个排出去搬,看是否能够搬完-- 我竟然没想到-- #include<map> #include<string> #include<