留只脚印(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 ...
随机推荐
- shell 脚本样例
1 解压文件,移动文件,删除特定目录 #!/bin/bash pa=$(cd ``; pwd) //获得当前目录的绝对路径 v_dir=${pa} mkdir ${v_dir} dirDist=${ ...
- php-fpm服务启动脚本
在php-fpm还是打补丁的时候,php-fpm重启只需要执行php-fpm restart或者reload, 自从php5.3之后,php-fpm的启动和停止显得比较麻烦,特意改写了一份nginx的 ...
- 让我们一起学Node.js-文章列表
新浪的博客最近不给力,只好在博客园落个窝.至此之后,技术随笔会在博客园以及新浪的博客上同时更新,如果新浪给力的话~~~ 如果你想看先前新浪博客上分享的技术,请点击此处 忘尘子新浪博客! 我是拜读了朴灵 ...
- C#中的那些全局异常捕获
1.WPF全局捕获异常 public partial class App : Application { public App() { // 在异 ...
- linux配置java环境变量
linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...
- mysql explain用法和结果的含义
重点是第二种用法,需要深入的了解. 先看一个例子: mysql> explain select * from t_order; +----+-------------+---------+--- ...
- 比较两个数据库表table结构不同之处
/*--比较两个数据库的表字段差异 hy 适用多种版本库 --*/ /*--调用示例 exec p_comparestructure 'database1','database2' --*/ ) dr ...
- Android Fragment完全解析,关于碎片你所需知道的一切
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8881711 我们都知道,Android上的界面展示都是通过Activity实现的, ...
- Linus爱GPL 但不喜欢GPL诉讼
导读 在上周多伦多举行的LinuxCon NA会议上,Linus Torvalds 和 VMware 副总裁 Dirk Hohndel讨论了 GNU GPL 在 Linux 成功上所起的作用.Hohn ...
- Leonbao:MapKit学习笔记
以下仅作了解, 实际使用以百度地图居多, 因为百度地图有动态路径规划等接口 MapKit学习笔记 原帖: http://www.cocoachina.com/bbs/read.php?tid-6 ...