Austin_Chen @ 2024-10-24 16:29:06
#include<bits/stdc++.h>
using namespace std;
vector<unsigned long long> vc;
int n,x,t;
string o;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie();
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>o;//确定操作
if(o=="push")
{
cin>>x;
vc.push_back(x);
}
if(o=="pop")
{
if(!vc.empty()) vc.pop_back();
else cout<<"Empty"<<'\n';
}
if(o=="query")
{
if(!vc.empty()) cout<<vc.back()<<'\n';
else cout<<"Anguei!"<<'\n';
}
if(o=="size") cout<<vc.size()<<'\n';
}
}
return 0;
}
by __int1024 @ 2024-10-24 16:41:13
@Austin_Chen unsigned long long
类型的。
by qcf2010 @ 2024-10-24 16:50:23
错误原因楼上的已经说了。
本题的目的就是手写栈,若要用 STL,为何不直接使用 stack 呢?
#include<bits/stdc++.h>
#define ull unsigned long long
using namespace std;
const int N=1e6+10;
int n,t,top;
ull sta[N],x;
string op;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>t;
while(t--){
top=0;
cin>>n;
while(n--){
cin>>op;
if(op=="push"){
cin>>x;
sta[++top]=x;
}else if(op=="pop"){
if(top) --top;
else cout<<"Empty\n";
}else if(op=="query"){
if(top) cout<<sta[top]<<"\n";
else cout<<"Anguei!\n";
}else if(op=="size") cout<<top<<"\n";
}
}
return 0;
}
by zzhengxi @ 2024-10-24 16:52:04
@Austin_Chen 首先,x 开 unsigned long long;其次,每次循环时要 vc.clear().
by zzhengxi @ 2024-10-24 16:54:22
@qcf2010 他写的是用vector模拟栈,两种方法都能AC
by Austin_Chen @ 2024-10-24 18:52:35
@zzhengxi 感谢,虽然之前已经A了
by Austin_Chen @ 2024-10-24 18:53:21
@qcf2010 STL封装的太慢了,用vector模拟会快一点