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

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

Solution

写的像个dp似的,感觉其实就是个暴力(考场这么写肯定是打暴力

设dp[i][j][k][l]表示拿到了i个,A有j个,B有j个,C有k个。

大力转移。

注意特判n<10的情况。

Code

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int dp[][][][],sum[][],a[],n;
inline void mi(int &a,int b){if(b<a)a=b;}
char s[];
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i){
scanf("%s",s);
a[i]=s[]-'A';
sum[a[i]][i]=sum[a[i]][i-]+;
for(int j=;j<=;++j)if(j!=a[i])sum[j][i]=sum[j][i-];
}
memset(dp,0x3f,sizeof(dp));
if(n<){
cout<<(sum[][n]!=)+(sum[][n]!=)+(sum[][n]!=)<<endl;
return ;
}
dp[][sum[][]][sum[][]][sum[][]]=;
for(int i=;i<=n;++i)
for(int j=;j<=;++j)
for(int k=;k<=&&k+j<=;++k)
for(int l=;l<=&&k+j+l<=;++l)if(dp[i][j][k][l]!=0x3f3f3f3f){
if(j){
int num=j;
mi(dp[min(i+num,n)][sum[][min(n,i+num)]-sum[][i]][k+sum[][min(i+num,n)]-sum[][i]][l+sum[][min(i+num,n)]-sum[][i]],dp[i][j][k][l]+);
}
if(k){
int num=k;
mi(dp[min(i+num,n)][j+sum[][min(n,i+num)]-sum[][i]][sum[][min(n,i+num)]-sum[][i]][l+sum[][min(n,i+num)]-sum[][i]],dp[i][j][k][l]+);
}
if(l){
int num=l;
mi(dp[min(i+num,n)][j+sum[][min(i+num,n)]-sum[][i]][k+sum[][min(i+num,n)]-sum[][i]][sum[][min(i+num,n)]-sum[][i]],dp[i][j][k][l]+);
}
}
int ans=0x3f3f3f3f;
for(int i=;i<=;++i)
for(int j=;i+j<=;++j)
for(int k=;i+j+k<=;++k)if(dp[n][i][j][k]!=0x3f3f3f3f)
ans=min(ans,dp[n][i][j][k]+(i!=)+(j!=)+(k!=));
cout<<ans;;
return ;
}

[SHOI2001]化工厂装箱员(dp?暴力:暴力)的更多相关文章

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

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

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

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

  3. [SHOI2001]化工厂装箱员

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

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

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

  5. 解题:SHOI2001 化工厂装箱员

    题面 题外话:从零开始的DP学习系列之壹(我真的不是在装弱,我DP真的就这么烂TAT) 从lyd那里学到了一点DP的小技巧,在设状态时可以先假装自己在做搜索,往一个函数里传了一些参数,然后把这些参数抓 ...

  6. SHOI2001化工厂装箱员——记忆化搜索

    题目:https://www.luogu.org/problemnew/show/P2530 太弱了不会用DP,于是暴搜: 每次传进一个数组c记录当前状态各种物品有多少个,枚举取哪种物品,返回最小值, ...

  7. [ SHOI 2001 ] 化工厂装箱员

    \(\\\) \(Description\) 传送带上按顺序传过来\(N\)个物品,一个有\(A,B,C\)三类. 每次装箱员手里只能至多拿十个,然后将手中三类物品中的一类装箱,才能接着拿或接着装箱, ...

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

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

  9. 化工厂装箱员 洛谷 p2530

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

随机推荐

  1. HDU 5782 Cycle —— KMP

    题目:Cycle 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5782 题意:给出两个字符串,判断两个字符串的每一个前缀是否循环相等(比如abc 和 ca ...

  2. BPM与OA的区别

    近年来,随着计算机技术的发展和互联网时代的到来,我们已经进入了信息时代,也称为数字化时代,在这数字化的时代里,企业的经营管理都受到了极大的挑战.从上世纪90年代起至今,企业的信息化工作开展的如火如荼, ...

  3. Linux安装mysql5.6

    安装mysql5.6https://www.cnblogs.com/wangdaijun/p/6132632.html

  4. select2 简单解析

    <select name="supplierId" class="customsBrokerSel select2 absOpacity select2-hidde ...

  5. docker 操作镜像的基本操作

    以安装mysql为例 1.拉取镜像 docker pull mysql 错误的启动 [root@localhost ~]# docker run --name mysql01 -d mysql 42f ...

  6. synchronized与volatile的区别及各自的作用、原理(学习记录)

    synchronized与volatile的区别,它们的作用及原理? 说到两者的区别,先要了解锁提供的两种特性:互斥(mutual exclusion) 和可见性(visibility). 互斥:即一 ...

  7. Helm

    helm类似yum helm下载的是配置清单文件 核心术语: Chart:一个helm程序包: Repository:Charts仓库,https/http服务器: Release:特定的Chart部 ...

  8. Antd & ice

    Antd & ice Angular https://github.com/NG-ZORRO/ng-zorro-antd https://ng.ant.design/docs/introduc ...

  9. 在delphi中生成GUID/自动获取临时表名......

    什么是 GUID ? 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装.在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID. GUID 的格式为 ...

  10. vs code安装

    vs code是一款文本编辑器,开源,是前端界的vs,而Dreamweaver适合入门. user版本的一些系统分区文件夹无法创建,可能存在语言显示问题.一般用户建议使用system版. 下载链接:h ...