化工场装箱员

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. 谷歌地图api 开发 (转载)

    https://www.cnblogs.com/520lin/p/5800024.html

  2. 获取ios设备的udid

    今天get的第二个技能~~~ UDID指的是设备的唯一设备识别符,ipa包未上架之前如果不添加udid是无法安装成功的.那么如何快速获取ios设备的udid呢? 今天get的方法是用蒲公英,网址:ht ...

  3. chrome浏览器下的xdebug helper使用方法

    chrome浏览器下的xdebug helper使用方法     自从安装了xdebug后,发现每次调试都需要从eclipse中先从头启动,然后一步步走到你要调试的页面,而不是说想什么时候调试就什么时 ...

  4. 网页正文提取,降噪的实现(readability/Document)

    安装: pip install readability-lxml 使用: # encoding:utf-8import html2textimport requestsimport refrom re ...

  5. sklearn-特征工程之特征选择

    title: sklearn-特征工程之特征选择 date: 2016-11-25 22:49:24 categories: skearn tags: sklearn --- 抄袭/参考资料 使用sk ...

  6. robotium学习及整理

    一.                      Robotium 简介 Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手 ...

  7. iOS 企业账号申请证书和打包ipa

    准备: 299美元的企业账号. 1.登陆苹果开发者中心: https://developer.apple.com .点击Menber Center.输入企业账号和密码登陆. 2.登陆后选择“Certi ...

  8. MySQL复制 -- 复制出错怎么办?

    假如我们生产环境复制出错?该怎么办呢? 下面提供几种办法: 1. 手工处理,补回不一致数据(可以利用主库来补数据.也可以利用binlog来补数据) 2.用开源工具来解决一致性问题 3.自己造轮子,解决 ...

  9. DAY5-Flask项目

    1.验证参数(WTForms): 当URL为/book/search?q= &page=1 时 ,p=空格,验证器会通过,在forms验证层的book.py文件中添加DataRequired验 ...

  10. 一些常用的基础Linux操作指令

    复习的时候顺便分享我学的知识,虽不是什么牛的技术分享,只是一些基础,基础打好了技术慢慢就提高了!一起加油一起共勉! 具体的vi和vim命令集太多了,以后的随笔我也会分享出来,没必要全记住,记住常用的就 ...