博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces - 698A Vacations
阅读量:6877 次
发布时间:2019-06-26

本文共 1496 字,大约阅读时间需要 4 分钟。

 

 

Vasya有n天假期,每天可以去健身房或者撸代码。她不想连续两天做同种运动(脑力也是运动),但她可以每天当一条咸鱼,给出事件,求解最小的休息天数。

  

事件  健身房  机房

0     关    关

1      关    开

2     开      关

3     开    开

 

很明显的计数和状态转移,用dp解。dp[i][j]代表第i天做j事总计的休息时间

对于j, 0==休息,1==健身,2==代码

当一个状态不能转移到的时候,设值为无穷大。这样由于我们需要min(x,y)操作,所以这个值也就不会用到了

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #define max(x, y) (x > y ? x : y) 7 #define min(x, y) (x > y ? y : x) 8 #define INF 0x3f3f3f3f 9 #define mod 100000000710 #define Yes printf("Yes\n")11 #define No printf("No\n")12 typedef long long LL;13 using namespace std;14 15 const int maxn = 1e2 + 10;16 int dp[maxn][5];17 int n;18 int a;19 20 int main(int argc, const char * argv[]) {21 scanf("%d", &n);22 memset(dp, 0, sizeof(dp));23 for (int i = 1; i <= n; i++) {24 scanf("%d", &a);25 dp[i][0] = min(dp[i - 1][0], min(dp[i - 1][1], dp[i - 1][2])) + 1;26 if (a == 1 || a == 3) {27 dp[i][2] = min(dp[i - 1][0], dp[i - 1][1]);28 } else {29 dp[i][2] = INF;30 }31 if (a == 2 || a == 3) {32 dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]);33 } else {34 dp[i][1] = INF;35 }36 37 if (a == 0) {38 dp[i][1] = dp[i][2] = INF;39 }40 }41 printf("%d\n", min(dp[n][0], min(dp[n][1], dp[n][2])));42 return 0;43 }

 

转载于:https://www.cnblogs.com/xFANx/p/7259601.html

你可能感兴趣的文章
整理第一周学习C的知识点
查看>>
Spring Data JPA 实例查询
查看>>
ping多线程
查看>>
PMP每日一题
查看>>
python中struct.unpack的用法
查看>>
解决物理内存足够时VMware 提示物理内存不足。。。
查看>>
java socket常见异常
查看>>
Dubbo与Zookeeper、SpringMVC整合和使用
查看>>
Spring中的属性scope
查看>>
SpringApplication你不知道的那些事!
查看>>
为什么比别人办事效率慢?因为你没用这几款强大的搜索软件!
查看>>
linux菜鸟基础学习 (二) 中篇
查看>>
配置网络
查看>>
0021-使用JDBC向Kudu表插入中文字符-cast的秘密
查看>>
Kubernetes 1.14发布:对Windows节点的生产级支持、Kubectl更新与持久本地卷
查看>>
PHP获取未来七天的日期和星期
查看>>
web防火墙的开通和部署
查看>>
驰骋工作流引擎,表单引擎工作事务单元测试报告
查看>>
删除的文件如何恢复?详细方法介绍
查看>>
PDF转换CAD有什么方法
查看>>