• 单调队列动态规划2——P1725 琪露诺(没有被R>=2*L的数据hack)


    没有被hack,因为前面一段不是预处理的,不会出现跑不到的点dp有值的情况

    #include<cstdio>
    #include<cstring>
    #include<deque>
    #include<cstdlib>
    #define MAXN 200005
    
    inline int max(int x,int y){return x>y?x:y;}
    
    int n,l,r,ans,a[MAXN],dp[MAXN];
    
    std::deque<int> q;
    
    int main(){
    	memset(dp,-0x3f,sizeof(dp));
    	scanf("%d%d%d",&n,&l,&r);
    	for(int i=0;i<=n;i++){
            scanf("%d",&a[i]);
        }
    	q.push_back(0);dp[0]=0;
    	for(int i=l;i<=n;i++){
    		while(!q.empty()&&dp[q.back()]<dp[i-l])q.pop_back();
    		q.push_back(i-l);//先入队 
    		while(!q.empty()&&q.front()<i-r)q.pop_front();
    		int u=q.front();
    		dp[i]=dp[u]+a[i];
    	//	printf("%d %d %d
    ",u,i,dp[i]);
    	}
    	for(int i=n-r+1;i<=n;i++)ans=max(ans,dp[i]);
    	printf("%d
    ",ans);
    }
    

    写的真丑,但是真的短

    话说这题为什么是绿题啊,明明修剪草坪都是蓝

  • 相关阅读:
    sqlhelper类
    嵌入式的n个方向
    study vim + cscope
    mail lists
    关于我的学习
    yahoo enter linux mobile competition
    找工作啦 啦啦啦啦啦
    minicom display unsolicited codes
    并购的年代
    配置rt73无线网卡至suse10.3
  • 原文地址:https://www.cnblogs.com/Y15BeTa/p/11797268.html
Copyright © 2020-2023  润新知