首页 > 其他分享 >P1541

P1541

时间:2024-10-11 19:11:24浏览次数:4  
标签:int 45 cin P1541 tie NULL dp

简单四维dp。

#include<bits/stdc++.h>
using namespace std;
int a[355],b,t[5],dp[45][45][45][45];
int main(){
	ios::sync_with_stdio(0);
	cin.tie(NULL);
	cout.tie(NULL);
	int n,m,r;
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	dp[0][0][0][0]=a[1];
	for(int i=1;i<=m;i++)cin>>b,t[b]++;
	for(int i=0;i<=t[1];i++){
		for(int j=0;j<=t[2];j++){
			for(int k=0;k<=t[3];k++){
				for(int l=0;l<=t[4];l++){
					r=1+i+j*2+k*3+l*4;
					if(i!=0)dp[i][j][k][l]=max(dp[i][j][k][l],dp[i-1][j][k][l]+a[r]); 
					if(j!=0)dp[i][j][k][l]=max(dp[i][j][k][l],dp[i][j-1][k][l]+a[r]);
					if(k!=0)dp[i][j][k][l]=max(dp[i][j][k][l],dp[i][j][k-1][l]+a[r]);
					if(l!=0)dp[i][j][k][l]=max(dp[i][j][k][l],dp[i][j][k][l-1]+a[r]);
				}
			}
		}
	}
	cout<<dp[t[1]][t[2]][t[3]][t[4]];
} 

标签:int,45,cin,P1541,tie,NULL,dp
From: https://www.cnblogs.com/zan-mei-tai-yang/p/18459086

相关文章

  • P1541 [NOIP2010 提高组] 乌龟棋题解
    有两种方法,代码注释都很详细了直接上代码一:记忆化搜索#include<bits/stdc++.h>usingnamespacestd;intt[15];intn,m;inta[400];intmp[45][45][45][45];//mp[i][j][k][l]表示1号用i张,2号用j张,3号用k张,4号用l张的情况下,最多能拿多少分intdfs(intstep,intw)//step......
  • P1541-DP【绿】
    刚开始理解错题意了,题中说“玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片”指的是不能用同一张卡片,我给理解成不能连续用同一种卡片了。后来想想其实题目中的说法歧义不大,是我粗心才导致看错的。最终我看错的导致了题目难度更高一些,偏偏写完了更高难度的题之......
  • P1541 乌龟棋
    P1541乌龟棋题意:一共有\(N\)个格子,每个格子上有一个分数,一共有四种卡牌:\(1,2,3,4\),使用一种卡牌之后,乌龟将前进对应的长度。每张卡牌只能使用一次,乌龟的起点为\(......
  • P1541 [NOIP2010 提高组] 乌龟棋
    [NOIP2010提高组]乌龟棋题目背景小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。题目描述乌龟棋的棋盘是一行\(N\)个格子,每个格子上一个分数(非负整数)。棋盘第1格是......
  • 做题记录整理dp1 P1541. [NOIP2010 提高组] 乌龟棋(2022/9/20)
    P1541.[NOIP2010提高组]乌龟棋把每个牌选多少个塞进dp的四个维度里,就可以做到无后效性了#include<bits/stdc++.h>usingnamespacestd;#definefor1(i,a,b)for(ll......