• luogu P2827 蚯蚓


    #include<stdio.h>
    #include<queue>
    #include<algorithm>
    using namespace std;
    int n;int m;int q;int u;int v;int t;
    queue <int> q1;queue <int> q2;queue <int> q3;
    inline int maxnum()//取最大值的操作
    {
    int res=-0x3f3f3f3f;int num=0;
    if(!q1.empty()&&res<q1.front())res=q1.front(),num=1;
    if(!q2.empty()&&res<q2.front())res=q2.front(),num=2;
    if(!q3.empty()&&res<q3.front())res=q3.front(),num=3;
    if(num==1)q1.pop();
    else if(num==2)q2.pop();
    else if(num==3)q3.pop();
    return res;
    }
    int a[100000];int now;int j;
    int main()
    {
    scanf("%d%d%d%d%d%d",&n,&m,&q,&u,&v,&t);
    for(int i=0;i<n;i++)
    {
    scanf("%d",&a[i]);
    }
    sort(a,a+n);
    for(int i=n-1;i>=0;i--)//倒着扫!(敲黑板)sort最大值在最后
    {
    q1.push(a[i]);
    }
    for(int i=1;i<=m;i++,j+=q)//据说这样可以减少运算,priority_queue想卡常结果失败。。
    {
    int te=maxnum()+j;
    if(i%t==0)printf("%d ",te);
    //printf("ais%d bis%d
    ",t*u/v-i*q,t-t*u/v-i*q);
    int ma=max(1LL*te*u/v-j-q,te-1LL*te*u/v-j-q);q2.push(ma);//大的放q2,小的放q3
    int mi=min(1LL*te*u/v-j-q,te-1LL*te*u/v-j-q);q3.push(mi);
    }
    printf("
    ");
    for(int i=1;!q1.empty()||!q2.empty()||!q3.empty();i++)
    { 
    int res=maxnum();
    if(i%t==0)printf("%d ",res+j);
    }
    return 0;
    }
    View Code
  • 相关阅读:
    SQL Server 存储过程
    String.format Tutorial
    第五次
    第四次
    第三次
    第一次作业
    第二次
    c/c++
    HelloWorld出现的问题
    Android系统架构
  • 原文地址:https://www.cnblogs.com/Dream-Runner/p/10152764.html
Copyright © 2020-2023  润新知