1 solutions
- 
  1都知道这是单调栈的模板题,来说说单调栈 比如咱zx信奥队,新初一加入了,老师有一个 测试,分数比新来的要低的就踢出去 (纯打比方,咱zx没有这么残酷(~ ̄▽ ̄)~) 那么每一次有新来的,就比较栈里面的人有哪 些分数比他低,踢出去 因为每一次只会留下比新来的更强的, 所以可以证明栈内元素单调递增 看代码吧: #include<bits/stdc++.h> using namespace std; int n; int a[3000005]={}; stack<int> s;//存下标 int p[3000005]={};//存答案倒序输出 signed main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=n;i>=1;i--){//反着来,逐渐压入 while(!s.empty()&&a[s.top()]<=a[i]) s.pop(); //队头的人比新来的弱就踢掉 if(s.empty()) p[i]=0;//一定要判断不然RE else p[i]=s.top(); s.push(i);//新来的入栈 } for(int i=1;i<=n;i++) cout<<((p[i]<=n)?p[i]:0)<<' ';//最后判断一次以防万一 return 0; }
- 1
Information
- ID
- 363
- Time
- 1000ms
- Memory
- 125MiB
- Difficulty
- 9
- Tags
- # Submissions
- 11
- Accepted
- 4
- Uploaded By
 
       C23pengweixuan
      
                      LV 5
                    
 @ 2025-5-22 22:25:58
    
          C23pengweixuan
      
                      LV 5
                    
 @ 2025-5-22 22:25:58