zoukankan      html  css  js  c++  java
  • codeforce 896B

    我们发现我们要维护一个单调栈,我们可以采取以下策略:

     我们始终维护其满足单调性。 我们发现一个位置最多可以更新c次。所以我们要C*n次。

    但是我们发现这玩意有两头:

    我们同时维护2个单调栈就可以了。

    我们每次拿进来一个数,如果其小于c/2,将其扔右边,若大于c/2,扔左边就好了。

    我们可以证明其小于C/2*N

    #include<bits/stdc++.h>
    #define sight(c) ('0'<=c&&c<='9')
    inline void read(int &x){
        static char c;
        for (c=getchar();!sight(c);c=getchar());
        for (x=0;sight(c);c=getchar())x=x*10+c-48;
    }
    using namespace std;
    void write(int x){if (x<10) {putchar('0'+x); return;} write(x/10); putchar('0'+x%10);}
    inline void writel(int x){ puts("rrsb:");if (x<0) putchar('-'),x*=-1; write(x); putchar('
    '); }
    int n,m,c,to1,tot,a[6007],x;
    signed main () {
        read(n); read(m); read(c); a[0]=-100007;a[++n]=1000007; to1=n; 
        while (tot+1<to1) {
            read(x);
            if (x<=c/2) {
                for (int i=tot;~i;i--) if (a[i]<=x) { a[i+1]=x; writel(i+1);fflush(stdout);break;}
                if (a[tot+1]) tot++;
            } else {
                for (int i=to1;i<=n;i++) if (a[i]>=x) {a[i-1]=x;writel(i-1);fflush(stdout);break;}
                if (a[to1-1]) to1--;
            }
        } return 0;
    }
  • 相关阅读:
    如何安装树莓派虚拟机
    树莓派3用create_ap变身无线AP
    Centos 安装golang beego
    Lua中调用C函数
    C++ 用libcurl库进行http通讯网络编程(转)
    SkipList 跳表
    ntohs, ntohl, htons,htonl的比较和详解【转】
    SQLITE3 使用总结(转)
    mysql基础认识1
    mysql 数据类型
  • 原文地址:https://www.cnblogs.com/rrsb/p/8318848.html
Copyright © 2011-2022 走看看