码迷,mamicode.com
首页 > 其他好文 > 详细

luogu P3572 [POI2014]PTA-Little Bird 单调队列优化dp

时间:2020-06-03 13:40:21      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:res   read   getch   ttl   tchar   cst   poi   amp   class   

#include <cstdio>
#include <iostream>
using namespace std;
int n,m,x;
int hh,tt,a[1000001],q[1000001],f[1000001];
int read()
{
    char ch=getchar();
    int res=0,w=1;
    while(ch<0||ch>9)
    {
        if(ch==-) w=-1;
        ch=getchar();
    }
    while(ch>=0&&ch<=9)
    {
        res=res*10+ch-0;
        ch=getchar();
    }
    return res*w;
}
int main()
{
    n=read();
    for(register int i=1; i<=n; i++) 
        a[i]=read();
    m=read();
    while(m--)
    {
        x=read();
        hh=tt=1;
        q[tt++]=1;
        for(register int i=2; i<=n; i++)
        {
            while(hh<tt&&i-q[hh]>x)
                hh++;
            if(a[q[hh]]>a[i])
                f[i]=f[q[hh]];
            else
                f[i]=f[q[hh]]+1;
            //                                                        维护递减的 
            while(hh<=tt&&(f[q[tt-1]]>f[i]||(f[q[tt-1]]==f[i]&&a[q[tt-1]]<=a[i])))
                tt--;
            q[tt++]=i;
        }
        printf("%d\n",f[n]);
    }
    return 0;
}

 

luogu P3572 [POI2014]PTA-Little Bird 单调队列优化dp

标签:res   read   getch   ttl   tchar   cst   poi   amp   class   

原文地址:https://www.cnblogs.com/QingyuYYYYY/p/13036916.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!