zoukankan      html  css  js  c++  java
  • 蚯蚓

    Noip2016 day2t3

    蚯蚓

    蚯蚓在noip好像是个神宠。这次是被切了,开三个队列,q[3][1000010],q[0]代表没有被切的,q[1]表示切的p部分,q[2]表示(1-p)部分,q[1],q[2]能够保证单调不增,q[0]从大到小排序,每次比队首即可,这里用懒惰标记的思想,用add累加,放回去的时候,再减去。

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,len,u,v,t,add,q[3][10000010],head[3],tail[3];
    void in(int &x)
    {
        char c=getchar();x=0;
        while(c<'0'||c>'9')c=getchar();
        while(c<='9'&&c>='0')x=x*10+c-'0',c=getchar();
    }
    
    void out(int x)
    {
        if(x>9)out(x/10);
        putchar(x%10+'0');
    }
    
    bool cmp(int x,int y) 
    {
    return x>y;    
    }
    
    int main()
    {
      memset(q,-0x7f,sizeof(q));
      in(n),in(m),in(len),in(u),in(v),in(t);
      long long x;
      int xx;
      for(int i=1;i<=n;i++)
      {
          in(xx);
          q[0][i]=xx;
      }
      sort(q[0]+1,q[0]+n+1,cmp);
      head[0]=head[1]=head[2]=1;
      tail[0]=n;
      long long  Max;
      long long l,r;
      for(int i=1;i<=m;i++)
      {
          Max=q[0][head[0]]>=q[1][head[1]]?0:1;
          Max=q[Max][head[Max]]>=q[2][head[2]]?Max:2;
          x=q[Max][head[Max]++]+add;
          if(i%t==0)
          out(x),putchar(' ');
          l=x*u/v;
          r=x-l;
          q[1][++tail[1]]=l-add-len;
          q[2][++tail[2]]=r-add-len;
          add+=len;
      }
      putchar('
    ');
      for(int i=1;i<=m+n;i++)
      {
           Max=q[0][head[0]]>=q[1][head[1]]?0:1;
           Max=q[Max][head[Max]]>=q[2][head[2]]?Max:2;
           x=q[Max][head[Max]++];
           if(i%t==0)
           out(x+add),putchar(' ');
      }
      return 0;
    }
  • 相关阅读:
    Java Web之Tomcat
    Java Web之HTML5
    Java 读取propertoes文件
    SQL Server 触发器
    通过关闭 UseDNS和GSSAPIAuthentication选项加速 SSH登录
    数据库创建索引有什么优点和缺点
    修改查看MYSQL字符集(charset)
    MySQL 数据类型
    远程连接mysql数据库提示:ERROR 1130的解决办法
    怎么快速了解自己的MySQL服务器?
  • 原文地址:https://www.cnblogs.com/war1111/p/7426733.html
Copyright © 2011-2022 走看看