CodeForces 698 A. Vacations(dp)
2016-08-01 18:49
316 查看
Description
小明有n天假期,每天可以编程和运动,也可以休息,只有有编程作业的时候才能编程,体育馆开的时候才能运动,但小明不会连续两天编程或运动,现在给出n天每天的状态,问小明最少休息多少天
Input
第一行一个整数n表示假期天数,第二行n个整数(0,1,2,3)表示每天的状态
0.体育馆关门,没有编程作业
1.体育馆关门,有编程作业
2.体育馆开门,没有编程作业
3.体育馆开门,有编程作业
Output
输出小明最少休息天数
Sample Input
4
1 3 2 0
Sample Output
2
Solution
dp[i][0]表示在第i天小明休息的情况下前i天小明休息的最少天数
dp[i][1]表示在第i天小明运动的情况下前i天小明休息的最少天数
dp[i][2]表示在第i天小明编程的情况下前i天小明休息的最少天数
则dp[i][0]=min(dp[i-1][0],dp[i-1][1],dp[i-1][2])+1
dp[i][1]=min(dp[i-1][0],dp[i-1][2])(第i天体育馆开门)
=INF(第i天体育馆关门)
dp[i][2]=min(dp[i-1][0],dp[i-1][1])(第i天有编程作业)
=INF(第i天体育馆关门)
那么答案即为min(dp
[0],dp
[1],dp
[2])
Code
小明有n天假期,每天可以编程和运动,也可以休息,只有有编程作业的时候才能编程,体育馆开的时候才能运动,但小明不会连续两天编程或运动,现在给出n天每天的状态,问小明最少休息多少天
Input
第一行一个整数n表示假期天数,第二行n个整数(0,1,2,3)表示每天的状态
0.体育馆关门,没有编程作业
1.体育馆关门,有编程作业
2.体育馆开门,没有编程作业
3.体育馆开门,有编程作业
Output
输出小明最少休息天数
Sample Input
4
1 3 2 0
Sample Output
2
Solution
dp[i][0]表示在第i天小明休息的情况下前i天小明休息的最少天数
dp[i][1]表示在第i天小明运动的情况下前i天小明休息的最少天数
dp[i][2]表示在第i天小明编程的情况下前i天小明休息的最少天数
则dp[i][0]=min(dp[i-1][0],dp[i-1][1],dp[i-1][2])+1
dp[i][1]=min(dp[i-1][0],dp[i-1][2])(第i天体育馆开门)
=INF(第i天体育馆关门)
dp[i][2]=min(dp[i-1][0],dp[i-1][1])(第i天有编程作业)
=INF(第i天体育馆关门)
那么答案即为min(dp
[0],dp
[1],dp
[2])
Code
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; #define INF 0x3f3f3f3f #define maxn 111 int n,a[maxn],dp[maxn][3]; int main() { while(~scanf("%d",&n)) { for(int i=1;i<=n;i++)scanf("%d",&a[i]); dp[0][0]=dp[0][1]=dp[0][2]=0; dp[1][0]=1; if(a[1]==2||a[1]==3)dp[1][1]=0; else dp[1][1]=INF; if(a[1]==1||a[1]==3)dp[1][2]=0; else dp[1][2]=INF; for(int i=2;i<=n;i++) { dp[i][0]=min(dp[i-1][0],min(dp[i-1][1],dp[i-1][2]))+1; if(a[i]==2||a[i]==3)dp[i][1]=min(dp[i-1][0],dp[i-1][2]); else dp[i][1]=INF; if(a[i]==1||a[i]==3)dp[i][2]=min(dp[i-1][0],dp[i-1][1]); else dp[i][2]=INF; } int ans=min(dp [0],min(dp [1],dp [2])); printf("%d\n",ans); } return 0; }
相关文章推荐
- codeforces 698 C. LRU (概率与期望+状压DP)
- 【 CodeForces 698B 】Vacations
- CodeForces 698 C. LRU(状压DP)
- CodeForces 698A——Vacations(动态规划)
- Codeforces 698A: Vacations(贪心)
- Codeforces 622C Not Equal on a Segment 【线段树 Or DP】
- CodeForces 710E Generate a String(DP)
- Codeforces 721C Journey (简单dp,dfs)
- codeforces 19B Checkout Assistant DP
- CodeForces 629D Babaei and Birthday Cake(线段树维护DP)
- 【CodeForces 155C Hometask】白濑肆×字符串+DP——果然是字符串处理什么的好讨厌啊尤其是换行符的处理看来不用CIN不行了呢DP的转移真心不会啊水到家了怎么办!【1.1%达成】
- Codeforces 461B - Appleman and Tree 树状DP
- Codeforces Good Bye 2015 D. New Year and Ancient Prophecy DP
- codeforces 215E 数位DP
- codeforces 148E Aragorn's Story 背包DP
- CodeForces 55D Beautiful numbers(数位dp)
- CodeForces 55D Beautiful numbers(数位dp)
- Codeforces 2B (DP)
- 7_6_R题 Bad Luck Island题解[Codeforces 540D](概率DP)
- CodeForces 279C Ladder (RMQ + dp)