题目链接 : http://codeforces.com/problemset/problem/698/A

题目大意:

  阿Q有n天假期,假期中有三种安排 休息、健身、比赛。每天有三种选择条件:

   0 健身房不开门 没有比赛

   1 健身房不开门    有比赛

2 健身房开门     没有比赛

   3 健身房开门   有比赛

请给阿Q 合理的安排他的假期【阿Q不能连着两天健身或者连着两天比赛】,使得阿Q的休息天数最少。

解题思路:

ans=n,最多休息ans天

第一天是3 则a[0]=0,ans--;

只要是 a[0]>0,则 ans--;

从第二天开始在以后的每天里:

如果当天是 1 则判断前一天是不是1

  1: 使当前a[i]=0,今天休息。

  !1:昨天必定锻炼,ans--。

如果当天是 2 则判断前一天是不是2

  2: 使当前a[i]=0,今天休息。

  !2:昨天必定比赛,ans--。

如果当天是 3 则进行重点判断

  如果昨天 为 1 则 今天 a[i]=2 ans--;

  如果昨天 为 2 则 今天 a[i]=1 ans--;

  如果昨天 为 0 则  今天任意做 a[i]=0 ans--;  //*重点*

0不用判断 反正是休息 ans 保持不变。

举例:

7

1331123

1 ans--; 3 ans--,a[i]=2; 3 前一天为2 ans--,a[i]=1;1 前一天为1 休息a[i]=0;1 前一天为0 ans--;2 前一天为1 ans--;3 前一天为2,a[i]=1 ans--;

结果:ans=1。

AC Code:

 #include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
int ans=n,flag=,a[n+];
for(int i=; i<n; i++)
scanf("%d",&a[i]);
if(a[]>)ans--;
if(a[]==)a[]=;
for(int i=; i<n; i++)
{
switch(a[i])
{
case :
if(a[i-]!=)ans--;
else a[i]=;
break;
case :
if(a[i-]!=)ans--;
else a[i]=;
break;
case :
if(a[i-]==)a[i]=,ans--;
else if(a[i-]==)a[i]=,ans--;
else if(a[i-]==)a[i]=,ans--;
break;
}
}
cout<<ans<<endl;
}
return ;
}

CodeForces 698A Vacations的更多相关文章

  1. Codeforces 698A - Vacations - [简单DP]

    题目链接:http://codeforces.com/problemset/problem/698/A 题意: 有 $n$ 天假期,每天有四种情况:0.体育馆不开门,没有比赛:1.体育馆不开门,有比赛 ...

  2. CodeForces 698A - Vacations (Codeforces Round #363 (Div. 2))

    要么去体育馆,要么去比赛,要么闲在家里 给出每一天体育馆和比赛的有无情况,要求连续两天不能去同一个地方 问最少闲几天 DP方程很容易看出 dp(第i天能去的地方) = min(dp(第i-1天的三种情 ...

  3. 【动态规划】Codeforces 698A & 699C Vacations

    题目链接: http://codeforces.com/problemset/problem/698/A http://codeforces.com/problemset/problem/699/C ...

  4. Codeforces 698A:Vacations(DP)

    题目链接:http://codeforces.com/problemset/problem/698/A 题意 Vasya在n天中,有三件事情可以做,健身.比赛或者休息,但是不能连续两天都是比赛或都是但 ...

  5. 【CodeForces 698A】Vacations

    f[i][0..2]表示第i天休息|运动|比赛最少的休息天数. #include <cstdio> #include <cstring> #include <algori ...

  6. CodeForces 699C - Vacations

    题目链接:http://codeforces.com/problemset/problem/699/C C. Vacations time limit per test1 second memory ...

  7. Code Forces 698A Vacations

    题目描述 Vasya has nn days of vacations! So he decided to improve his IT skills and do sport. Vasya know ...

  8. CodeForces #363 div2 Vacations DP

    题目链接:C. Vacations 题意:现在有n天的假期,对于第i天有四种情况: 0  gym没开,contest没开 1  gym没开,contest开了 2 gym开了,contest没开 3 ...

  9. Codeforces Round #363 (Div. 2)->C. Vacations

    C. Vacations time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

随机推荐

  1. Linux_日志管理介绍(一)

    一.介绍 1.CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务,但是rsyslogd是和syslogd服务相兼容的 2.除了系统默认的日志之外,采用RPM方式安装的系 ...

  2. Asp.Net MVC<一> : 三层架构、MVC

    MVC.MVP.MVVM.Angular.js.Knockout.js.Backbone.js.React.js.Ember.js.Avalon.js.Vue.js 概念摘录 认清Android框架 ...

  3. 国外有哪些比较好的IT社区

    作者:匿名用户链接:https://www.zhihu.com/question/35373320/answer/114468522来源:知乎著作权归作者所有,转载请联系作者获得授权. Github ...

  4. java多线程synchronized底层实现

    一直想把这个特别重要的关键词的底层实现搞明白.(当然现在也没有完全明白,如果有错误以后修改这篇文章) 首先,这个关键词synchronize可以说是个语法糖,它的具体用法网上很多博客都讲的比较明了了. ...

  5. css-css权威指南学习笔记3

    第三章 结构和层叠 1.确定应向一个元素应用哪些值时,用户代理不仅要考虑继承,还要考虑声明的特殊性,另外需要考虑声明本身的来源,这个过程就称为层叠.. 2.特殊性.如果一个元素有两个或多个冲突的属性声 ...

  6. 策略设计模式与c语言中的函数指针

    在C语言中有一个非常重要的概念-函数指针,其最重要的功能是实现回调函数(指函数先在某处注册,而它将在稍后某个需要的时候被调用)在java语言中没有指针的概念,但是可以利用接口和指针实现类似的功能,具体 ...

  7. 环信Restfull API dotnetSDK

    Easemob.Restfull4Net 环信Restfull API dotnet的封装 支持的.Net Framework版本:4.0 API地址:http://docs.easemob.com/ ...

  8. Process Kill Technology && Process Protection Against In Linux

    目录 . 引言 . Kill Process By Kill Command && SIGNAL . Kill Process By Resource Limits . Kill Pr ...

  9. 谈谈favicon和他带来的问题

    favicon.ico介绍 favicon.ico是个什么东西呢,也许见得太多都习以为常了(我就是这样,直到写这篇文章之前才知道),看看维基百科的解释: Favicon是favorites icon的 ...

  10. POJ 2528 Mayor's posters(线段树/区间更新 离散化)

    题目链接: 传送门 Mayor's posters Time Limit: 1000MS     Memory Limit: 65536K Description The citizens of By ...