题目链接 : 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. 从库查看状态的时候显示“ Last_Error”

    mysql> show slave status\G;*************************** 1. row ***************************         ...

  2. 【BZOJ 1096】【ZJOI 2007】仓库建设 DP+斜率优化

    后缀自动机看不懂啊QAQ 放弃了还是看点更有用的东西吧,比如斜率优化DP 先水一道 #include<cstdio> #include<cstring> #include< ...

  3. Oracle的自增长主键

    自增长主键 --首先建一个表TEST create table TEST(  NID int PRIMARY KEY,  test1 varchar2(20),  test2 varchar2(20) ...

  4. pycharm实用快捷键

    提示 CTRL Q: 在参数列表位置,显示可以输入的所有参数. CTRL Q: 查看选中方法的文档字符串 阅读 CTRL -: 折叠当前代码 CTRL +: 展开当前代码 CTRL SHIFT -: ...

  5. ios 图片点击两次禁止保存或拷贝

    通常当你在手机或者pad上长按图像 img ,会弹出选项 存储图像 或者 拷贝图像,如果你不想让用户这么操作,那么你可以通过以下方法来禁止: img {     -webkit-touch-callo ...

  6. [51nod1515]明辨是非

    Description 给$n$组操作,每组操作形式为$x\;y\;p$. 当$p=1$时,如果第$x$变量和第$y$个变量可以相等,则输出$YES$,并限制他们相等;否则输出$NO$,并忽略此次操作 ...

  7. [日常训练]school

    Description 众所周知,家离学校很远.于是,每天算准了时间出发,以保证能在上课铃响前 秒到达学校. 不幸的是,市最近正在修路.这就导致有些路可能无法通行,因而可能导致迟到. 不打算改变他的出 ...

  8. 洛谷P1168 中位数

    题目描述 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[2], …, A[2k - 1]的中位数.[color=red]即[/color] ...

  9. Android数据库升级

    随着Android应用版本的迭代,经常遇到数据库表结构发生改变,或者一些指定的表数据需要更新.这也就引出一个问题Android数据库的更新问题. Android数据库升级分类 Android数据库更新 ...

  10. 用Python写了个抓图小脚本

    看上这个网页上一张图了,可惜他没有提供右键另存为,看了下网页代码,是可以找到图片原始链接的!但是因为没法和现实的图片一一对应,图又多,所以找起来还是麻烦...然后,我就想用 Python 把他们全部拉 ...