Vacations

原创 2016年08月28日 18:05:56

链接:http://codeforces.com/problemset/problem/699/C

题目:

Vasya has n days of vacations! So he decided to improve his IT skills and do sport. Vasya knows the following information about each of this n days: whether that gym opened and whether a contest was carried out in the Internet on that day. For the i-th day there are four options:

  1. on this day the gym is closed and the contest is not carried out;
  2. on this day the gym is closed and the contest is carried out;
  3. on this day the gym is open and the contest is not carried out;
  4. on this day the gym is open and the contest is carried out.

On each of days Vasya can either have a rest or write the contest (if it is carried out on this day), or do sport (if the gym is open on this day).

Find the minimum number of days on which Vasya will have a rest (it means, he will not do sport and write the contest at the same time). The only limitation that Vasya has — he does not want to do the same activity on two consecutive days: it means, he will not do sport on two consecutive days, and write the contest on two consecutive days.



题意:有个人放假了,准备做题和健身,每天四个状态,有没有题目*健身房开不开门,求最小休息天数,限制:不能连着做同一件事两天。

分析:dp,没啥可说的。

题解:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <string>
#include <cstring>
#include <functional>
#include <cmath>
#include <cctype>
#include <cfloat>
#include <climits>
#include <complex>
#include <deque>
#include <list>
#include <set>
#include <utility>
using namespace std;

int n;
int dp[110][3];
int main()
{
	//freopen("in.txt", "r", stdin);
	while (cin >> n)
	{
		for (int i = 1; i <= n; i++)
			for (int j = 0; j < 3; j++)
				dp[i][j] = 10000;
		int temp;
		for (int i = 1; i <= n;i++)
		{
			cin >> temp;
			dp[i][0] = min(dp[i - 1][0], min(dp[i - 1][1], dp[i - 1][2])) + 1;
			switch (temp)
			{
			case 1:
			{
				dp[i][2] = min(dp[i - 1][0], dp[i - 1][1]);
				break;
			}
			case 2:
			{
				dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]);
				break;
			}
			case 3:
			{
				dp[i][2] = min(dp[i - 1][0], dp[i - 1][1]);
				dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]);
				break;
			}
			default:
				break;
			}
		}
		int ans = min(dp[n][0], min(dp[n][1], dp[n][2]));
		cout << ans << endl;
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Don’t Skip Vacations for the Project

Don’t Skip Vacations for the ProjectJoe Zenevitch New York, New York, U.S. SoFTWARE PRojECT MAnAgE...

Vacations

Description Vasya has n days of vacations! So he decided to improve his IT skills and do sport....

CodeForces - 699C Vacations

Vasya has n days of vacations! So he decided to improve his IT skills and do sport. Vasya knows the ...

Codeforces Round #363 (Div. 2) C. Vacations

题意: 小V的一天有三种状态,去sport,去context,去relax,然后一天呢会有四种情况,0没有gym也没有context,1没有gym有context,2有gym没有context,3有...

Codeforces Round #363 (Div. 2) C. Vacations(DP)

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

Vacations(Codeforces Round #363 (Div1 A)

http://codeforces.com/problemset/problem/698/A A. Vacations time limit per test 1 second memor...

CodeForces-699C-Vacations

Vasya has n days of vacations! So he decided to improve his IT skills and do sport. Vasya knows the ...

Codeforces Round #363 C (Div. 2) Vacations

题目:   Vasya has n days of vacations! So he decided to improve his IT skills and do sport. Vasya k...

codeforces A.Vacations

Vasya has n days of vacations! So he decided to improve his IT skills and do sport. Vasya knows the ...

Vacations【贪心】

I - Vacations Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Vacations
举报原因:
原因补充:

(最多只允许输入30个字)