解题:SHOI2001 化工厂装箱员
题外话:从零开始的DP学习系列之壹(我真的不是在装弱,我DP真的就这么烂TAT)
从lyd那里学到了一点DP的小技巧,在设状态时可以先假装自己在做搜索,往一个函数里传了一些参数,然后把这些参数抓出来放在状态里就好了=。=
设$dp[i][j][k][h]$表示处理完前$i$个物品,$A$还剩下$j$个,$B$还剩下$k$个,$C$还剩下$h$个的最小次数,然后枚举三种产品的数量,在三个加起来不超过$10$的情况下转移。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=;
int dp[N][M][M][M],n,x;
int main ()
{
scanf("%d",&n);
memset(dp,0x3f,sizeof dp);
dp[][][][]=; char rd[];
for(int i=;i<=n;i++)
{
scanf("%s",rd);
for(int j=;j<=;j++)
for(int k=;j+k<=;k++)
for(int h=;j+k+h<=;h++)
{
if(rd[]=='A'&&j) dp[i][j][k][h]=dp[i-][j-][k][h];
if(rd[]=='B'&&k) dp[i][j][k][h]=dp[i-][j][k-][h];
if(rd[]=='C'&&h) dp[i][j][k][h]=dp[i-][j][k][h-];
int noww=dp[i][j][k][h]+;
dp[i][][k][h]=min(dp[i][][k][h],noww);
dp[i][j][][h]=min(dp[i][j][][h],noww);
dp[i][j][k][]=min(dp[i][j][k][],noww);
}
}
printf("%d",dp[n][][][]);
return ;
}
解题:SHOI2001 化工厂装箱员的更多相关文章
- 洛谷 P2530 [SHOI2001]化工厂装箱员 解题报告
P2530 [SHOI2001]化工厂装箱员 题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B ...
- [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%,为了出售方便,必须把不 ...
- 【题解】SHOI2001化工厂装箱员
————传送:洛谷P2530 这道题目还是挺简单的,状态也容易想到. 数据范围非常的小,所以即便是很多维度,复杂度也完全可以接受.定义状态:dp[i][a][b][c]为手上的货物拿到第i个时三种物品 ...
- SHOI2001化工厂装箱员——记忆化搜索
题目:https://www.luogu.org/problemnew/show/P2530 太弱了不会用DP,于是暴搜: 每次传进一个数组c记录当前状态各种物品有多少个,枚举取哪种物品,返回最小值, ...
- 化工厂装箱员(洛谷 P2530)
题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须 ...
- 化工厂装箱员 洛谷 p2530
题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须 ...
- Luogu 2530 化工厂装箱员
Written with StackEdit. Description \(118\)号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有\(3\ ...
随机推荐
- kettle学习笔记(四)——kettle输入步骤
一.输入步骤概述 输入步骤主要分为以下几类: • 生成记录/自定义常量 • 获取系统信息 • 表输入 • 文本文件输入 • XML 文件输入 • Json输入 • 其他输入步骤 二.生成记录和自定义常 ...
- 20155238 Java第13周课堂实践
类定义 实验内容及要求 设计并实现一个Book类,定义义成Book.java,Book 包含书名,作者,出版社和出版日期,这些数据都要定义getter和setter.定义至少三个构造方法,接收并初始化 ...
- 小内存VPS apache并发控制参数prefork调优
小内存VPS优化(使用wdcp lnamp一键包安装环境的情况下): 1.主要优化perfork模式下几个参数,防止开启过多的httpd进程占用大量内存导致内存满:在wdcp下修改的httpd配置文件 ...
- JVM源码---教你傻瓜式编译openjdk7(JAVA虚拟机爱好者必看)
LZ经过一个星期断断续续的研究,终于成功的搞定了JDK的成功编译与调试.尽管网络上的教程也有不少,包括源码中也有自带的编译步骤说明,但真正自己动手的话,还是会遇到不少意料之外的错误. 为了方便各位猿友 ...
- 高可用Kubernetes集群-13. 部署kubernetes-dashboard
参考文档: Github介绍:https://github.com/kubernetes/dashboard Github yaml文件:https://github.com/kubernetes/d ...
- B1004. 成绩排名
这一题总算是把C++的重载活学活用了一回,节省了很多脑细胞. #include<bits/stdc++.h> using namespace std; struct student{ st ...
- git 和 github 链接
第一步 再电脑上安装git 请自行搜索 到你需要的一个目录下:例如/gittest 首先创建文件,然后 git add 和 git commit 不然直接查看 git branch - ...
- Spark 实践——用决策树算法预测森林植被
本文基于<Spark 高级数据分析>第4章 用决策树算法预测森林植被集. 完整代码见 https://github.com/libaoquan95/aasPractice/tree/mas ...
- Visual Studio2013安装过程
Visual Studio是微软开发的一套基于组件的软件开发工具,我选择安装的是Visual Studio2013版本.首先, 第一步是要找到一个安装包: 我们可以直接百度MSDN,显示的第一条就是官 ...
- Jquery ajax 完整实例子1
$ajax请求--------------------------------- var $personWifePs=$("#wife-money tbody tr"); var ...