博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Luogu 2530 化工厂装箱员
阅读量:4841 次
发布时间:2019-06-11

本文共 2010 字,大约阅读时间需要 6 分钟。

Written with .

Description

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

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

Input

\(1\)行为\(n(1<=n<=100)\),为成品的数量.

以后\(n\)行,每行为一个大写字母\(A,B\)\(C\),表示成品的纯度。

Ouput

仅一行,为\(grant\)需要的最少的装箱次数.

Sample Input

11

A
B
C
A
B
C
A
B
C
A
B

Sample Output

3

Solution

  • 显然是一道记忆化搜索.
  • 这道题的价值在于,可以传一个数组作为函数变量,减少代码量.

    我又水了一篇

#include
#define inf 0x3f3f3f3fusing namespace std;typedef long long LoveLive;inline int read(){ int out=0,fh=1; char jp=getchar(); while ((jp>'9'||jp<'0')&&jp!='-') jp=getchar(); if (jp=='-') { fh=-1; jp=getchar(); } while (jp>='0'&&jp<='9') { out=out*10+jp-'0'; jp=getchar(); } return out*fh;}const int MAXN=150;const int MAXT=30;int f[MAXN][MAXT][MAXT][MAXT];int n;int x[MAXN];int dfs(int k,int* g){ if(f[k][g[1]][g[2]][g[3]]!=-1) return f[k][g[1]][g[2]][g[3]]; if(g[1]+g[2]+g[3]==0) return 0; int &res=f[k][g[1]][g[2]][g[3]]; res=inf; int j; for(int i=1;i<=3;++i) { if(g[i]>0) { int t=g[i],t1=g[1],t2=g[2],t3=g[3]; g[i]=0; for(j=k;j<=n&&j<=(k+t-1);++j) ++g[x[j]]; res=min(res,dfs(j,g)+1); g[1]=t1,g[2]=t2,g[3]=t3; } } return res;}int main(){ memset(f,-1,sizeof f); n=read(); for(int i=1;i<=n;++i) { char c[2]; scanf("%s",c); x[i]=c[0]-'A'+1; } int i; int g[4]={0}; for(i=1;i<=n&&i<=10;i++) ++g[x[i]]; int ans=dfs(i,g); printf("%d\n",ans); return 0;}

转载于:https://www.cnblogs.com/jklover/p/10109297.html

你可能感兴趣的文章
filebeat-2-通过kafka队列链接logstash
查看>>
BZOJ2768: [JLOI2010]冠军调查
查看>>
网络性能测试工具Iperf/Jperf解读
查看>>
Python快速教程(转载)
查看>>
mysql事务
查看>>
【JMeter4.0学习(十)】之JMeter函数简单运用以及结合正则表达式提取器
查看>>
差分数组原理及应用
查看>>
Java switch case 语句
查看>>
SELinux 关闭方法
查看>>
ffmpeg 从内存中读取数据
查看>>
Entity Framework CodeFirst For Oracle
查看>>
Django 中间件 在其他语言中,有人叫这个管道
查看>>
Jython学习day01
查看>>
枚举的定义以及使用
查看>>
win7搭建php7+apache2.4
查看>>
全排列
查看>>
微机的接口技术(二)
查看>>
Axis2 POJO实现WebService(二)客户端调用
查看>>
oracle11g导出空表
查看>>
开始阅读《具体数学》
查看>>