化工场装箱员

https://www.luogu.org/problem/show?pid=2530

118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯 度,A:100%,B:1%,C:0.01%,为了出售方便,必须把不同纯度的成品分开装箱,装箱员grant第1次顺序从流水线上取10个成品(如果一 共不足10个,则全部取出),以后每一次把手中某种纯度的成品放进相应的箱子,然后再从流水线上顺序取一些成品,使手中保持10个成品(如果把剩下的全部 取出不足10个,则全部取出),如果所有的成品都装进了箱子,那么grant的任务就完成了。

由于装箱是件非常累的事情,grant希望他能够以最少的装箱次数来完成他的任务,现在他请你编个程序帮助他。

【输入格式】

第1行为n(1<=n<=100),为成品的数量

以后n行,每行为一个大写字母A,B或C,表示成品的纯度。

【输出格式】

  仅一行,为grant需要的最少的装箱次数。

【输入样例】worker.in

11

A

B

C

A

B

C

A

B

C

A

B

【输出样例】worker.out

3

dfs TLE,得70,

状态:装了s次,从流水线上取下了d个,手中有a个A产品,b个B产品,c个C产品深搜

#include<cstdio>
#include<iostream>
using namespace std;
int n,x[],f[][][];
int A,B,C,ans=;
char c;
void dfs(int s,int d,int a,int b,int c)
{
if(d==n)
{
ans=min(ans,s+(a>)+(b>)+(c>));
return;
}
while(d<n)
{
if(a+b+c!=)
{
++d;
switch(x[d])
{
case :a++;break;
case :b++;break;
case :c++;break;
}
}
else break;
}
if(a) dfs(s+,d,,b,c);
if(b) dfs(s+,d,a,,c);
if(c) dfs(s+,d,a,b,);
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
cin>>c;
if(c=='A') x[i]=,A++;
else if(c=='B') x[i]=,B++;
else x[i]=,C++;
}
dfs(,,,,);
printf("%d",ans);
}

记忆化搜索  AC

f[d][a][b][c]=s  表示的意义同上

状态转移:f[d][a][b][c]=min(f[d][0][b][c],f[d][a][0][c],f[d][a][b][0])+1

初始化:f数组赋为极大值

#include<cstdio>
#include<iostream>
using namespace std;
int n,x[],f[][][][];
int A,B,C;
char c;
int dfs(int d,int a,int b,int c)
{
if(d==n)
{
f[d][a][b][c]=(a>)+(b>)+(c>);
return f[d][a][b][c];
}
while(d<n)
{
if(a+b+c!=)
{
++d;
switch(x[d])
{
case :a++;break;
case :b++;break;
case :c++;break;
}
}
else break;
}
if(f[d][a][b][c]<) return f[d][a][b][c];
if(a) f[d][a][b][c]=min(f[d][a][b][c],dfs(d,,b,c)+);
if(b) f[d][a][b][c]=min(f[d][a][b][c],dfs(d,a,,c)+);
if(c) f[d][a][b][c]=min(f[d][a][b][c],dfs(d,a,b,)+);
return f[d][a][b][c];
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
cin>>c;
if(c=='A') x[i]=,A++;
else if(c=='B') x[i]=,B++;
else x[i]=,C++;
}
for(int l=;l<=n;l++)
for(int i=;i<=;i++)
for(int j=;j<=;j++)
for(int k=;k<=;k++)
f[l][i][j][k]=;
printf("%d",dfs(,,,));
}

洛谷 p2530 化工场装箱员(资源型)的更多相关文章

  1. 洛谷 P2530 [SHOI2001]化工厂装箱员 解题报告

    P2530 [SHOI2001]化工厂装箱员 题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B ...

  2. 洛谷P2530 [SHOI2001]化工厂装箱员

    题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须把不 ...

  3. 洛谷2530(codevs2098)化工厂装箱员

    题目:https://www.luogu.org/problemnew/show/P2530 dp或搜索. dp做法就是 当前值+1 转移到 当前某一维为0.位置前进了c位 的地方.但没写. 写了搜索 ...

  4. 斜率优化dp学习笔记 洛谷P3915[HNOI2008]玩具装箱toy

    本文为原创??? 作者写这篇文章的时候刚刚初一毕业…… 如有错误请各位大佬指正 从例题入手 洛谷P3915[HNOI2008]玩具装箱toy Step0:读题 Q:暴力? 如果您学习过dp 不难推出d ...

  5. 化工厂装箱员(洛谷 P2530)

    题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须 ...

  6. 化工厂装箱员 洛谷 p2530

    题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须 ...

  7. 洛谷 P3195 [HNOI2008] 玩具装箱

    链接: P3195 题意: 给出 \(n\) 个物品及其权值 \(c\),连续的物品可以放进一个容器,如果将 \(i\sim j\) 的物品放进一个容器,产生的费用是 \(\left(j-i+\sum ...

  8. 洛谷P1314 聪明的质监员

    P1314 聪明的质监员 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: ...

  9. 洛谷P1314 聪明的质监员 题解

    题目 聪明的质监员 题解 这道题和之前Sabotage G的那道题类似,都是用二分答案求解(这道题还要简单一些,不需要用数学推导二分条件,只需简单判断一下即可). 同时为了降低复杂度,肯定不能用暴力求 ...

随机推荐

  1. Cosplay之孩子的妈咪

    很荣幸的担任“孩子妈妈”的角色,站在父母的角度去思考怎样的一个四则运算的APP才算是符合要求,可以受到广大家长的喜爱.不外乎有这样一些功能:1.可以随时的给孩子出题目,而且可以很快的得出正确答案.分析 ...

  2. 用windbg检查.NET线程池设置

    比如我们在machine.config中进行了这样的设置(8核CPU): <processModel maxWorkerThreads="100" maxIoThreads= ...

  3. windows下的C++ socket服务器(2)

    int main(int ac, char *av[]) { ); ) { exit(); } thread t; ) { int socket_fd = accept(tcp_socket, nul ...

  4. contos7忘记root密码怎么办

    首先在这个界面按"e"键 然后呢就会进入到如下图所示的界面,在LANG=zh_CN.UTF8的后面加上 init=/bin/sh, 再按 [ Ctrl + X ] 进入'单用户模式 ...

  5. Beta阶段DAY2

    一.提供当天站立式会议照片一张 二.每个人的工作 1.讨论项目每个成员的昨天进展 刘阳航:删除多余按钮,调整界面. 林庭亦:删除麻烦的颜色设置. 郑子熙:添加新增按钮. 陈文俊:重新规划面板及功能. ...

  6. 评论alpha发布

    第一组:新蜂小组 题目:俄罗斯方块 评论:很荣幸被邀请体验此游戏,感到加速下落时不是很灵敏,没有计分,页面不够美观(据说还在改善),整体框架已完成,基本功能已具备. 第二组:天天向上 题目:连连看 评 ...

  7. PAT 甲级 1001 A+B Format

    https://pintia.cn/problem-sets/994805342720868352/problems/994805528788582400 Calculate a + b and ou ...

  8. cxgrid中,如何根据列名或字段名取得footer值

    注意,不是根据index取得footer值cxgrdtbv1.DataController.Summary.FooterSummaryValues[0]; ------解决方案------------ ...

  9. nodejs 新特性

    一般时间没看nodejs了,又出了一些新特性了. 异步钩子     async_hooks      先看相关的文章吧 https://zhuanlan.zhihu.com/p/27394440 性能 ...

  10. Windows安装ElastAlert问题总结

    1.运行时出现UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xb4 in position 0: invalid start byte 或  ...