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

转载于:https://www.cnblogs.com/butterflydew/p/9303177.html

洛谷 P2530 [SHOI2001]化工厂装箱员 解题报告相关推荐

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

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

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

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

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

    毒瘤dp,熬了一上午 有一个显然的事情就是,我们肯定会把手中所有A或所有B或所有C全部装箱,对吧? 然后我们就枚举这一次装箱是将手中所有的3种物品中的一个装箱,然后取min 代码 //By AcerM ...

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

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

  5. shoi2001 化工厂装箱员

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

  6. 洛谷 P3332 [ZJOI2013]K大数查询 解题报告

    P3332 [ZJOI2013]K大数查询 题目描述 有\(N\)个位置,\(M\)个操作.操作有两种,每次操作如果是\(\tt{1\ a\ b\ c}\)的形式表示在第\(a\)个位置到第\(b\) ...

  7. 洛谷 P2114 [NOI2014]起床困难综合症 解题报告

    P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...

  8. 洛谷 P2463 [SDOI2008]Sandy的卡片 解题报告

    P2463 [SDOI2008]Sandy的卡片 题意 给\(n(\le 1000)\)串,定义两个串相等为"长度相同,且一个串每个数加某个数与另一个串完全相同",求所有串的最长公 ...

  9. 洛谷 P1377 [TJOI2011]树的序 解题报告

    P1377 [TJOI2011]树的序 题目描述 众所周知,二叉查找树的形态和键值的插入顺序密切相关.准确的讲:1.空树中加入一个键值\(k\),则变为只有一个结点的二叉查找树,此结点的键值即为\(k ...

最新文章

  1. C#隐藏手机号中间四位为*
  2. zoj 2972 Hurdles of 110m (DP)
  3. rsync+inotify实现文件时时单项同步
  4. java面试题二十六 多线程考题
  5. 关闭edge任务栏预览_如何在Microsoft Edge中关闭选项卡预览
  6. 数据预处理 泰坦尼克号_了解泰坦尼克号数据集的数据预处理
  7. Linux文件空洞与稀疏文件
  8. super和this关键字详解
  9. Leetcode算法题(C语言)1
  10. 在CentOS7上安装vim编辑器报错无法解析阿里云主机
  11. 2019年物联网发展趋势与预测分析
  12. JAVA标准输出错误输出,从tsls输出中提取标准错误
  13. S1304第一本书内测测试分析
  14. sql join后显示二维数据_大数据交叉报表解决案例(方案)
  15. 一文解读该用开源BI工具还是智能BI工具?
  16. 第五章 修改实现(IMPL)类
  17. MT6573 1048MP 版本发布(笔记)
  18. 教你看懂ACC、TJA、 ICA、ICC 这些功能都能干些啥
  19. 【EI会议合集 | 高校联办】机器学习、通信与智能技术等多领域,可推优发表SCI...
  20. 图示机构受力f作用_工程力学1 -

热门文章

  1. 用户登录拖动验证码实现原理详解。
  2. ProxmoxVE折腾记录(二)--版本升级
  3. User management
  4. ABAP 获取屏幕字段的值 搜索帮助联动动态查询SAP
  5. 国乒28人出战匈牙利公开赛 新增混双项目受关注
  6. 因式分解理论基础(4)不可约多项式与唯一因式分解定理
  7. 网站系统 群发“站内信”的实现
  8. birthday中文是什么_birthday是什么意思_birthday在线翻译_英语_读音_用法_例句_海词词典...
  9. Web SQL 学习笔记
  10. 射影几何--圆锥曲线在平面上某点确定的对合线束