zoukankan      html  css  js  c++  java
  • 2018山东省赛sequence

    2018山东省赛sequence
    因为必须要删除一个数,所以可以计算每个数删除的代价,从而选取代价最小的进行删除
    如果一个数大于它前面的所有数的最小值而小于次小值,删除最小值的代价就要+1;
    如果一个数本身就是good数,那么该数代价就要加一

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<algorithm>
    #include<cmath>
    #include<ctime>
    #include<set>
    #include<map>
    #include<stack>
    #include<cstring>
    #define inf 2147483647
    #define ls rt<<1
    #define rs rt<<1|1
    #define lson ls,nl,mid,l,r
    #define rson rs,mid+1,nr,l,r
    #define N 1000010
    #define For(i,a,b) for(int i=a;i<=b;i++)
    #define p(a) putchar(a)
    #define g() getchar()
    
    using namespace std;
    int T;
    int n;
    int a[N];
    int t[N];
    int Min,Max;
    int ans;
    
    void in(int &x){
        int y=1;
        char c=g();x=0;
        while(c<'0'||c>'9'){
            if(c=='-')y=-1;
            c=g();
        }
        while(c<='9'&&c>='0'){
            x=(x<<1)+(x<<3)+c-'0';c=g();
        }
        x*=y;
    }
    void o(int x){
        if(x<0){
            p('-');
            x=-x;
        }
        if(x>9)o(x/10);
        p(x%10+'0');
    }
    
    void clear(){
        For(i,1,n)
            t[i]=0;
        Min=Max=inf;
    }
    
    int main(){
        in(T);
        while(T--){
            in(n);
            clear();
            For(i,1,n)
                in(a[i]);
            For(i,1,n){
                if(a[i]<Min){
                    Max=Min;
                    Min=a[i];
                }
                else
                    if(a[i]>Min&&a[i]<Max){
                        Max=a[i];
                        t[Min]++;
                        t[a[i]]++;
                    }
                else
                    if(a[i]>Max){
                        t[a[i]]++;
                    }
            }
            Min=inf;
            // For(i,1,n){
            //     o(t[a[i]]);p('
    ');
            // }
            For(i,1,n){
                if(Min>t[a[i]]){
                    Min=t[a[i]];
                    ans=a[i];
                }
                else
                    if(Min==t[a[i]]){
                        if(ans>a[i])
                            ans=a[i];
                    }
            }
            o(ans);p('
    ');
        }
        return 0;
    }
    View Code
  • 相关阅读:
    bzoj2006[NOI2010]超级钢琴
    bzoj1088[SCOI2005]扫雷
    bzoj1207[HNOI2004]打鼹鼠
    bzoj2132圈地计划
    bzoj2127happiness
    bzoj1037[ZJOI2008]生日聚会
    bzoj1031[JSOI2007]字符加密
    bzoj1566[noi2009]管道取珠
    bzoj2134单选错位
    vuejs之v-on小例子之实现购买数量的增加和减少
  • 原文地址:https://www.cnblogs.com/war1111/p/10595645.html
Copyright © 2011-2022 走看看