zoukankan      html  css  js  c++  java
  • P5858 「SWTR-03」Golden Sword

    Jennie

    一个比较水的动态规划

    (dp[i][j]=max(dp[i][j],dp[i-1][k])+a_i*jquad kin [j-1,j-1+s])

    然后这个玩意可以用有限队列

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    #define int long long
    using namespace std;
    int n,w,s;
    int a[100001];
    int dp[5005][5005];
    deque<int> q;
    int ans=-1008600110086001;
    signed main(){
    	scanf("%lld%lld%lld",&n,&w,&s);
    	for(int i=1;i<=n;++i){
    		scanf("%lld",&a[i]);
    	}
    	memset(dp,-0x3f,sizeof(dp));
    	dp[0][0]=0;
    	for(int i=1;i<=n;++i){
    		int r=0;
    		for(int j=1;j<=min(i,w);++j){
    			while(!q.empty()&&q.front()<j-1){
    					q.pop_front();
    				}
    			while(r<=w&&r<=j-1+s){
    				while(!q.empty()&&dp[i-1][q.back()]<=dp[i-1][r]){
    					q.pop_back();
    				}
    				q.push_back(r);
    				r++;
    			}
    			dp[i][j]=dp[i-1][q.front()]+a[i]*j;
    		}
    		while(!q.empty())
    		q.pop_back();
    	}
    	for(int i=1;i<=w;++i){
    		ans=max(ans,dp[n][i]);
    		//cout<<dp[n][i]<<endl;
    	}
    	cout<<ans;
    	return 0;
    }
    
  • 相关阅读:
    jQuery的面试题
    DOM面试题
    JavaScript高级
    Bootstrap面试题
    ajax面试题
    CSS3面试题
    MySQL的列约束
    MySQL数据库介绍
    java数据类型之间的转换
    java中变量和标识符名命名规范
  • 原文地址:https://www.cnblogs.com/For-Miku/p/15260191.html
Copyright © 2011-2022 走看看