[ 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位 的地方.但没写. 写了搜索 ...
随机推荐
- 【05】AngularJS 指令
AngularJS 指令 AngularJS 通过被称为 指令 的新属性来扩展 HTML. AngularJS 指令 AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-. ng-app ...
- Spring MVC学习总结(10)——Spring MVC使用Cors跨域
跨站 HTTP 请求(Cross-site HTTP request)是指发起请求的资源所在域不同于该请求所指向资源所在的域的 HTTP 请求.比如说,域名A(http://domaina.examp ...
- selectByExampleWithBLOBs-----搜索结果包含大字段类型----搜索结果包含大字段类型
http://www.jb51.net/article/121482.htm mybatis generator 使用方法教程(生成带注释的实体类)
- noip模拟赛 列车调度
[ 问题描述 ] 有N辆列车,标记为1,2,3,…,N.它们按照一定的次序进站,站台共有K个轨道,轨道遵从 先进先出的原则.列车进入站台内的轨道后可以等待任意时间后出站,且所有列车不可后退.现在要使出 ...
- noip模拟赛 轰炸
题目描述 C国和W国爆发了战争!YJC决定对W国的n个城市进行轰炸.每个城市都有一个重要度ai.设xi=‘重要度大于ai的城市数+1’,那么编号为i城市就是第xi个被轰炸的城市.显然这样能保证重要度大 ...
- 临时起异,要进入C++领域耍一个程序
没办法.两周之内可以搞定吧. 就一个SESSION 0的问题. 网上有类似源码,调一下应该就可以吧..保佑顺利. 基本语法都还记得,快N年啦... #include <iostream> ...
- 混合图(dizzy.pas/cpp/c)
混合图(dizzy.pas/cpp/c) [题目描述] Hzwer神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. Hzwer的国家有n个点,m条边,而作为国王,他十分喜欢游览自己的国家.他一 ...
- 推断给定的IP地址是否是内网IP
/** * 推断给定的IP地址是否是内网IP * * @author GaoHuanJie */ public class Test{ public boolean isInnerIP(String ...
- HDOJ题目4417 Super Mario(划分树求区间比k小的个数+二分)
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- poj 3090 && poj 2478(法雷级数,欧拉函数)
http://poj.org/problem?id=3090 法雷级数 法雷级数的递推公式非常easy:f[1] = 2; f[i] = f[i-1]+phi[i]. 该题是法雷级数的变形吧,答案是2 ...