Vasya的书【D1-00007】
作者:互联网
D1-00007 Vasya的书 时间限制:1000 MS 空间限制:128 MB
题目描述
Vasya有n本书,编号为11~n,放在一个栈中(栈指数据结构中的栈),栈顶的书的编号是a1,其次是a2,以此类推。
Vasya通过n次操作将所有书放到她的书包里,对于第i步,她想把编号为bi的书放入书包,这时:
如果编号为bi的书还在栈中,那么她将依次取出栈顶的书并放入背包,直到放入了编号为bi的书。
如果编号为bi的书不在栈中,说明这本书已经放入书包,则直接进入下一步。
你需要输出Vasya每次操作放入书包书的数量。
输入格式
第一行一个正整数n
第二行n个不同的正整数a1,a2,…,an
第三行n个不同的正整数b1,b2,…,bn
输出格式
n个整数,第ii个表示Vasya第i次操作放入书包的书的数量
样例解释
样例1解释:
第一次操作取出2本书:编号为1,2
第二次操作取出0本书:
第三次操作取出1本书:编号为3
样例输入
3
1 2 3
2 1 3
样例输出
2 0 1
思路:一道简单的大暴力,先用一个数组判断b[i]是否出现过,再通过q队列每一次记录Vasya每次操作放入书包书的数量。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
using namespace std;
int x[100101];
bool b[100101];
queue<int> q;
int main()
{
int n,a;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
q.push(a);
b[a]=true;
}
for(int i=1;i<=n;i++){
cin>>x[i];
int t=0;
if(b[x[i]]==true){
b[x[i]]==false;
while(q.size()!=0){
int v=q.front();
q.pop();
if(v==x[i]){
t++;
break;
}
else{
t++;
b[v]=false;
}
}
cout<<t<<" ";
}
else{
cout<<0<<" ";
}
}
return 0;
}
标签:Vasya,int,00007,书包,编号,include,放入,D1 来源: https://blog.csdn.net/Liang_Kairui/article/details/122013167