P2530 [SHOI2001]化工厂装箱员

题目描述

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需要的最少的装箱次数。


大力DP

\(dp[i][j][k][l]\)表示现在改选第\(i\)个时,手上有\(j\)个\(A\),\(k\)个\(B\),\(l\)个\(C\)的最小方案

写的记忆化搜索


Code:

#include <cstdio>
int min(int x,int y){return x<y?x:y;}
int dp[103][12][12][12],c[102],n;
int dfs(int dep,int rest1,int rest2,int rest3)
{
if(dp[dep][rest1][rest2][rest3]) return dp[dep][rest1][rest2][rest3];
dp[dep][rest1][rest2][rest3]=0x3f3f3f3f;
if(dep==n+1)
return dp[dep][rest1][rest2][rest3]=(rest1!=0)+(rest2!=0)+(rest3!=0);
int r[4];
if(rest1)
{
r[1]=0,r[2]=rest2,r[3]=rest3;
for(int i=dep;i<=min(dep+rest1-1,n);i++)
r[c[i]]++;
dp[dep][rest1][rest2][rest3]=min(dp[dep][rest1][rest2][rest3],dfs(min(dep+rest1-1,n)+1,r[1],r[2],r[3])+1);
}
if(rest2)
{
r[1]=rest1,r[2]=0,r[3]=rest3;
for(int i=dep;i<=min(dep+rest2-1,n);i++)
r[c[i]]++;
dp[dep][rest1][rest2][rest3]=min(dp[dep][rest1][rest2][rest3],dfs(min(dep+rest2-1,n)+1,r[1],r[2],r[3])+1);
}
if(rest3)
{
r[1]=rest1,r[2]=rest2,r[3]=0;
for(int i=dep;i<=min(dep+rest3-1,n);i++)
r[c[i]]++;
dp[dep][rest1][rest2][rest3]=min(dp[dep][rest1][rest2][rest3],dfs(min(dep+rest3-1,n)+1,r[1],r[2],r[3])+1);
}
return dp[dep][rest1][rest2][rest3];
}
int main()
{
char s[3];
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%s",s);
c[i]=s[0]-'A'+1;
}
int r[4]={0,0,0,0};
for(int i=1;i<=min(n,10);i++)
r[c[i]]++;
printf("%d\n",dfs(min(n,10)+1,r[1],r[2],r[3]));
return 0;
}

2018.7.13

洛谷 P2530 [SHOI2001]化工厂装箱员 解题报告的更多相关文章

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

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

  2. 洛谷 p2530 化工场装箱员(资源型)

    化工场装箱员 https://www.luogu.org/problem/show?pid=2530 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的 ...

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

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

  4. 洛谷 P2527 [SHOI2001]Panda的烦恼 解题报告

    P2527 [SHOI2001]Panda的烦恼 题目描述 panda是个数学怪人,他非常喜欢研究跟别人相反的事情.最近他正在研究筛法,众所周知,对一个范围内的整数,经过筛法处理以后,剩下的全部都是质 ...

  5. 洛谷 P2529 [SHOI2001]击鼓传花 解题报告

    P2529 [SHOI2001]击鼓传花 题意:求出\(n!\)末尾最后一位非0数字 数据范围:\(n<=10^{100}\) 我们从简单的开始考虑 1.显然,\(n!\)可以被这么表示 \(n ...

  6. 【题解】SHOI2001化工厂装箱员

    ————传送:洛谷P2530 这道题目还是挺简单的,状态也容易想到. 数据范围非常的小,所以即便是很多维度,复杂度也完全可以接受.定义状态:dp[i][a][b][c]为手上的货物拿到第i个时三种物品 ...

  7. [SHOI2001]化工厂装箱员

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

  8. [SHOI2001]化工厂装箱员(dp?暴力:暴力)

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

  9. 洛谷 P2323 [HNOI2006]公路修建问题 解题报告

    P2323 [HNOI2006]公路修建问题 题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 思路: 二分答案 然后把每条能加的大边都加上,然后加小边 但在洛谷的题 ...

随机推荐

  1. LDPC译码算法代码概述

    程序说明 V0.0 2015/1/24 LDPC译码算法代码概述   概述   本文介绍了包括LDPC_Simulation.m, ldpcdecoderbp1.m,ldpcdecoderminsum ...

  2. Python和Pycharm的安装

    目录 安装Python 安装Pycharm IDE 破解Pycharm 用Pycharm创建Python工程 安装Python 去Python官网下载Python软件,网址:https://www.p ...

  3. 第一篇:一天学会MongoDB数据库之Python操作

    本文仅仅学习使用,转自:https://www.cnblogs.com/suoning/p/6759367.html#3682005 里面新增了如果用用Python代码进行增删改查 什么是MongoD ...

  4. MapReduce和yarn

    1.Mapreduce是什么? Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架: Mapreduce核心功能是将用户编写的业务逻辑代码和自带默 ...

  5. 在Windows2008下添加iscsi存储出现磁盘Offine(The disk is offine because of policy set by an adminstrator)的解决方法

    打开CMD命令行输入如下命令: DISKPART.EXE DISKPART> san SAN Policy : Offline Shared DISKPART> san policy=On ...

  6. YAML 基础

    YAML 基础 简介 对象 数组 常量 引用 1.  简介 YAML 是专门用来写配置文件的语言,非常简洁和强大! 它的基本语法规则有: 大小写敏感: 使用缩进表示层级关系: 缩进时不允许使用 Tab ...

  7. os模块大全详情

    python常用模块目录 一:os模块分类: python os.walk详解 二:os模块大全表 序号 方法 方法 1 os.access(path, mode) 检验权限模式 2 os.chdir ...

  8. Kickstart 安装centos7

    以前是怎么安装系统的 光盘(ISO文件,光盘的镜像文件)===>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下 U盘:ISO镜像刻录到U盘==>需要每台机器都需 ...

  9. ES6的新特性(6)——正则的扩展

    正则的扩展 RegExp 构造函数 在 ES5 中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag). var regex = ne ...

  10. 武汉天喻信息 移动安全领域 SE(Secure Element)

    产品简介: SE(Secure Element)为安全模块,是一台微型计算机,通过安全芯片和芯片操作系统(COS)实现数据安全存储.加解密运算等功能.SE可封装成各种形式,常见的有智能卡和嵌入式安全模 ...