蚯蚓

蚯蚓

https://ac.nowcoder.com/acm/problem/16430

题意:
有n条蚯蚓,在m秒内每一秒选择最长的一条蚯蚓分成二份,其余蚯蚓增长q长度,然后按要求输出。

思路:
用二个队列进行模拟,维护二个队列的单调性,一个队列加入长的,另一个队列加入短的,这样二个队列就是单调的,队列中保持0时刻的长度。

代码:
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const ll inf=1e12;

ll a[100005];

bool cmp(ll a,ll b)
{
    return a>b;
}

int main()
{
    int n, m, q, u, v, t;
    scanf("%d%d%d%d%d%d",&n,&m,&q,&u,&v,&t);
    double p=u*1.0/v;
    queue <ll>q1, q2;
    for(int i=0;i<n;i++)
    {
        scanf("%lld",&a[i]);
    }
    sort(a,a+n,cmp);
    int ji=0;
    for(int i=1;i<=m;i++)
    {
        ll ma=-inf;
        if(ji<n)
        {
            ma=max(a[ji],ma);
        }
        if(!q1.empty())
        {
            ma=max(q1.front(),ma);
        }
        if(!q2.empty())
        {
            ma=max(q2.front(),ma);
        }
        if(ji<n&&ma==a[ji])
        {
            ji++;
        }
        else if(!q1.empty()&&q1.front()==ma)
        {
            q1.pop();
        }
        else
        {
            q2.pop();
        }
        ma=ma+(i-1)*q;
        if(i%t==0)
        {
            //printf("i=%lld t=%d\n",i,t);
            printf("%lld%c",ma,m/t==i/t?'\n':' ');
        }
        ll l=floor(ma*p), r=ma-l;
        q1.push(l-i*q);
        q2.push(r-i*q);
    }
    if(m<t)
    {
        printf("\n");
    }
    for(int i=1;i<=m+n;i++)
    {
        ll ma=-inf;
        if(ji<n)
        {
            ma=max(a[ji],ma);
        }
        if(!q1.empty())
        {
            ma=max(q1.front(),ma);
        }
        if(!q2.empty())
        {
            ma=max(q2.front(),ma);
        }
        if(ji<n&&ma==a[ji])
        {
            ji++;
        }
        else if(!q1.empty()&&q1.front()==ma)
        {
            q1.pop();
        }
        else
        {
            q2.pop();
        }
        ma=ma+m*q;
        if(i%t==0)
        {
            printf("%lld%c",ma,(m+n)/t==i/t?'\n':' ');
        }
    }
    if(m+n<t)
    {
        printf("\n");
    }
    return 0;
}
	

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 13:47
机械打工仔:你自己匿名可以,这么好的公司就别给它匿名了
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务