4 条题解

  • 9
    @ 2022-12-8 21:38:54

    这题用了单调栈的知识

    #include <bits/stdc++.h>
    using namespace std;
    int n, num[80005];
    long long sum;
    stack<int> st;
    int main()
    {
        cin >> n;
        for (int i = 1; i <= n; i++)
            cin >> num[i];//输入
        num[n + 1] = 1000000001;
        for (int i=1;i<=n+1;i++)
        {
            while (!st.empty() && num[st.top()]<=num[i])//当栈不为空且num[栈顶元素]<=num[i]时
            {
                int top=st.top();
                sum+=i-top-1;
                st.pop();
            }
            st.push(i);
        }
        cout<<sum;
        return 0;
    }
    
    • 4
      @ 2023-7-5 14:29:54
      #include<bits/stdc++.h>
      using namespace std;
      long long ans;
      int n,a[80005];
      stack<int> st;
      int main()
      {
          cin>>n;
          for (int i=1;i<=n;i++)
          {
              cin>>a[i];
          }
          a[n+1]=1000000005;
          for (int i=1;i<=n+1;i++)
          {
              while (!st.empty()&&a[st.top()]<=a[i])
              {
                  int x=st.top();
                  ans+=i-x-1;
                  st.pop();
              }
              st.push(i);
          }
          cout<<ans;
          return 0;
      }//已AC
      
      • 2
        @ 2023-4-1 19:55:48
        #include<bits/stdc++.h>
        using namespace std;
        long long ans;
        int n,a[80007];
        stack<int> st;
        int main()
        {
            cin>>n;
            for (int i=1;i<=n;i++)
            {
                cin>>a[i];
            }
            a[n+1]=1000000007;
            for (int i=1;i<=n+1;i++)
            {
                while (!st.empty()&&a[st.top()]<=a[i])//这里注意不要写反(别问我怎么知道的)
                {
                    int x=st.top();
                    ans+=i-x-1;
                    st.pop();
                }
                st.push(i);
            }
            cout<<ans;
            return 0;
        }
        
        • -7
          @ 2022-4-24 16:49:47

          写题解请注意

          鼓励大家写题解,但注意题解格式。

          题解一定要有思路解析或代码注释,能否让别人理解你的思路

          也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。

          给代码两端加上这个会舒服一些

          ```cpp

          你的代码

          ```

          </span>

          这个点在键盘的左上角tab上面那个键,注意切换输入法

          #include<iostream>
          using namespace std;
          int main()
          {
              int n;
              cin>>n;//这是一个注释
              return 0;
          } 
          

          请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。

          抄袭题解一经发现直接取消成绩。

          题解被删除的可能

          1. 代码不符合格式规范
          2. 没有思路讲解或者没有注释,
          3. 无意义的题解

          大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。

          • 1

          信息

          ID
          1028
          时间
          1000ms
          内存
          256MiB
          难度
          7
          标签
          递交数
          428
          已通过
          111
          上传者