BZOJ 1806: [Ioi2007]Miners 矿工配餐
ime Limit: 10 Sec Memory Limit: 64 MB
Submit: 910 Solved: 559
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
MBMFFB
Sample Output
HINT
Source
#include <cstring>
#include <cstdio>
#define N 100005
int ans,n,f[][][][][],xl[N],vis[];
inline int max(int a,int b) {return a>b?a:b;}
void swap(int &m,int &n) {int tmp=m;m=n;n=tmp;}
int pd(int a,int b,int c)
{
vis[]=vis[]=vis[]=vis[]=;
vis[a]=vis[b]=vis[c]=;
return vis[]+vis[]+vis[];
}
int Read()
{
char ch=getchar();
return ch=='M'?:(ch=='B'?:);
}
int Main()
{
scanf("%d",&n);
char ch=getchar();
int cur=,p=;
memset(f,-,sizeof(f));
f[][][][][cur]=;
for(int pos=;pos<=n;++pos)
{
swap(cur,p);
int t=Read();
for(int i=;i<=;++i)
for(int j=;j<=;++j)
for(int k=;k<=;++k)
for(int l=;l<=;++l)
{
if(f[i][j][k][l][p]!=-)
{
f[j][t][k][l][cur]=max(f[j][t][k][l][cur],f[i][j][k][l][p]+pd(t,i,j));
f[i][j][l][t][cur]=max(f[i][j][l][t][cur],f[i][j][k][l][p]+pd(t,k,l));
}
}
}
for(int i=;i<=;++i)
for(int j=;j<=;++j)
for(int k=;k<=;++k)
for(int l=;l<=;++l)
ans=max(ans,f[i][j][k][l][cur]);
printf("%d\n",ans);
return ;
}
int sb=Main();
int main(int argc,char *argv[]){;}
BZOJ 1806: [Ioi2007]Miners 矿工配餐的更多相关文章
- BZOJ 1806: [Ioi2007]Miners 矿工配餐( dp )
dp... ------------------------------------------------------------------------------- #include<cs ...
- bzoj 1806 [Ioi2007]Miners 矿工配餐(DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1806 [题意] 给定一个权在1..3内的序列,在保持相对位置不变的情况下拆分成两个序列 ...
- BZOJ 1806 IOI2007 Miners 矿工配餐 动态规划
题目大意:将一个123序列拆分为两个子序列.定义每一个数的贡献值为以这个数结尾的长度最大为3的子串中不同数的数量,求贡献值和的最大值 令f[i][a1][a2][b1][b2]为前i个数分成两组,第一 ...
- [Ioi2007]Miners 矿工配餐(BZOJ1806)
[Ioi2007]Miners 矿工配餐 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 214 Solved: 128 Description 现有两 ...
- bzoj1806 [Ioi2007]Miners矿工配餐
[bzoj1806][Ioi2007]Miners 矿工配餐 2014年7月10日1,7870 Description 现有两个煤矿,每个煤矿都雇用一组矿工.采煤工作很辛苦,所以矿工们需要良好饮食.每 ...
- [bzoj1806] [ioi2007]Miners 矿工配餐
相当于noip前两题难度的ioi题........ 还是挺好想的...算是状压一下?...两个二进制位可以表示三种食物或者没有,所以用四个二进制位表示某个煤矿最近两餐的情况... 先把各种情况加上各种 ...
- [IOI2007]Miners 矿工配餐
link 其实就是一个比较简单的$IOI$题.简单$dp$就行,设$5$维$dp$即可 最后在滚动一下,判一下可行性即可. #include<iostream> #include<c ...
- 【bzoj1806】[Ioi2007]Miners 矿工配餐 dp
题目描述 有n个物品,每个都是3种之一.现要将这n个物品分成两个序列,对于每个序列中的每个物品,可以得到 它及它前面相邻的两个物品(不足则取全部)中不同种类的个数 的收益.问最大的总收益. 输入 输入 ...
- 洛谷 P4401 [IOI2007]Miners 矿工配餐
题意简述 有两个矿洞,已知食物的种类(≤3)和顺序,将他们送往任一矿洞, 若一个矿洞3次食物相同,贡献1:若有2种不同食物,贡献2:若有3种不同食物,贡献3 求最大贡献 题解思路 food[i] 为当 ...
随机推荐
- hive-0.11.0安装
一.安装 . 下载安装hive hive-0.11.0.tar.gz(稳定版) 目录:/data tar –zxvfhive-0.11.0.tar.gz . 配置 把所有 ...
- pysam操作sam文件
pysam模块 因为要分析sam文件中序列的情况,因此要对reads进行细分,所以之前想用数据库将sam文件信息存储,然后用sql语句进行分类.后来发现很麻烦,pysam就是一个高效读取存储在SAM ...
- CodeForces - 828C String Reconstruction 并查集(next跳)
String Reconstruction Ivan had string s consisting of small English letters. However, his friend Jul ...
- 19个很有用的 JavaScript库推荐
流行的 JavaScript 库有jQuery,MooTools,Prototype,Dojo和YUI等,这些 JavaScript 库功能丰富,加上它们众多的插件,几乎能实现任何你需要的功能 然而需 ...
- 【转】生产环境:Nginx高可用方案
准备工作: 192.168.16.128 192.168.16.129 两条虚拟机.安装好 Nginx 安装Nginx 更新 yum 源文件: rpm -ivh http://nginx.org/pa ...
- java使用Robot类在eclipse上实现自动编写代码
运行时,把输入法关掉,切换成系统自带的输入法即可: 第二个类是自定义的键值Map集合,主要是为了方便输入字符串,有需要的可以自行添加: 主要的代码如下,会创建一个名称为Automaton.java的类 ...
- python接口测试框架遇到的坑(一)excel数字转文本
一.遇到的问题 python编写接口测试框架中,接口用例使用excel维护,其中预期值(code码的值)20000和实际值总是不一致,后来通过打印type发现一个是unicode,一个是float. ...
- Nacos深入浅出(四)
private void executeAsyncInvoke() { while (!queue.isEmpty()) { NotifySingleTask task = queue.poll(); ...
- Python-8-print和import进阶
1.打印多个参数 用逗号隔开: >>> print('Age:', 42) Age: 42 参数之间自动插入了一个空格字符 >>> name = 'Gumby' & ...
- Mysql 5.7主主复制配置
MySQL5.7主主复制配置 主机1IP:192.168.1.2主机2IP:192.168.1.4 一.首先安装MySQL 5.71.卸载两台主机系统中已经有的mysql相关软件包rpm -qa | ...