zoukankan      html  css  js  c++  java
  • 洛谷 P1901 发射站

    题目

    思路

    利用单调栈求出比他高的发射站中离它最近的哪一个,在暴力加一下,求出最终答案。

    (Code)

    #include<bits/stdc++.h>
    #define max_(a,b) a>b?a:b;
    #define MAXN 1000001
    #define rr register
    using namespace std;
    int n,max1[MAXN],max2[MAXN],ans=0;
    int pwp[MAXN];
    struct info{
        int h,w,num;
    }qwq[MAXN];
    stack<info> sss;
    inline int read(){
        int x=0;bool f=0;char c=getchar();
        while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return f?-x:x;
    }
    
    int main(){
        n=read();
        for(rr int i=1;i<=n;++i){
            qwq[i].h=read();
            qwq[i].w=read();
            qwq[i].num=i;
        }
        for(rr int i=1;i<=n;++i){
            if(i==1){
                sss.push(qwq[i]);
                max1[i]=0;
            }else{
                while(qwq[i].h>sss.top().h){
                    sss.pop();
                    if(sss.empty()) break;
                }
                if(sss.empty()) max1[i]=0;
                else max1[i]=sss.top().num;
                sss.push(qwq[i]);
            }
        }
        while(!sss.empty()){
            sss.pop();
        }
        for(rr int i=n;i>=1;--i){
            if(i==n){
                sss.push(qwq[i]);
                max2[i]=0;
            }else{
                while(qwq[i].h>sss.top().h){
                    sss.pop();
                    if(sss.empty()) break;
                }
                if(sss.empty()) max2[i]=0;
                else max2[i]=sss.top().num;
                sss.push(qwq[i]);
            }
        }
        for(int i=1;i<=n;++i){
            if(max1[i]!=0) pwp[max1[i]]+=qwq[i].w;
            if(max2[i]!=0) pwp[max2[i]]+=qwq[i].w;
            ans=max_(ans,pwp[max1[i]]);
            ans=max_(ans,pwp[max2[i]]);
        }
        printf("%d
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    eclipse(java windows)
    Tomcat(Linux)
    Tomcat(Windows)
    MySql(Windows)
    Java EE API
    计算机网络-TCP三次握手理解
    onclick 和click 的区别
    js轮播图代码
    JS轮播图制作
    js动画原理
  • 原文地址:https://www.cnblogs.com/poi-bolg-poi/p/11278709.html
Copyright © 2011-2022 走看看