题目链接

  不知道做出这道题是我能力的一个提升还是能力的回归。

  DP。设f[i][j][k][l]是已经取了i个产品,现在手里还拿着j件A,k件B,l件C,最小的操作数。

  然后状转方程乱搞啊

  

#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long f[][][][];
int s[][];
long long Max;
long long ans=0x7fffffff;
int main(){
memset(f,/,sizeof(f)); Max=f[][][][]; f[][][][]=;
int n=read();
for(int i=;i<=n;++i){
char c[];
scanf("%s",c+);
for(int j=;j<=;++j) s[j][i]=s[j][i-];
s[c[]-'A'+][i]++;
}
for(int i=;i<=n;++i)
for(int j=;j<=;++j)
for(int k=;k+j<=;++k)
for(int l=;l+k+j<=;++l){
if(f[i][j][k][l]==Max) continue;
if(j){
int a=s[][min(i+j,n)]-s[][i],b=s[][min(i+j,n)]-s[][i]+k,c=s[][min(i+j,n)]-s[][i]+l;
f[min(i+j,n)][a][b][c]=min(f[min(i+j,n)][a][b][c],f[i][j][k][l]+);
//printf("%lld ",f[min(i+j,n)][a][b][c]);
}
if(k){
int a=s[][min(i+k,n)]-s[][i]+j,b=s[][min(i+k,n)]-s[][i],c=s[][min(i+k,n)]-s[][i]+l;
f[min(i+k,n)][a][b][c]=min(f[min(i+k,n)][a][b][c],f[i][j][k][l]+);
//printf("%lld ",f[min(i+k,n)][a][b][c]);
}
if(l){
int a=s[][min(i+l,n)]-s[][i]+j,b=s[][min(i+l,n)]-s[][i]+k,c=s[][min(i+l,n)]-s[][i];
f[min(i+l,n)][a][b][c]=min(f[min(i+l,n)][a][b][c],f[i][j][k][l]+);
//printf("%lld ",f[min(i+l,n)][a][b][c]);
}
if(j+k+l<){
int q=-(j+k+l);
int a=s[][min(i+q,n)]-s[][i]+j,b=s[][min(i+q,n)]-s[][i]+k,c=s[][min(i+q,n)]-s[][i]+l;
f[min(i+q,n)][a][b][c]=min(f[min(i+q,n)][a][b][c],f[i][j][k][l]);
}
}
for(int i=;i<=;++i)
for(int j=;j+i<=;++j)
for(int k=;k+j+i<=;++k)
ans=min(ans,f[n][i][j][k]+(i>?:)+(j>?:)+(k>?:));
printf("%lld",ans);
return ;
}

【Luogu】P2530化工厂装箱员(DP)的更多相关文章

  1. Luogu 2530 化工厂装箱员

    Written with StackEdit. Description \(118\)号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有\(3\ ...

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

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

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

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

  4. 化工厂装箱员 洛谷 p2530

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

  5. [SHOI2001]化工厂装箱员(dp?暴力:暴力)

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

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

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

  7. [SHOI2001]化工厂装箱员

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

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

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

  9. LG2530 「SHOI2001」化工厂装箱员 高维DP+记忆化搜索

    问题描述 LG2530 题解 设\(opt[i][a][b][c][d]\)代表装到第\(i\)个后,第\(1,2,3\)手上分别还剩\(a,b,c\)个的最小操作数. 记忆化搜索即可. 启示:如果状 ...

随机推荐

  1. 自动完成文本框(AutoCompleteTextView与MultiAutoCompleteTextView)关联适配器

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  2. 【Web应用-Kudu】Kudu 管理和诊断 azure web 应用

    Azure  Kudu是 GitHub 上的一个开源项目,Kudu 站点 (也称为网站控制管理 SCM) 提供了一系列的在线工具,可以帮助用户查看 web 应用的设置,诊断 web 应用,以及安装 w ...

  3. perl在linux下通过date获取当前时间

    perl处理文件的时候最好添加上 处理的时间戳,获取系统的时间又多种方法,但是反引号是最原始的,不需要其他外界条件和lib的支持. my $now = `date "+%F %T" ...

  4. UIButton Making the hit area larger

    http://stackoverflow.com/questions/808503/uibutton-making-the-hit-area-larger-than-the-default-hit-a ...

  5. SAP云平台,Netweaver,Kubernetes和C4C的用户和角色关系

    SAP云平台 Netweaver 同SAP云平台一样,在事务码PFCG里维护角色: 然后在事务码SU01里将多个角色分配给用户: Kubernetes Kubernetes在1.3版本中发布了alph ...

  6. ansible 调优

    1.设置ssh长链接ssh_args = -C -o ControlMaster=auto -o ControlPersist=5d 2.开启pipelining开启pipelining 需要被控制机 ...

  7. python基础一 day13 复习

    # 函数 —— 2天 # 函数的定义和调用 # def 函数名(形参): #函数体 #return 返回值 #调用 函数名(实参) # 站在形参的角度上 : 位置参数,*args,默认参数(陷阱),* ...

  8. golang 强制重新全部编译

    /home/用户名/.cache 删除缓存试试?? 修改的东西老失败 编译结果总不变 神奇了 go build -a    -x -v加一句-a 强制重新编译.

  9. Bootstrap历练实例:超小的按钮

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  10. HTML5<picture>元素

    HTML5<picture>元素可以设置多张图片 <!DOCTYPE html><html><head><meta http-equiv=&quo ...