[ SHOI 2001 ] 化工厂装箱员
\(\\\)
\(Description\)
传送带上按顺序传过来\(N\)个物品,一个有\(A,B,C\)三类。
每次装箱员手里只能至多拿十个,然后将手中三类物品中的一类装箱,才能接着拿或接着装箱,求完成整个序列的最少装箱次数。
- \(N\in [1,100]\)
\(\\\)
\(Solution\)
这数据范围不是搜索乱搞
\(DP\)。设\(f[s][i][j][k]\)表示,当前已经取走了前\(s\)个,\(A\)类手里有\(i\)个,\(B\)类手里有\(j\)个,\(C\)类手里有\(k\)个,其余取出的全部已经装箱时,最少总装箱次数。有显然边界\(f[0][0][0][0]=1\)。
于是暴力枚举状态,复杂度是\(\text O(100\times 10^3)=\text O(10^5)\)的。转移考虑先将手里的东西拿满,再放下其中一类物品。即计算将要达到的位置\(s'\),到\(s'\)时手里三类物品的个数\(x,y,z\),然后就只需要考虑放下哪一类的问题了。
f[sum][0][y][z]=min(f[sum][0][y][z],f[s][i][j][k]+1);
f[sum][x][0][z]=min(f[sum][x][0][z],f[s][i][j][k]+1);
f[sum][x][y][0]=min(f[sum][x][y][0],f[s][i][j][k]+1);
注意到达位置需要考虑序列的边界,答案即为\(f[n][0][0][0]\)。
\(\\\)
\(Code\)
#include<cmath>
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 110
#define R register
#define gc getchar
#define inf 2000000000
using namespace std;
char c;
int n,ans=inf,a[N],f[N][11][11][11];
int main(){
scanf("%d",&n);
for(R int i=1;i<=n;++i){
c=gc();
while(!isalpha(c)) c=gc();
a[i]=(c=='A'?0:(c=='B'?1:2));
}
for(R int s=0;s<=n;++s)
for(R int i=0;i<=10;++i)
for(R int j=0;j<=10;++j)
for(R int k=0;k<=10;++k) f[s][i][j][k]=inf;
f[0][0][0][0]=0;
for(R int s=0;s<=n;++s)
for(R int i=0;i<=10;++i)
for(R int j=0;j<=10;++j)
for(R int k=0,sum,x,y,z;k<=10;++k)
if(f[s][i][j][k]<inf){
sum=min(n,s+(10-i-j-k)); x=i; y=j; z=k;
for(R int p=s+1;p<=sum;++p) a[p]==0?++x:(a[p]==1?++y:++z);
f[sum][0][y][z]=min(f[sum][0][y][z],f[s][i][j][k]+1);
f[sum][x][0][z]=min(f[sum][x][0][z],f[s][i][j][k]+1);
f[sum][x][y][0]=min(f[sum][x][y][0],f[s][i][j][k]+1);
}
printf("%d\n",f[n][0][0][0]);
return 0;
}
[ SHOI 2001 ] 化工厂装箱员的更多相关文章
- 洛谷 P2530 [SHOI2001]化工厂装箱员 解题报告
P2530 [SHOI2001]化工厂装箱员 题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B ...
- 化工厂装箱员(洛谷 P2530)
题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须 ...
- 化工厂装箱员 洛谷 p2530
题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须 ...
- [SHOI2001]化工厂装箱员
题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须 ...
- [SHOI2001]化工厂装箱员(dp?暴力:暴力)
118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须把不同纯度 ...
- Luogu 2530 化工厂装箱员
Written with StackEdit. Description \(118\)号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有\(3\ ...
- 洛谷P2530 [SHOI2001]化工厂装箱员
题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须把不 ...
- 解题:SHOI2001 化工厂装箱员
题面 题外话:从零开始的DP学习系列之壹(我真的不是在装弱,我DP真的就这么烂TAT) 从lyd那里学到了一点DP的小技巧,在设状态时可以先假装自己在做搜索,往一个函数里传了一些参数,然后把这些参数抓 ...
- 洛谷2530(codevs2098)化工厂装箱员
题目:https://www.luogu.org/problemnew/show/P2530 dp或搜索. dp做法就是 当前值+1 转移到 当前某一维为0.位置前进了c位 的地方.但没写. 写了搜索 ...
随机推荐
- Docker学习总结(18)——阿里超大规模Docker化之路
12月6-7日,由阿里巴巴集团.阿里巴巴技术发展部.阿里云云栖社区联合主办,以"2016双11技术创新"为主题的阿里巴巴技术论坛上,阿里巴巴研究员林昊分享了阿里超大规模Docker ...
- [BZOJ2594] [Wc2006]水管局长数据加强版(LCT + kruskal + 离线)
传送门 WC这个题真是丧心病狂啊,就是想学习一下怎么处理边权,给我来了这么一个破题! ORZ hzwer 临摹黄学长代码233 但还是复杂的一匹 理一下思路吧 题目大意:给定一个无向图,多次删除图中的 ...
- D - Guess UVALive - 4255 拓扑排序
Given a sequence of integers, a1, a2, . . . , an, we define its sign matrix S such that, for 1 ≤ i ≤ ...
- 操作系统开发之——打开A20
我们在上一篇文章提到.怎样制作Bootsect.当然,人总是贪婪的,制作完Bootsect又想着做Setup了,Setup主要工作是打开A20,进入保护模式,等等. 一.介绍A20 这是一个历史性问题 ...
- tomcat管理员password设置
打开tomcat安装文件夹下的conf,然后打开tomcat-users.xml 在标签中加入 <user name="" password="" rol ...
- Date.parse函数的兼容问题
由于要用Date.parse函数解析一个日期时间的字符串.在谷歌浏览器中解析成功,但是IE.火狐中却不行. 不知何故.firefox对于类似"2010-12-20 15:55:00" ...
- Caffe——清晰高效的深度学习(Deep Learning)框架
Caffe(http://caffe.berkeleyvision.org/)是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清(http://daggerfs.com/ ...
- POJ 2485 Highways && HDU1102(20/200)
题目链接:Highways 没看题,看了输入输出.就有种似曾相识的感觉,果然和HDU1102 题相似度99%,可是也遇到一坑 cin输入居然TLE,cin的缓存不至于这么狠吧,题目非常水.矩阵已经告诉 ...
- 浅谈API网关(API Gateway)如何承载API经济生态链
序言 API经济生态链已经在全球范围覆盖, 绝大多数企业都已经走在数字化转型的道路上,API成为企业连接业务的核心载体, 并产生巨大的盈利空间.快速增长的API规模以及调用量,使得企业IT在架构上.模 ...
- struts2 一个CRUD的BaseAction
在struts2 in action中所见,这样封装后省去了大部分crud反复代码.尽管还不能理悟.先记下来. abstract class BaseAction extends ActionSupp ...