博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 698A - Vacations (Codeforces Round #363 (Div. 2))
阅读量:5889 次
发布时间:2019-06-19

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

要么去体育馆,要么去比赛,要么闲在家里

给出每一天体育馆和比赛的有无情况,要求连续两天不能去同一个地方

问最少闲几天

DP方程很容易看出

  dp(第i天能去的地方) = min(dp(第i-1天的三种情况)) ;

  dp(第i天呆在家里) = min(dp(第i-1天的三种情况))+1;

1 #include 
2 #include
3 using namespace std; 4 #define inf 0x3f3f3f3f 5 int a[105],ans[105][3],n; 6 void dfs() 7 { 8 ans[0][0]=ans[0][1]=ans[0][2]=0; 9 for(int i=1;i<=n;i++)10 {11 if(a[i]==0)12 {13 ans[i][1]=inf;14 ans[i][2]=inf;15 }16 else if(a[i]==1)17 {18 ans[i][1]=inf;19 ans[i][2]=min(ans[i-1][0],ans[i-1][1]); 20 }21 else if(a[i]==2)22 {23 ans[i][2]=inf;24 ans[i][0]++;25 ans[i][1]=min(ans[i-1][0],ans[i-1][2]); 26 }27 else28 {29 ans[i][2]=min(ans[i-1][0],ans[i-1][1]);30 ans[i][1]=min(ans[i-1][0],ans[i-1][2]); 31 }32 ans[i][0]=min(ans[i-1][0],ans[i-1][1]);33 ans[i][0]=min(ans[i][0],ans[i-1][2]);34 ans[i][0]++;35 }36 }37 int main()38 {39 scanf("%d",&n);40 for(int i=1;i<=n;i++)41 {42 scanf("%d",&a[i]); 43 }44 dfs();45 int res=min(ans[n][0],ans[n][1]);46 res=min(res,ans[n][2]);47 printf("%d\n",res);48 }

 

转载于:https://www.cnblogs.com/nicetomeetu/p/5701564.html

你可能感兴趣的文章
洛谷P1576 最小花费
查看>>
封装了一个类,可生成验证码,缩略图,及水印图
查看>>
文件服务器 之 Debian下pureftpd的安装心得
查看>>
第一阶段项目总结
查看>>
Java集合详解
查看>>
myeclilpse打开文件所在位置的图标消失后的找回方法
查看>>
Java面向对象编程概述
查看>>
Android利用文本分割拼接开发一个花藤文字生成
查看>>
哈夫曼树的实现
查看>>
12-18Windows窗体应用小程序之记事本(1)
查看>>
毕业论文一次性修改所有字母和数字的字体
查看>>
结构体:HASH表模板
查看>>
[转]理解Linux文件系统之inode
查看>>
在i3 Cpu上允许64位系统
查看>>
视频编解码学习之五:差错控制及传输
查看>>
Postman教程
查看>>
python模块--os模块
查看>>
HSSFRow获取单元格方法与区别
查看>>
洛谷 1365 WJMZBMR打osu! / Easy
查看>>
删除UINavigationItem上的BarButtonItem
查看>>