您的位置:首页 > 其它

CodeForces 699C Vacations 贪心

2017-07-11 14:16 393 查看
CF传送门







题意:

  1. Vasya放假了,然后他的假期的每一天有四种情况

        0代表:体育馆关门,并且没有比赛(什么都没有,只能休息了)

        1代表:体育馆关门,但有比赛(可以打比赛,也可以休息)

        2代表:体育馆开门,但没有比赛(可以体育活动,也可以休息)

        3代表:体育馆开门,并且有比赛(可以体育活动,可以比赛,可以休息)

  2. 要求Vasya的暑假尽可能少休息,求休息的天数

  3. 每天只能做一件事,三选一,即不能比赛的同时去体育活动……

题解:

  1. 情况3的时候,尽可能不休息

  2. 情况1/2的时候,要看昨天的安排

  3. 我代码里采用立足今天,判断明天,并对明天的情况进行更换的思路。那么今天就不会出现情况3

  4. 最后一天要单独判断是否休息,因为循环里并不执行到最后一天

以下是我的AC代码:

#include <iostream>

using namespace std;

int a[105];

int main()
{
int n,i,sum=0;
cin >> n;
for(i=0; i<n; i++)
cin >> a[i];
for(i=0;i<n-1;i++)
{
if(a[i]==0)
sum++;
else if(a[i]==1)
{
if(a[i+1]==1)
a[i+1]=0;
else if(a[i+1]==3)
a[i+1]=2;
}
else if(a[i]==2)
{
if(a[i+1]==2)
a[i+1]=0;
else if(a[i+1]==3)
a[i+1]=1;
}
}
if(a[i]==0)
sum++;
cout << sum << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: