留只脚印(DP)
题目链接:http://codeforces.com/problemset/problem/698/A
很久很久没做咯~~~~
dp 是个很神奇的东西。。。。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; const int max_day = + ;
const int max_option = ; int dp[max_day][max_option];
// 0:rest 1:contest/rest
// 2:sport/rest 3:sport/contest/rest int main()
{
int n, a;
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif // ONLINE_JUDGE
while (scanf("%d", &n) != EOF) {
memset(dp, , sizeof(dp)); for (int i = ; i <= n; i++) {
scanf("%d", &a); // 呢个野要时时刻刻更新,选择最优来更新,甘样就保证到 dp[i][1]和dp[i][2]都系最好噶啦
dp[i][] = max(dp[i-][], max(dp[i-][], dp[i-][]));
if (a == || a == ) {
dp[i][] = max(dp[i-][], dp[i-][]) + ; // +1 写出边,重要的事情说3遍!!!
} if (a == || a == ) {
dp[i][] = max(dp[i-][], dp[i-][]) + ;
}
// printf("dp[%d][0]=%d, dp[%d][1]=%d, dp[%d][2]=%d\n", i, dp[i][0], i,dp[i][1], i,dp[i][2]);
} printf("%d\n", n-max(dp[n][], max(dp[n][], dp[n][]))); /* 写错晒了。。。。脑退化 = =,好彩总算知道,dp[i][3] 系无鬼用的,后来知道左,改翻岩呢个细节,靠~ = =
for (int i = 1; i <= n; i++) {
// dp[i][3] = max(dp[i-1][2], dp[i-1][1]) + 1;
if (a[i] == 1) { // contest
dp[i][0] = dp[i][1] = dp[i-1][2]+1;
dp[i][2] = dp[i-1][2];
}
else if (a[i] == 2) { // sport
dp[i][0] = dp[i][2] = dp[i-1][1]+1;
dp[i][1] = dp[i-1][1];
// printf("dp[%d][2] = %d\n", i, dp[i][2]);
}
else if (a[i] == 0) { // rest
dp[i][0] = dp[i-1][0];
dp[i][1] = dp[i-1][1];
dp[i][2] = dp[i-1][2];
// printf("dp[%d][0] = %d\n", i, dp[i][0]);
}
else { // a[i] = 3 // s/r/c
if (a[i-1] == 2) {
dp[i][1] = dp[i-1][1] + 1;
dp[i][2] = dp[i-1][2];
dp[i][0] = dp[i-1][0];
}
else if (a[i-1] == 1) {
dp[i][2] = dp[i-1][2] + 1;
dp[i][0] = dp[i-1][0];
dp[i][1] = dp[i-1][1];
} /*
if (a[i-1] == 0) {
dp[i][3] = dp[i-1][0];
}
else if (a[i-1] == 1) {
dp[i][3] = dp[i-1][2]+1;
}
else if (a[i-1] == 2) {
dp[i][3] = dp[i-1][1]+1;
}
else {
dp[i][3] = max(dp[i-1][2], dp[i-1][1]) + 1;
} // }
printf("dp[%d][0] = %d\n", i, dp[i][0]);
printf("dp[%d][1] = %d\n", i, dp[i][1]);
printf("dp[%d][2] = %d\n", i, dp[i][2]);
}
printf("\ndp[%d][0]=%d, dp[%d][1]=%d, dp[%d][2]=%d\n", n, dp[n][0], n,dp[n][1], n,dp[n][2]);
*/
}
return ; }
留只脚印(DP)的更多相关文章
- IntelliJ IDEA 我的配置--留个脚印
PS:先PS一下汉化包,导致版本从2016.2无法升级到2016.2.1. 卸载!重新从官网下载最新安装包来安装! https://www.jetbrains.com/ 官方有Community和Ul ...
- css知识笔记:水平垂直居中(别只看,请实操!!!)
css实现元素的水平垂直居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目 ...
- css知识笔记:垂直居中(别只看,请实操!!!)
css实现元素的垂直居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目的, ...
- css知识笔记:水平居中(别只看,请实操!!!)
css实现元素的水平居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目的, ...
- poj3342Party at Hali-Bula(树形dp)
/* 树形dp! 判重思路: 当dp[v][0]==dp[v][1]时,很自然,flag[u][0]必然是有两种方案的.flag[u][1]则不然, 因为它只和dp[v][0]有关系.而若flag[v ...
- C. Coloring Trees DP
传送门:http://codeforces.com/problemset/problem/711/C 题目: C. Coloring Trees time limit per test 2 secon ...
- Codeforces Round #274 Div.1 C Riding in a Lift --DP
题意:给定n个楼层,初始在a层,b层不可停留,每次选一个楼层x,当|x-now| < |x-b| 且 x != now 时可达(now表示当前位置),此时记录下x到序列中,走k步,最后问有多少种 ...
- hdu 4521 小明系列问题——小明序列(线段树 or DP)
题目链接:hdu 4521 本是 dp 的变形,却能用线段树,感觉好强大. 由于 n 有 10^5,用普通的 dp,算法时间复杂度为 O(n2),肯定会超时.所以用线段树进行优化.线段树维护的是区间内 ...
- hdu 5745 La Vie en rose DP + bitset优化
http://acm.hdu.edu.cn/showproblem.php?pid=5745 这题好劲爆啊.dp容易想,但是要bitset优化,就想不到了. 先放一个tle的dp.复杂度O(n * m ...
随机推荐
- 详解CSS中clear属性both、left、right值的含义
前几天一朋友在群里问clear:left的意思,我以为是简单的清除浮动问题,就让他百度"清除浮动",导致中间有点小误会.后来我按照他写的DEMO,发现我自己也没完全理解clear: ...
- 1.交通聚类:编辑距离 (Levenshtein距离)Java实现
1.最近工作中要实现用户车辆的行驶路线的聚类,由于所给的数据只有用户一天中交通卡口所监视的卡口名称 :即青岛路-威海路-济阳路 . 要通过聚类实现车辆路线的规律分析,首先要解决的是相似度问题,我们知道 ...
- Hadoop 面试题redis
Hadoop 面试题之十 548.redis有什么特别之处,为什么用redis,用hbase 不行么? 答:redis 是基于内存的数据库,速度快 551.redis用什么版本? 3.0以上才支持集群 ...
- Ubuntu 如何开启 SSH ?
1.安装SS sudo apt-get install openssh-client # 用来登录别的机器的SSH sudo apt-get install openssh-server # 用来开放 ...
- H53D旋转-遁地龙卷风
(-1)写在前面 首先图片是我从互联网上下载的,向这位前辈致敬.我用的是chrome49,没有加不同浏览器的前缀,jquery3.0,图片资源放在了我的百度云盘上http://pan.baidu.co ...
- FadeTop – 定时休息提醒工具
FadeTop 是款定时休息提醒工具,其特色是当设定时间到达时,将桌面渐变为指定的颜色,强制提醒但不影响桌面的任何操作 FadeTop is a visual break reminder for W ...
- Android 分享一个SharedPreferences的工具类,方便保存数据
我们平常保存一些数据,都会用到SharedPreferences,他是保存在手机里面的,具体路径是data/data/你的包名/shared_prefs/保存的文件名.xml, SharedPrefe ...
- iOS开发——UI基础-UIImage,UIImageView的使用
1.UIImage 创建UIImage的两种方法 UIImage *image = [UIImage imageNamed:imageNmae]; UIImage *image = [UIImage ...
- CSS继承总结
CSS的一个重要特征就是继承,它是依赖于祖先-后代的关系的.继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代. CSS可以继承的属性有: 1.文字相关:font-famil ...
- leetcode 124. Binary Tree Maximum Path Sum
Given a binary tree, find the maximum path sum. For this problem, a path is defined as any sequence ...