• 单调栈2 POJ3250 类似校内选拔I题


    这个题再次证明了单调栈的力量

    简单 单调栈 类似上次校内选拔消砖块

    一堆牛面朝右排 给出从左到右的 问每个牛的能看到前面牛发型的个数之和

    //re原因 因为在执行pop的时候没有判断empty 程序崩溃

    转换下思想 我们可以求每个牛被后面的牛看见的次数之和

    维护一个单调减栈 size为能看到当前准备入栈的发型的牛个数

    so 解决了 代码超短

     1 #include<cstdio>
     2 #include<map>
     3 //#include<bits/stdc++.h>
     4 #include<vector>
     5 #include<stack>
     6 #include<iostream>
     7 #include<algorithm>
     8 #include<cstring>
     9 #include<cmath>
    10 #include<queue>
    11 #include<cstdlib>
    12 #include<climits>
    13 #define PI acos(-1.0)
    14 #define INF 0x3f3f3f3f
    15 using namespace std;
    16 typedef long long ll;
    17 typedef __int64 int64;
    18 const ll mood=1e9+7;
    19 const int64 Mod=998244353;
    20 const double eps=1e-9;
    21 const int N=2e7+10;
    22 const int MAXN=1e5+5;
    23 inline void rl(ll&num){
    24     num=0;ll f=1;char ch=getchar();
    25     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    26     while(ch>='0'&&ch<='9')num=num*10+ch-'0',ch=getchar();
    27     num*=f;
    28 }
    29 inline void ri(int &num){
    30     num=0;int f=1;char ch=getchar();
    31     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    32     while(ch>='0'&&ch<='9')num=num*10+ch-'0',ch=getchar();
    33     num*=f;
    34 }
    35 int getnum()//相邻的个位整数输入 如想分别保存1234 输入连续的1234 a[i]=getnum();就可以实现
    36 {
    37     char ch=getchar();
    38     while((ch<'0' || ch>'9') && ch!='-')
    39         ch=getchar();
    40     return (ch-'0');
    41 }
    42 inline void out(int x){ if(x<0) {putchar('-');  x*=-1;}if(x>9) out(x/10);    putchar(x%10+'0'); }
    43 int main()
    44 {
    45     stack<ll> s;
    46     int n;
    47     while(scanf("%d",&n)==1)
    48     {
    49         ll tem,ans=0;
    50         while(n--)
    51         {
    52             rl(tem);
    53             if(s.empty())
    54             {
    55                 s.push(tem);
    56             }
    57             else{
    58                 while(!s.empty()&&s.top()<=tem) s.pop();//看见前方的牛了
    59                 s.push(tem);
    60             }
    61             ans+=s.size()-1;
    62         }
    63         cout<<ans<<endl;
    64         while(!s.empty())s.pop();
    65     }
    66     return 0;
    67 }
    AC代码
  • 相关阅读:
    压力测试工具集合(ab,webbench,Siege,http_load,Web Application Stress)
    微软压力测试工具 web application stress
    linux下的3种DDOS软件介绍
    windows 配置squid反向代理服务器
    windows下简单配置squid反向代理服务器
    [分享]windows下编译squid的经验(转)
    在CentOS 5下安装中文五笔
    CentOS LVS安装配置
    CentOS4.5下LVS方案
    linux LVS (keepalived+ipvsadm)负载均衡搭建
  • 原文地址:https://www.cnblogs.com/Geek-xiyang/p/5438421.html
Copyright © 2020-2023  润新知