SHOI2001化工厂装箱员——记忆化搜索
题目:https://www.luogu.org/problemnew/show/P2530
太弱了不会用DP,于是暴搜;
每次传进一个数组c记录当前状态各种物品有多少个,枚举取哪种物品,返回最小值,外加记忆化;
因为各种愚蠢小错误WA了好久。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,c[],a[],f[][][][],inf=;
char dc;
int ch(char c)
{
if(c=='A')return ;
if(c=='B')return ;
if(c=='C')return ;
}
//void dfs(int c[],int now,int x)
//{
// int c1=c[1],c2=c[2],c3=c[3];
//// if(f[now][c1][c2][c3])return;
//// cout<<c1<<c2<<c3;
//// cout<<x<<endl;
// if(!c1&&!c2&&!c3)
// {
// ans=min(ans,x);
// return;
// }
// int j;
// for(int i=1;i<=3;i++)
// {
// if(!c[i])continue;//!
// int k=c[i];
// c[i]=0;
// for(j=now+1;j<=now+k&&j<=n;j++)
// c[a[j]]++;
// f[now][c[1]][c[2]][c[3]]=min(f[now][c[1]][c[2]][c[3]],x+1);
// dfs(c,j,f[now][c[1]][c[2]][c[3]]);
// c[1]=c1;c[2]=c2;c[3]=c3;
// }
//}
int dfs(int c[],int now)
{
if(f[now][c[]][c[]][c[]])return f[now][c[]][c[]][c[]];
if(!c[]&&!c[]&&!c[])return ;
int ans=inf;
for(int i=;i<=;i++)
{
if(!c[i])continue;
int t1=c[],t2=c[],t3=c[],j,t=c[i];
c[i]=;
for(j=now;j<now+t&&j<=n;j++)
c[a[j]]++;
ans=min(ans,dfs(c,j));
c[]=t1;c[]=t2;c[]=t3;
}
ans++;//
f[now][c[]][c[]][c[]]=ans;
return ans;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
cin>>dc;
if(dc=='A')a[i]=;
if(dc=='B')a[i]=;
if(dc=='C')a[i]=;
}
int i;
for(i=;i<=&&i<=n;i++)c[a[i]]++;//
printf("%d",dfs(c,i));//
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 化工厂装箱员
题面 题外话:从零开始的DP学习系列之壹(我真的不是在装弱,我DP真的就这么烂TAT) 从lyd那里学到了一点DP的小技巧,在设状态时可以先假装自己在做搜索,往一个函数里传了一些参数,然后把这些参数抓 ...
- 【题解】SHOI2001化工厂装箱员
————传送:洛谷P2530 这道题目还是挺简单的,状态也容易想到. 数据范围非常的小,所以即便是很多维度,复杂度也完全可以接受.定义状态:dp[i][a][b][c]为手上的货物拿到第i个时三种物品 ...
- LG2530 「SHOI2001」化工厂装箱员 高维DP+记忆化搜索
问题描述 LG2530 题解 设\(opt[i][a][b][c][d]\)代表装到第\(i\)个后,第\(1,2,3\)手上分别还剩\(a,b,c\)个的最小操作数. 记忆化搜索即可. 启示:如果状 ...
- 化工厂装箱员(洛谷 P2530)
题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须 ...
- Luogu 2530 化工厂装箱员
Written with StackEdit. Description \(118\)号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有\(3\ ...
随机推荐
- Away3D引擎学习笔记(一)资源加载解析块
前文:Away3D断断续续用了一段时间了,三维相关的很多算法,计算转换还是有点绕,整理些自己觉得还有点意思东西,希望大家有用. 三维开始,Away3D构架你场景那几行代码各处都有,这里就不copy了, ...
- spring整合hibernate,在获取sessionFactory的时候报错,求解决办法!!
applicationContext.xml文件 <!-- 开启扫包 --> <context:component-scan base-package="cn.edu&qu ...
- JavaScript -- JavaScript高级程序设计
/* 基本类型 Undefined, Null, Boolean, Number, String. 复杂类型 Object 它是所有对象的基础类型. 引用类型 Object 创建:new Ojbect ...
- 架构 -- java
@.sql写在dao层 原文:http://blog.csdn.net/y_dzaichirou/article/details/53673528 @.Java Web项目需要掌握的技能 原文:htt ...
- RedHat7 防火墙设置以及端口设置
1.查看防火墙状态,root用户登录,执行命令systemctl status firewalld 2.开启防火墙:systemctl start firewalld 3.关闭防火墙:systemct ...
- NDK以及C语言基础语法(一)
一.什么是NDK? Native Development Kit (本地开发工具包): NDK中提供了一系列的工具,帮助我们快速开发C/C++的动态库,并能自动将so文件和java文件一起打包成apk ...
- TP框架---thinkphp修改删除数据
1.在控制器MainController里面写一个方法,调用Nation表中的数据. public function zhuyemian() { $n = D("Nation"); ...
- EasyNVR无插件直播服务器如何使用ffmpeg实现摄像机快照功能的
EasyNVR提供快照预览功能,并且提供向EasyDSS云平台上传快照的功能 EasyNVR会定时向配置的摄像机抓取快照数据,保存图片用于预览,并且用于快照上传 原理 将从摄像机取出来的I帧数据编码成 ...
- RSA加密、解密、公钥私钥生成
有时项目中需要用到一些加密和解密工具,这里之前整理了一个demo,记录一下,方便查询 package com.test; import java.security.KeyFactory; import ...
- Git with SVN
1)GIT是分布式的,SVN不是: 这 是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别.好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交.合并, ...