Atcoder C - Vacation ( DP )
C - Vacation
Time Limit: 2 sec / Memory Limit: 1024 MB
Score : 100100 points
Problem Statement
Taro's summer vacation starts tomorrow, and he has decided to make plans for it now.
The vacation consists of NN days. For each ii (1≤i≤N1≤i≤N), Taro will choose one of the following activities and do it on the ii-th day:
- A: Swim in the sea. Gain aiai points of happiness.
- B: Catch bugs in the mountains. Gain bibi points of happiness.
- C: Do homework at home. Gain cici points of happiness.
As Taro gets bored easily, he cannot do the same activities for two or more consecutive days.
Find the maximum possible total points of happiness that Taro gains.
Constraints
- All values in input are integers.
- 1≤N≤1051≤N≤105
- 1≤ai,bi,ci≤1041≤ai,bi,ci≤104
Input
Input is given from Standard Input in the following format:
NN
a1a1 b1b1 c1c1
a2a2 b2b2 c2c2
::
aNaN bNbN cNcN
Output
Print the maximum possible total points of happiness that Taro gains.
Sample Input 1 Copy
3
10 40 70
20 50 80
30 60 90
Sample Output 1 Copy
210
If Taro does activities in the order C, B, C, he will gain 70+50+90=21070+50+90=210 points of happiness.
Sample Input 2 Copy
1
100 10 1
Sample Output 2 Copy
100
Sample Input 3 Copy
7
6 7 8
8 8 3
2 5 2
7 8 6
4 6 8
2 3 4
7 5 1
Sample Output 3 Copy
46
Taro should do activities in the order C, A, B, A, C, B, A
题意:裸的DP题意,题面单词很简单。
思路:下一个状态选上一个状态中的不和自己相同的那两个中的最大值。
转移方程可以见代码。
我的AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repd(i,x,n) for(int i=x;i<=n;i++)
#define pii pair<int,int>
#define pll pair<long long ,long long>
#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MS0(X) memset((X), 0, sizeof((X)))
#define MSC0(X) memset((X), '\0', sizeof((X)))
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define gg(x) getInt(&x)
using namespace std;
typedef long long ll;
inline void getInt(int* p);
const int maxn=;
const int inf=0x3f3f3f3f;
/*** TEMPLATE CODE * * STARTS HERE ***/
ll n;
ll a[maxn];
ll b[maxn];
ll c[maxn];
ll dp[maxn][]; int main()
{
gbtb;
cin>>n;
repd(i,,n)
{
cin>>a[i]>>b[i]>>c[i];
}
dp[][]=a[];
dp[][]=b[];
dp[][]=c[];
repd(i,,n)
{
dp[i][]+=max(dp[i-][],dp[i-][])+a[i];
dp[i][]+=max(dp[i-][],dp[i-][])+b[i];
dp[i][]+=max(dp[i-][],dp[i-][])+c[i];
}
cout<<max(dp[n][],max(dp[n][],dp[n][]));
return ;
} inline void getInt(int* p) {
char ch;
do {
ch = getchar();
} while (ch == ' ' || ch == '\n');
if (ch == '-') {
*p = -(getchar() - '');
while ((ch = getchar()) >= '' && ch <= '') {
*p = *p * - ch + '';
}
}
else {
*p = ch - '';
while ((ch = getchar()) >= '' && ch <= '') {
*p = *p * + ch - '';
}
}
}
Atcoder C - Vacation ( DP )的更多相关文章
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- 初探动态规划(DP)
学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...
- Tour(dp)
Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...
- Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)
Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...
- 最长公共子序列长度(dp)
/// 求两个字符串的最大公共子序列长度,最长公共子序列则并不要求连续,但要求前后顺序(dp) #include <bits/stdc++.h> using namespace std; ...
随机推荐
- 菜鸟水平如何在Android Studio中添加uiautomator测试框架
1.启动AS,弹出创建Android Studio项目 2.选择 "Start a new Android Studio project",输入 application name ...
- swift 该死的派发机制--待完成
swift 该死的派发机制 final static oc类型 多态类型 静态类型 动态函数 静态函数 nsobject: 1.缺省不再使用oc的动态派发机制: 2.可以使用nsobject暴露出来 ...
- BZOJ1041:[HAOI2008]圆上的整点(数论)
Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...
- 使用RMAN Active duplicate创建异地auxiliary Database
1g的RMAN duplicate 可以通过Active database duplicate和Backup-based duplicate两种方法实现.这里的测试使用的是Active databas ...
- java实现文件监控
文件监控器: package testfile; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import ...
- Linux系统学习之正则表达式
一.基础的正则表达式 1."."(一个点)符号 点符号用于U匹配除换行符号之外的任意一个字符.例如:r.t可以匹配rot.rut,但是不能匹配root,但如果使用r..t,就可以匹 ...
- java 二维数组和对象数组
1.二维数组:二维数组就是存储一维数组(内存地址/引用)的数组 2.二维数组的初始化 1) int intA[][]={{1,2},{2,3},{3,4,5}}; 2) int [][] intB=n ...
- android精品开源项目整理
转载地址:http://www.eoeandroid.com/thread-311366-1-1.html 前言:无论你是android的初学者,还有是Android开发了好多年的高手,可能都会有很多 ...
- 2-微信小程序开发(开发界面说明,按钮点击切换显示内容)
说一个功能,大家在用微信实现控制设备的时候,是不是都在为绑定设备发愁. 我看了很多厂家的微信控制,大部分都只是可以用微信给设备配网,但是没有做用微信绑定的. 一般做绑定都是用设备的MAC地址. 这里我 ...
- 《MySQL必知必会》[05] 存储过程和游标
1.存储过程 存储过程是什么,简单来讲,就像Java中的方法(函数),不过它是SQL世界中的方法. 大部分时候,我们所使用都是单条SQL,用来针对一个或多表连接.但是也有情况,是据判断先对表A执行操作 ...