Vacation

image

用dp[i][j] 表示第i天选了j类型的最大值

image

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
vector<int>a[N];
int dp[N][3];
void solve(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=3;j++){
			int x;
			cin>>x;
			a[i].push_back(x);
		}
	}
    for(int i=1;i<=n;i++){
    	dp[i][0]=max(dp[i][0],max(dp[i-1][1]+a[i][0],dp[i-1][2]+a[i][0]));
    	dp[i][1]=max(dp[i][1],max(dp[i-1][0]+a[i][1],dp[i-1][2]+a[i][1]));
    	dp[i][2]=max(dp[i][2],max(dp[i-1][0]+a[i][2],dp[i-1][1]+a[i][2]));
	}
	int ans=0;
	ans=max(dp[n][0],max(dp[n][1],dp[n][2]));
	cout<<ans;
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	//cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
} 
posted @ 2023-12-24 13:11  yufan1102  阅读(5)  评论(0编辑  收藏  举报