题目链接: http://codeforces.com/problemset/problem/698/A http://codeforces.com/problemset/problem/699/C 题目大意: N天,A(健身)或B(做比赛)或休息,每天都有4种情况,A可行B可行,A可行B不行,A不行B可行,AB都不行. 每天选择一种,不能连续两天选择同一种活动(可以连续休息),问最少休息几天. 题目思路: [动态规划] f[i][j]表示前i天,最后一天状态为j的最多休息天数(最少天数也行),…
题目链接:http://codeforces.com/problemset/problem/698/A 题意 Vasya在n天中,有三件事情可以做,健身.比赛或者休息,但是不能连续两天都是比赛或都是但是健身,但是连续休息两天是允许的,问题是在这n天中,Vasya最少可以休息几天? 0代表休息,1代表比赛,2代表健身,3可以代表比赛也可以代表健身 思路 用数组dp[i][j]表示第i天做活动j,数值表示最小休息的天数 状态转移方程: 对于0:dp[i][0]=min(dp[i-1][0],min(…
f[i][0..2]表示第i天休息|运动|比赛最少的休息天数. #include <cstdio> #include <cstring> #include <algorithm> #define N 105 using namespace std; int n,a,f[N][3],ans; int main(){ memset(f,0x3f3f3f3f,sizeof f); f[0][0]=0; scanf("%d",&n); for(int…
题目链接:http://codeforces.com/problemset/problem/699/C C. Vacations time limit per test1 second memory limit per test256 megabytes Problem Description Vasya has n days of vacations! So he decided to improve his IT skills and do sport. Vasya knows the fo…
题目链接 : http://codeforces.com/problemset/problem/698/A 题目大意: 阿Q有n天假期,假期中有三种安排 休息.健身.比赛.每天有三种选择条件: 0 健身房不开门 没有比赛 1 健身房不开门    有比赛 2 健身房开门     没有比赛  3 健身房开门   有比赛 请给阿Q 合理的安排他的假期[阿Q不能连着两天健身或者连着两天比赛],使得阿Q的休息天数最少. 解题思路: ans=n,最多休息ans天 第一天是3 则a[0]=0,ans--; 只…
题目链接:http://codeforces.com/problemset/problem/698/A 题意: 有 $n$ 天假期,每天有四种情况:0.体育馆不开门,没有比赛:1.体育馆不开门,有比赛:2.体育馆开门,没有比赛:3.体育馆开门,有比赛. 每天都可以选择一件事做:休息.去体育馆运动.打比赛. 现在有一个限制条件:不能连续两天都去体育馆,或者连续两天都打比赛.要求尽量使得休息的天数最少,求出这个天数. 题解: $f[i][0,1,2]$ 表示前 $i$ 天,第 $i$ 天休息/运动/…
要么去体育馆,要么去比赛,要么闲在家里 给出每一天体育馆和比赛的有无情况,要求连续两天不能去同一个地方 问最少闲几天 DP方程很容易看出 dp(第i天能去的地方) = min(dp(第i-1天的三种情况)) : dp(第i天呆在家里) = min(dp(第i-1天的三种情况))+1: #include <cstdio> #include <iostream> using namespace std; #define inf 0x3f3f3f3f ],ans[][],n; void…
题目链接:C. Vacations 题意:现在有n天的假期,对于第i天有四种情况: 0  gym没开,contest没开 1  gym没开,contest开了 2 gym开了,contest没开 3       gym开了,contest开了 所有题主每天可能就有三种选择,rest,do sport,do contest.题主拒绝连续两天做同样的事情.现在请你安排他的假期,使得题主休息的天数最少. 思路:tag:dp n=100的dp和暴力有什么区别... ... 第i天的三种选择得到的最少休息…
题目链接:http://codeforces.com/problemset/problem/327/A 这道题目有O(N^3)的做法,这里转化为动态规划求解,复杂度是O(N) #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <cctype> #include <algorithm> #include <queue&…
题目链接: http://codeforces.com/problemset/problem/711/C 题目大意: 给N棵树,M种颜色,已经有颜色的不能涂色,没颜色为0,可以涂色,每棵树I涂成颜色J花费PIJ.求分成K个颜色段(1112221为3个颜色段)的最小花费.无解输出-1. 题目思路: [动态规划] f[i][j][k]表示前i个树分成j段,最后一个颜色是k的花费. 根据当前这棵树是否可以涂色,上一棵树是否可以涂色转移. 直接枚举这个树和上棵树的颜色,N4居然没T. // //by c…