zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    换零钱问题
    candy
    动态规划之最长上升子序列
    宗成庆自然语言理解笔记 02 数学基础
    宗成庆自然语言理解笔记 01 绪论
    single-number
    single-number-ii
    菜鸟学开店—自带U盘的打印机
    菜鸟学开店—最简收银POS系统
    菜鸟学开店—电子称连接标签打印机
  • 原文地址:https://www.cnblogs.com/Dream-Runner/p/10152764.html
Copyright © 2011-2022 走看看