题目链接: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)的更多相关文章

  1. IntelliJ IDEA 我的配置--留个脚印

    PS:先PS一下汉化包,导致版本从2016.2无法升级到2016.2.1. 卸载!重新从官网下载最新安装包来安装! https://www.jetbrains.com/ 官方有Community和Ul ...

  2. css知识笔记:水平垂直居中(别只看,请实操!!!)

    css实现元素的水平垂直居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目 ...

  3. css知识笔记:垂直居中(别只看,请实操!!!)

    css实现元素的垂直居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目的, ...

  4. css知识笔记:水平居中(别只看,请实操!!!)

    css实现元素的水平居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目的, ...

  5. poj3342Party at Hali-Bula(树形dp)

    /* 树形dp! 判重思路: 当dp[v][0]==dp[v][1]时,很自然,flag[u][0]必然是有两种方案的.flag[u][1]则不然, 因为它只和dp[v][0]有关系.而若flag[v ...

  6. C. Coloring Trees DP

    传送门:http://codeforces.com/problemset/problem/711/C 题目: C. Coloring Trees time limit per test 2 secon ...

  7. Codeforces Round #274 Div.1 C Riding in a Lift --DP

    题意:给定n个楼层,初始在a层,b层不可停留,每次选一个楼层x,当|x-now| < |x-b| 且 x != now 时可达(now表示当前位置),此时记录下x到序列中,走k步,最后问有多少种 ...

  8. hdu 4521 小明系列问题——小明序列(线段树 or DP)

    题目链接:hdu 4521 本是 dp 的变形,却能用线段树,感觉好强大. 由于 n 有 10^5,用普通的 dp,算法时间复杂度为 O(n2),肯定会超时.所以用线段树进行优化.线段树维护的是区间内 ...

  9. hdu 5745 La Vie en rose DP + bitset优化

    http://acm.hdu.edu.cn/showproblem.php?pid=5745 这题好劲爆啊.dp容易想,但是要bitset优化,就想不到了. 先放一个tle的dp.复杂度O(n * m ...

随机推荐

  1. Java字节流:ByteArrayInputStream ByteArrayOutputStream

    ----------------------------------------------------------------------------------- ByteArrayInputSt ...

  2. 基础知识系列☞C#中→属性和字段的区别

    "好吧...准备写个'基础知识系列',算是记录下吧,时时看看,更加加深记忆···" 其实本来准备叫"面试系列"... 字段.属性.你先知道的哪个概念? ***我 ...

  3. Swift2.1 语法指南——可空链式调用

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

  4. 第26天 swift reflect

    1.reflect http://www.jianshu.com/p/b5c87824e33c 2.android studio 2.0项目1.5编译 Cause: com/android/build ...

  5. iOS开发——UI基础-Xcode资源拷贝

    #1.拷贝资源的时候选择的copy的含义: 是否要将资源拷贝一份到项目中, 如果不勾选就代表着不拷贝, 那么原来的资源不见了, 项目中的也不能用了 注意: 1.虽然项目中的图片和外部的图片是同一张图片 ...

  6. 总结六条对我们学习Linux系统有用的忠告

    接触linux需要的是端正自己的态度,这个玩意可不是一天两天就能拿得下的.学习个基础,能装系统.能装常见服务.能编译.能配置存储空间.能配置系统参数.能简单查看系统负载等基本够用.但这些只保证能做机房 ...

  7. jquery版瀑布流

    一个月前用jquery实现了瀑布流效果,看着当时的代码有点难过……今天抽时间稍微修改了一下.额,现在看起来不是那么难受了,就来和大家分享一下.废话不多说,开始正题~ 一.演示效果 二.html代码 & ...

  8. 关闭MyEclipse Derby服务

    MyEclipse的Servers视图出现 MyEclipse Derby服务,一直想把它去掉在网上搜索了下,现已解决. 如下,MyEclipse菜单:window-->Preferences- ...

  9. C++虚函数、虚继承、对象内存模型(转)

    参考:http://blog.csdn.net/hxz_qlh/article/details/14633361 需要注意的是虚继承.多重继承时类的大小.

  10. openstack 常用命令

    转自: docs.openstack.org $ nova boot --image ubuntu-cloudimage --flavor 1 --user-data mydata.file