zoukankan      html  css  js  c++  java
  • 搜索 洛谷P2530 [SHOI2001]化工厂装箱员

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

    输入输出样例

    输入样例#1:
    11
    A
    B
    C
    A
    B
    C
    A
    B
    C
    A
    B
    
    输出样例#1:
    3

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 int n;
     7 int data[110],f[110][11][11][11];
     8 char a;
     9 bool check[110][11][11][11];
    10 int dfs(int num,int x,int y,int z){
    11     int tot=x+y+z;
    12     int tmp=0;
    13     for(int i=n-num+1;i<=n;i++){
    14         if(tot+tmp==10) break;
    15         if(data[i]==0) x++;
    16         if(data[i]==1) y++;
    17         if(data[i]==2) z++;
    18         tmp++;
    19     }
    20     if(check[num-tmp][x][y][z]) return f[num-tmp][x][y][z];
    21     check[num-tmp][x][y][z]=1;
    22     if(num==tmp){
    23         int t=3;
    24         if(x==0) t--;
    25         if(y==0) t--;
    26         if(z==0) t--;
    27         f[0][x][y][z]=min(f[0][x][y][z],t);
    28         return f[0][x][y][z];
    29     }
    30     if(x) f[num-tmp][x][y][z]=min(f[num-tmp][x][y][z],dfs(num-tmp,0,y,z)+1);
    31     if(y) f[num-tmp][x][y][z]=min(f[num-tmp][x][y][z],dfs(num-tmp,x,0,z)+1);
    32     if(z) f[num-tmp][x][y][z]=min(f[num-tmp][x][y][z],dfs(num-tmp,x,y,0)+1);
    33     return f[num-tmp][x][y][z];
    34 }
    35 int main(){
    36     scanf("%d",&n);
    37     for(int i=1;i<=n;i++){
    38         //scanf("%c",&a);
    39         cin>>a;
    40         data[i]=a-'A';
    41     }
    42     memset(f,0x3f3f3f3f,sizeof(f));
    43     printf("%d",dfs(n,0,0,0));
    44     return 0;
    45 }
  • 相关阅读:
    BeanUtils在web项目中的应用
    BeanUtils的日期问题
    使用BeanUtils组件
    调用数据库过程函数mysql
    sql注入
    如何取SO中的特性
    Read config detail from SO
    Parts-Ufida ERP project 1
    常用医疗英语
    April 24th 2020
  • 原文地址:https://www.cnblogs.com/zwube/p/7008841.html
Copyright © 2011-2022 走看看