【dp】10-8题解 vacation
vacations
原题codeforeces round 363 (Div2) c
题目描述
暑假到了, Pb 正在计划他的假期。 Pb 准备假期去体育馆锻炼或看电影。但体育馆和电影院都有可能当天不开放。
因此每一天有 4 中状态,我们用 0,1,2,3 表示。
0:体育馆和电影院都关闭。
1:体育馆关闭,电影院开放。
2:体育馆开放,电影院关闭。
3:体育馆和电影院都开放。
Pb 不希望一天没有任何事情可做也不希望连续两天做同一件事,
现在请你为 Pb 安排假期计划,在满足没有连续两天做同一件事的前提下最小化 Pb 无事可做的天数。
输入描述
第一行有一个数 N 表示 Pb 的假期天数。 接下来 N 个整数表示假期每一天的状态。(用 0,1,2,3 表示,意义见题目描述)
输出描述
输出一个整数表示满足条件的 Pb 无事可做天数的最小值。
样例输入
4 1 3 2 0
样例输出
2
数据范围及提示
对于 30%的数据, 0<n<=15>
对于 60%的数据, 0<n<=1000>
对于 100%的数据, 0<n<=1000000
代码
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<ctype.h>
#include<math.h>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<bitset>
#include<algorithm>
#include<time.h>
#define MS(x,y) memset(x,y,sizeof(x))
#define MC(x,y) memcpy(x,y,sizeof(x))
#define MP(x,y) make_pair(x,y)
#define ls o<<1
#define rs o<<1|1
using namespace std;
typedef long long LL;
typedef unsigned long long UL;
typedef unsigned int UI;
template <class T1, class T2>inline void gmax(T1 &a, T2 b) { if (b>a)a = b; }
template <class T1, class T2>inline void gmin(T1 &a, T2 b) { if (b<a)a = b; }
const int N = 0, M = 0, Z = 1e9 + 7, ms63 = 0x3f3f3f3f;
int n;
int f[105][3];
int main()
{
while (~scanf("%d", &n))
{
MS(f, 63); f[0][0] = 0;
for (int i = 1; i <= n; ++i)
{
int x; scanf("%d", &x);
if (x == 1 || x == 3)//可以参加考试
{
f[i][1] = min(f[i - 1][0], f[i - 1][2]);
}
if (x == 2 || x == 3)//可以参加运动
{
f[i][2] = min(f[i - 1][0], f[i - 1][1]);
}
//休息
f[i][0] = min(f[i - 1][0], min(f[i - 1][1], f[i - 1][2])) + 1;
}
int ans = 1e9;
gmin(ans, f[n][0]);
gmin(ans, f[n][1]);
gmin(ans, f[n][2]);
printf("%d\n", ans);
}
return 0;
}
【dp】10-8题解 vacation的更多相关文章
- BZOJ 1~10 精简题解
从这星期起,我开始了怒刷BZOJ的旅程.这几天刷了10道题(由于"档期"的原因,所以有几道题没打完-..捂脸--..) 精简题解: 1000 A+B Problem --.. [B ...
- Codeforces 229E Gifts 概率dp (看题解)
Gifts 感觉题解写的就是坨不知道什么东西.. 看得这个题解. #include<bits/stdc++.h> #define LL long long #define LD long ...
- HDU 4272 LianLianKan (状压DP+DFS)题解
思路: 用状压DP+DFS遍历查找是否可行.假设一个数为x,那么他最远可以消去的点为x+9,因为x+1~x+4都能被他前面的点消去,所以我们将2进制的范围设为2^10,用0表示已经消去,1表示没有消去 ...
- CodeForces - 55D Beautiful numbers(数位DP+Hash)题解
题意:美丽数定义:一个正数能被所有位数整除.求给出一个范围,回答这个范围内的美丽数. 思路:一个数能被所有位数整除,换句话说就是一个数能整除所有位数的LCM,所以问题就转化为一个数能否被所有位数的LC ...
- POJ 1625 Censored!(AC自动机->指针版+DP+大数)题解
题目:给你n个字母,p个模式串,要你写一个长度为m的串,要求这个串不能包含模式串,问你这样的串最多能写几个 思路:dp+AC自动机应该能看出来,万万没想到这题还要加大数...orz 状态转移方程dp[ ...
- codeforces 467C George and Job(简单dp,看了题解抄一遍)
题目 参考了网页:http://www.xue163.com/exploit/180/1802901.html //看了题解,抄了一遍,眼熟一下,增加一点熟练度 //dp[i][j]表示是前i个数选出 ...
- [noi.ac省选模拟赛]第10场题解集合
题目 比赛界面. T1 不难想到,对于一个与\(k\)根棍子连接的轨道,我们可以将它拆分成\(k+1\)个点,表示这条轨道不同的\(k+1\)段. 那么,棍子就成为了点与点之间的边.可以发现,按照棍子 ...
- HDU 3681 Prison Break(状压DP + BFS)题解
题意:一张图,F是起点,Y是必须要到的点,D不能走,G可以充电.可以往四个方向走,每走一步花费一个电,走到G可以选择充满电或者不充,每个G只能充一次.问你走遍Y的最小初始点亮.number(G) + ...
- HDU 4336 Card Collector(状压 + 概率DP 期望)题解
题意:每包干脆面可能开出卡或者什么都没有,一共n种卡,每种卡每包爆率pi,问收齐n种卡的期望 思路:期望求解公式为:$E(x) = \sum_{i=1}^{k}pi * xi + (1 - \sum_ ...
随机推荐
- ConcurrentHashMap源码解读一
最近在学习并发map的源码,如果由错误欢迎指出.这仅供我自己学习记录使用. 首先就先来说一下几个全局变量 private static final int MAXIMUM_CAPACITY = 1 & ...
- Linux下查看在线用户及用户进程
#该服务器下的所有用户运行进程的情况 ps -ax -u #查看java程序下用户的进程情况 ps -ax -u |grep java 或 ps aux|grep java cat /etc/p ...
- 用户对象/GDI对象/内核对象
对象的分类 Windows的对象可以分为三种,分别是用户对象,GDI对象和内核对象.系统使用用户对象支持窗口管理,使用GDI对象支持图形,并使用内核对象支持内存管理,进程执行和进程间通信(IPC) . ...
- 如何在Mac OS X中开启VIM语法高亮和显示行号
VIM (Wikipedia图) Vim 是一款相当给力的源自UNIX平台的命令行文本编辑器,不过不给力的是,Mac OS X下并没有诸多Linux发行版上VIM那些牛逼哄哄的神马代码高亮显示啊,自动 ...
- 发布声明$\beta$
一.新功能 \(\beta\)阶段集中开发了3大核心功能:支持模块的嵌套.模型市场.模型推理,这三项基本上都是从零开始.徒手开发的功能,没有轮子可以参照,因此也不具有可以对比的先前版本. 除此之外,开 ...
- 深度理解Python迭代器
迭代器 迭代是什么 迭代指的是一个重复的过程,每次重复都必须基于上一次的结果而继续,单纯的重复并不是迭代,如Python中的for循环就是一个非常好的迭代例子. for item in range(1 ...
- xxl-job源码阅读一(客户端)
1.源码入口 使用xxl-job的时候,需要引入一个jar,然后还需要往Spring容器注入XxlJobSpringExecutor <dependency> <groupId> ...
- stressapptest测试用例testcase方法aarch64
### https://github.com/stressapptest/stressapptest aarch64 To build from source, the build/installat ...
- named piped tcp proxy 下载
named piped tcp proxy 在某DN上面下载很麻烦,还要登录什么的,分享出来!希望大家支持 链接:https://pan.baidu.com/s/1fdJD6O0qb8_BkkrnMy ...
- 004.kubernets对于pod的简单管理
一 pod简介 1.1 介绍 Pod是K8s集群中所有业务类型的基础 Pod是在K8s集群中运行部署应用或服务的最小单元,它是可以支持多容器的. Pod的设计理念是支持多个容器在一个Pod中共享网络地 ...