zoukankan      html  css  js  c++  java
  • EOJ 2377 Sequence

    http://www.acm.cs.ecnu.edu.cn/problem.php?problemid=2377

     用一个单调递减栈来实现贪心的思路——先合并小的。

    单调栈则是用来保存那些较大的(暂不该合并的)元素。

    单调栈依然不会用。。

     1 #include<map>
     2 #include<set>
     3 #include<list>
     4 #include<cmath>
     5 #include<ctime>
     6 #include<queue>
     7 #include<stack>
     8 #include<cctype>
     9 #include<cstdio>
    10 #include<string>
    11 #include<vector>
    12 #include<cstdlib>
    13 #include<cstring>
    14 #include<iostream>
    15 #include<algorithm>
    16 #define MAXN 1000005
    17 #define INF 0x3f3f3f3f
    18 using namespace std;
    19 
    20 int s[MAXN], top;
    21 //单调递减栈
    22 
    23 int main()
    24 {    
    25     int n;
    26     while(cin >> n){
    27         top = -1;
    28         s[++top] = INF;
    29         long long ans=0;
    30         for(int i=0; i<n; i++){
    31             int x;
    32             scanf("%d", &x);
    33             if(x <= s[top]){
    34                 s[++top] = x;
    35             }
    36             else{
    37                 while(x>s[top-1]){
    38                     ans += s[top-1];
    39                     top --;
    40                 }
    41                 ans += x;
    42                 s[top] = x;
    43             }
    44         }
    45         while(s[top-1]!=INF){
    46             ans += s[top-1];
    47             top --;
    48         }
    49         printf("%I64d
    ", ans);
    50     }
    51 
    52     return 0;
    53 }
    View Code
  • 相关阅读:
    HttpServletRequest
    实现重定向
    HttpServletResponse
    Servlet简介和ServletContext
    JavaWeb 之 Http
    JavaWeb 之 Cookie
    Pycharm2019.3.2专业版激活
    How to Use Arrays and Vectors
    软件工程学习心得
    MySQL 连接
  • 原文地址:https://www.cnblogs.com/KimKyeYu/p/3304314.html
Copyright © 2011-2022 走看看