https://pintia.cn/problem-sets/994805046380707840/problems/1111914599412858889 天梯赛,栈的基本应用,有手就行,然而第一个点没过(逃
题目简述: 给你T个测试案例.每次有n个数,从1-n,扔到一个容量为m的栈里,每个元素入栈后可以立即出栈,也可以待里边.判断元素出栈的序列能否形成1-n,即1 2 3 4 5…n这样的.
十分代码,一手break导致后续数据没有输入完,最值钱的点白给,呆的一.
/*
就算是现在在的大学很无聊 就算现在的专业你不喜欢 就算是有些必修课你不想上
你也要把它当作是你去往另一个平台的通行证。
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define OldTomato ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef pair PII;
typedef long long ll;
const double PI = acos(-1.0);
const int INF = 0x3f3f3f3f;
const int N = 1e5+10;
const int mod = 1e9+7;
const double eps = 1e-6;
inline int lowbit(int x){ return x&(-x);}
int n,m,k,T;
void fun()
{
OldTomato;
cin>>n>>m>>T;
while(T--)
{
stack st; //每个测试案例清空栈.
int tmp = 1; //当前应该装卸的货物.
bool flag = false;
for(int i=0;i>x;
if(x==tmp)
{
tmp++;
while(st.size()&&st.top()==tmp) //只有当恰好放的这个与之匹配,才有可能从栈顶开始清.
{
st.pop();
tmp++;
}
}
else //不匹配,压栈.
{
st.push(x);
if(st.size() > m) //只有压栈才会导致栈的size增加
{
break;
}
}
}
while(st.size()&&st.top()==tmp) //放完货物以后,可以全部出栈.
{
tmp++; st.pop();
}
if(st.empty()) flag = true;
if(flag) cout m) //只有压栈才会导致栈的size增加
{
flag = false; //不能break,会导致后续的输入没输入完,淦.
}
}
}
if(st.empty()&&flag) cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?