bzoj5194: [Usaco2018 Feb]Snow Boots

Posted AKCqhzdy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj5194: [Usaco2018 Feb]Snow Boots相关的知识,希望对你有一定的参考价值。

还真是。。

就是

的t3嘛。。。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;

struct node
{
    int a,id;
}p[110000];
bool cmp1(node n1,node n2){return n1.a>n2.a;}

struct query
{
    int s,d,id;
}q[110000];
bool cmp2(query q1,query q2){return q1.s>q2.s;}

int pre[110000],nxt[110000];
bool as[110000];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%d",&p[i].a), p[i].id=i;
    for(int i=1;i<=m;i++)
        scanf("%d%d",&q[i].s,&q[i].d), q[i].id=i;
    sort(p+1,p+n+1,cmp1);
    sort(q+1,q+m+1,cmp2);
    
    for(int i=1;i<=n;i++)pre[i]=i-1,nxt[i]=i+1;    
    int tp=1,mmax=1;
    for(int i=1;i<=m;i++)
    {
        for(int j=tp;j<=n;j++)
        {
            if(p[j].a<=q[i].s){tp=j;break;}
            nxt[pre[p[j].id]]=nxt[p[j].id];
            pre[nxt[p[j].id]]=pre[p[j].id];
            mmax=max(mmax,nxt[p[j].id]-pre[p[j].id]);
        }
        if(mmax<=q[i].d)as[q[i].id]=true;
        else as[q[i].id]=false;
    }
    for(int i=1;i<=m;i++)
        if(as[i]==true)printf("1\n");
        else printf("0\n");
    return 0;
}

 

以上是关于bzoj5194: [Usaco2018 Feb]Snow Boots的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 3942: [Usaco2015 Feb]Censoring

[BZOJ2591][Usaco 2012 Feb]Nearby Cows

bzoj3940 [Usaco2015 Feb]Censoring

BZOJ 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚

bzoj3940[Usaco2015 Feb]Censoring*

bzoj 1593: [Usaco2008 Feb]Hotel 旅馆