题目链接: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. Highcharts属性中英文参照

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. readline

    注意,向后表示向左,向前表示向右. "\C-f": forward-char 光标向右一个字符 "\C-b": backward-char  光标向左一个字符 ...

  3. HTML5+学习笔记2-------边看代码边研究貌似还是有点问题...还在研究中api中

    // 拍照 function getImage() { outSet( "开始拍照:" ); var cmr = plus.camera.getCamera(); cmr.capt ...

  4. nodejs开发指南读后感

    nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...

  5. 【AngularJS】—— 10 指令的复用

    前面练习了如何自定义指令,这里练习一下指令在不同的控制器中如何复用. —— 来自<慕课网 指令3> 首先看一下一个小例子,通过自定义指令,捕获鼠标事件,并触发控制器中的方法. 单个控制器的 ...

  6. 电脑网线/水晶头的连接方法(A类,B类)

    一般的橙白,橙,绿白,蓝,蓝白,绿,棕白,棕. 若是只有四根线的,则任选四根,做线时对应水晶头的1\2\3\6四个入口压制即可. 如果只有一根网线,但想两台机子同时上网,不增加外设,做网线时45水晶头 ...

  7. DevPress GridControl添加按钮列

    把列的ColumnEdit属性设置为RepositoryItemButtonEdit 把TextEditStyle属性设置为HideTextEditor; 把Buttons的Kind属性设置为Glyp ...

  8. Android自定义对话框(Dialog)位置,大小

    代码: package angel.devil; import android.app.Activity;import android.app.Dialog;import android.os.Bun ...

  9. 汉诺塔(河内塔)算法 ----C语言递归实现

    汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子, 在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺 ...

  10. HDU 1710 二叉树三种遍历

    Binary Tree Traversals Problem Description A binary tree is a finite set of vertices that is either ...