Luogu 2530 化工厂装箱员
Written with StackEdit.
Description
\(118\)号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有\(3\)种不同的纯度,\(A:100\%,B:1\%,C:0.01\%\),为了出售方便,必须把不同纯度的成品分开装箱,装箱员\(grant\)第\(1\)次顺序从流水线上取\(10\)个成品(如果一共不足\(10\)个,则全部取出),以后每一次把手中某种纯度的成品放进相应的箱子,然后再从流水线上顺序取一些成品,使手中保持\(10\)个成品(如果把剩下的全部取出不足\(10\)个,则全部取出),如果所有的成品都装进了箱子,那么\(grant\)的任务就完成了。
由于装箱是件非常累的事情,\(grant\)希望他能够以最少的装箱次数来完成他的任务,现在他请你编个程序帮助他。
Input
第\(1\)行为\(n(1<=n<=100)\),为成品的数量.
以后\(n\)行,每行为一个大写字母\(A,B\)或\(C\),表示成品的纯度。
Ouput
仅一行,为\(grant\)需要的最少的装箱次数.
Sample Input
11
A
B
C
A
B
C
A
B
C
A
B
Sample Output
3
Solution
- 显然是一道记忆化搜索.
- 这道题的价值在于,可以传一个数组作为函数变量,减少代码量.
我又水了一篇
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long LoveLive;
inline int read()
{
int out=0,fh=1;
char jp=getchar();
while ((jp>'9'||jp<'0')&&jp!='-')
jp=getchar();
if (jp=='-')
{
fh=-1;
jp=getchar();
}
while (jp>='0'&&jp<='9')
{
out=out*10+jp-'0';
jp=getchar();
}
return out*fh;
}
const int MAXN=150;
const int MAXT=30;
int f[MAXN][MAXT][MAXT][MAXT];
int n;
int x[MAXN];
int dfs(int k,int* g)
{
if(f[k][g[1]][g[2]][g[3]]!=-1)
return f[k][g[1]][g[2]][g[3]];
if(g[1]+g[2]+g[3]==0)
return 0;
int &res=f[k][g[1]][g[2]][g[3]];
res=inf;
int j;
for(int i=1;i<=3;++i)
{
if(g[i]>0)
{
int t=g[i],t1=g[1],t2=g[2],t3=g[3];
g[i]=0;
for(j=k;j<=n&&j<=(k+t-1);++j)
++g[x[j]];
res=min(res,dfs(j,g)+1);
g[1]=t1,g[2]=t2,g[3]=t3;
}
}
return res;
}
int main()
{
memset(f,-1,sizeof f);
n=read();
for(int i=1;i<=n;++i)
{
char c[2];
scanf("%s",c);
x[i]=c[0]-'A'+1;
}
int i;
int g[4]={0};
for(i=1;i<=n&&i<=10;i++)
++g[x[i]];
int ans=dfs(i,g);
printf("%d\n",ans);
return 0;
}
Luogu 2530 化工厂装箱员的更多相关文章
- 洛谷 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%,为了出售方便,必须把不同纯度 ...
- 洛谷P2530 [SHOI2001]化工厂装箱员
题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须把不 ...
- [ SHOI 2001 ] 化工厂装箱员
\(\\\) \(Description\) 传送带上按顺序传过来\(N\)个物品,一个有\(A,B,C\)三类. 每次装箱员手里只能至多拿十个,然后将手中三类物品中的一类装箱,才能接着拿或接着装箱, ...
- 洛谷2530(codevs2098)化工厂装箱员
题目:https://www.luogu.org/problemnew/show/P2530 dp或搜索. dp做法就是 当前值+1 转移到 当前某一维为0.位置前进了c位 的地方.但没写. 写了搜索 ...
- 【Luogu】P2530化工厂装箱员(DP)
题目链接 不知道做出这道题是我能力的一个提升还是能力的回归. DP.设f[i][j][k][l]是已经取了i个产品,现在手里还拿着j件A,k件B,l件C,最小的操作数. 然后状转方程乱搞啊 #incl ...
随机推荐
- maven入门学习(一)
一.maven介绍 1.软件开发中我们为什么要使用maven呢?(纯属个人体会观点,如有错误,敬请指正) (1)其一,企业岗位需求,目前的IT开发招聘岗位上,基本都要求会使用maven. ...
- 华为交换机S5700系列配置镜像端口(M:N)
配置本地端口镜像组网图(M:N) 组网需求 如图所示,某公司研发一部.研发二部和市场部通过Switch与外部Internet通信,监控设备Server1.Server2与Switch直连. 现在希望将 ...
- [BZOJ1018]堵塞的交通traffic
Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一 ...
- jsp select multiple
//File: index.html<HTML> <HEAD> <TITLE>Submitting Multiple Selection Sel ...
- git原理学习
http://git.oschina.net/progit/ 这一点值得牢记:Git 会把工作目录的内容恢复为检出某分支时它所指向的那个提交对象的快照.它会自动添加.删除和修改文件以确保目录的内容 ...
- java中规范语句
1. 直接常量:A=a,a是数字,是定死的数字,简单说是常数 符号常量:A=a,a是定死的符号,
- Oracle闪回机制
最近学习oracle的时候,无意中看到oracle的闪回技术flashback,原来oracle在delete数据或者drop的时候,不是直接删除,而是跟windows一样,先把数据放入到回收站中. ...
- 因磁盘爆满而导致NameNode HA无法启动
场景回顾: 测试集群节点分配:35,36是namenode且开启HA,37,38,39即作为datanode,又作为journalnode. 某时间 38节点磁盘爆满,集群中hdfs及依赖的服务全部宕 ...
- datetimepicker
<!DOCTYPE html> <html> <head> <title></title> <link href="./bo ...
- oracle: 分割字符串,或者查找字段里面的关键字(关键字1,关键字2,关键字3)
表中有一个字段:keyword, keyword里面的存储的字符一般是:[关键字1,关键字2,关键字3] 那么,在搜索的时候,不能用like 来模糊查询,因为这样会,多查询出一下不相干的关键字, hi ...