博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ 1806] Miners 矿工配餐
阅读量:5030 次
发布时间:2019-06-12

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

Link:

Solution:

为了使状态包含每个节点前所有必须的信息

设$dp[i][a1][a2][b1][b2]$为配送到第$i$个,一厂前两个为$a1,a2$,二厂前两个为$b1,b2$时的最大权值,

每次向一厂添加/二厂添加转移。

 

要使用滚动数组,注意对每种情况权值的计算。

Code:

#include 
using namespace std;int dp[3][4][4][4][4],n,res=0,cur,pre;int get_type(){ char ch=getchar(); while(ch!='M' && ch!='F' && ch!='B') ch=getchar(); if(ch=='M') return 1; else if(ch=='F') return 2; else return 3;}int cal(int a,int b,int c){ int ret=1; if(b && b!=c) ret++; if(a && a!=b && a!=c) ret++; return ret;}int main(){ scanf("%d",&n); memset(dp,-1,sizeof(dp)); cur=1;dp[pre][0][0][0][0]=0; for(int i=0;i

 

Review:

每次要想清楚循环的边界

这里一开始不到4个时无法填充$a1,a2,b1,b2$所有状态,因此要从'0'开始循环

 

转载于:https://www.cnblogs.com/newera/p/9157728.html

你可能感兴趣的文章
Python:GUI之tkinter学习笔记3事件绑定(转载自https://www.cnblogs.com/progor/p/8505599.html)...
查看>>
jquery基本选择器
查看>>
hdu 1010 dfs搜索
查看>>
搭建wamp环境,数据库基础知识
查看>>
android中DatePicker和TimePicker的使用
查看>>
SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
查看>>
Android中获取应用程序(包)的大小-----PackageManager的使用(二)
查看>>
Codeforces Gym 100513M M. Variable Shadowing 暴力
查看>>
浅谈 Mybatis中的 ${ } 和 #{ }的区别
查看>>
CNN 笔记
查看>>
版本更新
查看>>
SQL 单引号转义
查看>>
start
查看>>
实现手机扫描二维码页面登录,类似web微信-第三篇,手机客户端
查看>>
PHP socket客户端长连接
查看>>
7、shell函数
查看>>
【转】Apache Jmeter发送post请求
查看>>
Nginx 基本 安装..
查看>>
【凸优化】保留凸性的几个方式(交集、仿射变换、投影、线性分式变换)
查看>>
NYOJ-613//HDU-1176-免费馅饼,数字三角形的兄弟~~
查看>>