题目链接 : 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. iOS开发中的错误整理,IOS9中canOpenURL调用失败分析

    由于IOS加入对用户隐私以及禁止扫描系统信息的控制,目前通过canOpenURL的方法来判断用户是否安装特定app,则会出现-canOpenURL: failed for URL: "ABC ...

  2. 51nod 1040最大公约数和(欧拉函数)

    1040 最大公约数之和 题目来源: rihkddd 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 给出一个n,求1-n这n个数,同n的最大公约数 ...

  3. 网站(logo,主机)

    logo生成网站  http://www.uugai.com/ 花生壳 http://hsk.oray.com/download/

  4. mysql-查看全局变量设置

    show global variables like '%sql_mode%' 全局变量

  5. for 循环 正方形

    <?php//================================正方形//for($q = 1; $q <= 5; $q ++ ){//    for($z =1; $z & ...

  6. c# 获取iis地址

    using System;using System.Collections.Generic;using System.DirectoryServices;using System.Linq;using ...

  7. 学习WebSocket(一):Spring WebSocket的简单使用

    1.什么是websocket? WebSocket协议定义了一种web应用的新功能,它实现了服务器端和客户端的全双工通信.全双工通信即通信的双方可以同时发送和接收信息 的信息交互方式.它是继Java ...

  8. 【BZOJ-2502】清理雪道 有上下界的网络流(有下界的最小流)

    2502: 清理雪道 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 594  Solved: 318[Submit][Status][Discuss] ...

  9. UVa 11384 Help is needed for Dexter

    分析题目以后得出,对于一个连续等差递增的序列,例如1,2,3,4,5,6,每次选择其中后一半,减去能减的最大数,则是最优操作. 上述序列经过一次操作后变为1,2,3,0,1,2,此时可抛弃后一半(已经 ...

  10. struts2 CVE-2013-1965 S2-012 Showcase app vulnerability allows remote command execution

    catalog . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch Fix 1 ...