题目描述
假期共有 n 天,每天可以在三件事中选择做一件事:
- 如果在第 i 天选择玩耍,则可以获得 xi 点分数
- 如果在第 i 天选择刷题,则可以获得 yi 点分数
- 如果在第 i 天选择躺平,则可以获得 zi 点分数
如果要求每天做的事情不能与前一天相同,则如何安排假期的活动,才能使得分数之和达到最大?
输入格式
- 第一行:单个整数 n
- 第二行到第 n+1 行:第 i+1 行有三个整数 xi,yi 与 zi。
输出格式
- 单个整数:表示最大分数
数据范围
- 30% 的分数,1≤n≤10
- 60% 的分数,1≤n≤300
- 100% 的分数,1≤n≤200,000
- 0≤xi≤10,000
- 0≤yi≤10,000
- 0≤zi≤10,000
样例数据
输入:
3
100 1 1
1 100 1
1 1 100
输出:
300
思路:动态规划
代码
#include<bits/stdc++.h>
using namespace std;
int dp[200005][4];
int X[200005],Y[200005],Z[200005];
int main()
{
int n;
cin >> n;
for(int i = 1; i <