CodeForces 698A Vacations

时间:2023-02-16 15:58:55

题目链接 : 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 - &lbrack;简单DP&rsqb;

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

  2. CodeForces 698A - Vacations &lpar;Codeforces Round &num;363 &lpar;Div&period; 2&rpar;&rpar;

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

  3. 【动态规划】Codeforces 698A &amp&semi; 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 &num;363 div2 Vacations DP

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

  9. Codeforces Round &num;363 &lpar;Div&period; 2&rpar;-&gt&semi;C&period; Vacations

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

随机推荐

  1. Syscan360会议胸牌破解揭秘

    Syscan360会议胸牌破解揭秘 背景 有幸参加今年11月份的上海Syscan360安全会议,会议期间有一个亮点就是360的独角兽团队设计了一款电子badge(胸牌)供参加人员进行破解尝试,类似于美 ...

  2. Winform控件重写

    Winform控件重写 因为最近的项目中越来越多的遇到了比较特殊的一些控件,有时候我们自己封装一下可能更加方便我们的使用,下面是我们项目中用到的,简单做一个记录. TextBox控件重写 主要的控制代 ...

  3. java&period;util&period;concurrent包分类结构图

    摘自:http://blog.csdn.net/tsyj810883979/article/details/6956290

  4. PHP安装rrdtool扩展

    首先,我的环境是Centos 6.5 PHP版本是5.51.首先安装rrdtool需要的依赖库文件   yum -y install pango* 2.先服务器安装rrdtool  wget http ...

  5. &lbrack;C&plus;&plus;&rsqb; socket - 1 &lbrack;简单TCP通信C&bsol;S代码&rsqb;

    服务端: #include<iostream> #include<winsock2.h> #include<stdio.h> #pragma comment(lib ...

  6. Metronic&lowbar;下拉列表Select2插件的使用

    这个插件是基于Select的扩展插件,能够提供更加丰富的功能和用户体验,它的github官网地址为:https://select2.github.io/,具体的使用案例,可以参考地址:https:// ...

  7. HDU 1789 贪心经典

    题意 给出n门作业的截止时间与分数 如果不能在那天结束前做完就扣掉相应分数 问怎么安排能让扣分最少 思路 先按分数从大到小排序 先研究大的 做好标记 一开始每天都能放作业 全是true 如果这一天已经 ...

  8. Find The Multiple(bfs)

    Find The Multiple Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) T ...

  9. Python全栈开发第14天

    字符编码 python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill) ASCII(American Standard Code for Information Interc ...

  10. mongo安装,及远程连接

    yum 安装mongo创建镜像 1 vi /etc/yum.repos.d/mongodb-org-3.6.repo添加一下路径 保存退出[mongodb-org-3.6]name=MongoDB R ...