zoukankan      html  css  js  c++  java
  • 2019东北农业大学省赛积分赛第二场订正(b,k)

    b题

    只需要把递增的地方累加起来,最后加上最大值减去最后一点的值即可

    ac代码

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int a[100005];
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int n;
            int ans=0;
            int Max=0;
            a[0]=1e13+1000;
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
            for(int i=1;i<=n;i++)
            {
                if(a[i]>a[i-1])  ans+=a[i]-a[i-1];
                Max=max(Max,a[i]);
            }
            if(a[n]!=Max) ans+=Max-a[n];
            printf("%d
    ",ans);
        }
    }

    k题

    去掉m个字母保持字典序最小

    在m未耗尽之前保持双端队列内的字母为递增

    最后若m若有剩余 队列内的字母一定是非递减的 只需去掉后m个即可

    #include<cstdio>
    #include<algorithm>
    #include<queue>
    #include<string>
    #include<iostream>
    #include<list>
    #include<stack>
    #include<deque>
    using namespace std;
    char tmp[100005];
    int main()
    {
        //freopen("in.txt","r",stdin);
        int t;
        scanf("%d",&t);
        while(t--)
        {
            deque<char>s;
            int n,m;
            scanf("%d%d",&n,&m);
            scanf("%s",tmp+1);
            for(int i=1; i<=n; i++)
            {
                while(s.size()&&s.back()>tmp[i]&&m>0) s.pop_back(),m--;
                s.push_back(tmp[i]);
            }
            //cout<<m<<endl;
            while(s.size()>m) printf("%c",s.front()),s.pop_front();
            printf("
    ");
            if(!s.empty()) s.pop_front();
        }
    }
  • 相关阅读:
    leetCode-Two Sum
    leetCode-Pascal's Triangle II
    leetCode-Maximum Average Subarray I
    css 实现垂直水平居中
    poping 心法
    我的机密
    MSMQ消息队列的使用
    生成最大单号 scope_identity
    sqlserver ADO.net 查询数据库加锁,事务提交
    漂亮的JS插件
  • 原文地址:https://www.cnblogs.com/caowenbo/p/11852321.html
Copyright © 2011-2022 走看看