zoukankan      html  css  js  c++  java
  • [題解](單調隊列/水)luogu_P3088擠奶牛

    d長度內區間最大值,單調隊列維護即可

    由於需要滿足左右同時有2倍高度的牛才能更新答案,所以正反跑兩次

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=50010;
    int n,d,ans;
    struct node{
        int x,h;
    }a[maxn];
    int q[maxn],head=1,tail=0;
    bool f[maxn];
    bool cmp(node a,node b){
        return a.x<b.x;
    }
    int main()
    {
        scanf("%d%d",&n,&d);
        for(int i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].h);
        sort(a+1,a+1+n,cmp);
        for(int i=1;i<=n;i++){
            while(head<=tail && a[i].x-a[q[head]].x>d)head++;
            while(head<=tail && a[q[tail]].h<=a[i].h)tail--;
            q[++tail]=i;
            if(a[q[head]].h>=a[i].h*2)f[i]=1;
        }
        head=1,tail=0;
        for(int i=n;i>=1;i--){
            while(head<=tail && a[q[head]].x-a[i].x>d)head++;
            while(head<=tail && a[q[tail]].h<=a[i].h)tail--;
            q[++tail]=i;
            if(a[q[head]].h>=a[i].h*2 && f[i])ans++;
        }
        printf("%d",ans);
    }
  • 相关阅读:
    js:DOM及其操作2
    js:DOM及其操作
    闭包,作用域,作用域链
    面向对象
    关于typeof
    javascript正则表达式&关键词检索
    关于StringAPI
    mybatis Invalid bound statement (not found)
    全国区域数据
    redis 问题整理
  • 原文地址:https://www.cnblogs.com/superminivan/p/10758225.html
Copyright © 2011-2022 走看看