Live archive 4490 Help Bubu
题意:书架上有n本书,每一本书都有一个高度,因此我们可以得到一个长度为n的高度序列,我们把相邻高度的书看成一个片段,定义该书架的混乱程度为片段的个数
例如序列 30 30 31 31 32的混乱程度为3
为了整理书架你最多可以拿出m本书,然后把它们插回书架的任意一个地方,请你求出最小的混乱程度
1<=k<=n<=100,25<=hi<=32
观察高度的范围我们很容易想到是一个状态压缩动规,难点就在于写出状态
在我的博客中有一道类似的题“color stones”,来源于poj,这道题其实就是“color stones”的加强版
f[i][j][s0][k]表示当前讨论到第i本书,且此时已经拿出了j本,书的高度集合为s0且序列中最后一本书高度为k的最小混乱值,设第i个书的高度为x
有两种决策:
不拿出第i本:f[i][j][s0|(1<<x)][x]=min{f[i-1][j][s0][k]+(k!=x)}
拿出第i本: f[i][j+1][s0][k]=min{f[i-1][j][s0][k]}
这个f数组的第一维可以滚一下
然后就讨论答案的最小值,因为我们s0表示的留下的书的种类,那么最后的答案就是min{f[n][j][s0][last]+bitcnt(all^ s0)),all为总的种类,(all^s0)为拿走的书里面的种类减去留下的书有的种类,拿走的书再放进来肯定是每个种类一个段,如果留下来的有这个种类,肯定是插进去,不算段数,没有的那些每个种类都+1。
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=105,maxm=1<<9;
const int inf=0x3f3f3f3f;
int f[2][maxn][maxm][9],all,n,m,kase;
int bitcnt(int s){return s==0?0:bitcnt(s>>1)+(s&1);}
int main(){while(scanf("%d%d",&n,&m)&&n+m){int i,j,k,x,s0;all=0;memset(f,inf,sizeof(f));for(i=1;i<=n;i++){scanf("%d",&x);x-=25;memset(f[i&1],inf,sizeof(f[i&1]));f[i&1][i-1][1<<x][x]=1; for(j=0;j<=min(m,i);j++){for(s0=all;s0;s0=(s0-1)&all)for(k=0;k<=8;k++)if(s0&(1<<k)){f[i&1][j][s0|(1<<x)][x]=min(f[i&1][j][s0|(1<<x)][x],f[(i-1)&1][j][s0][k]+ (k!=x));f[i&1][j+1][s0][k]=min(f[i&1][j+1][s0][k],f[(i-1)&1][j][s0][k]); }}all|=(1<<x); }int ans=inf;for(i=0;i<=m;i++)for(s0=all;s0;s0=(s0-1)&all)for(k=0;k<=8;k++)if(s0&(1<<k))ans=min(ans,f[n&1][i][s0][k]+bitcnt(s0^all));printf("Case %d: %d\n\n",++kase,ans);}
}
Live archive 4490 Help Bubu相关推荐
- uvaLive 4490 Help Bubu 帮助布布 等价转化+DP
等价转换: 从有n本书的书堆里面抽取k本书,再插入书堆里面,计算书的杂乱度 等价于 向空的书架上按给出的顺序放上n本书,再从中抽取k本书,然后插入书堆里面,计算书的杂乱度 等价于 向空的书架上按给出的 ...
- mysql 表引擎无法更新_Mysql安装archive引擎更新表引擎
1,在mysql命令行中安装Archive引擎 1,查找mysql plugins lib目录,看目录中是否存在Archive的so; mysql > show variables like'p ...
- ubuntu package XXX needs to be reinstalled,but I can't find an archive 问题修复
ubuntu package XXX needs to be reinstalled, but I can't find an archive 修复 原文连接: https://blog.csdn.n ...
- 关于mysql archive存储引擎-专门存储审计和日志数据
来源:http://60.29.242.49/?p=60 政府还有一个让数据库专家摊上更多事情的职能,就是安全控制和数据审计. 那些管理着海量数据仓库的企业官员常常得回答诸如"何人何时修改了 ...
- iOS 命令行自动打包 (archive)
原文链接:http://www.jianshu.com/p/2247f76404eb iOS 开发工程师在测试修复 bug 的过程中,一般会存在频繁打包的情况,如果一步步在 xcode 中点击 arc ...
- alter system switch logfile与alter system archive log current的区别
以前知道 ALTER SYSTEM SWITCH LOGFILE对单实例数据库或RAC中的当前实例执行日志切换, ALTER SYSTEM ARCHIVE LOG CURRENT会对数据库中的所有实例 ...
- xcode4发布测试-打包(Archive)
摘自:xcode4发布测试-打包 xcode4发布测试-打包(Archive),官方文档有误 转自"我os"的新浪博客,iOS程序发布测试4-打包(Archive)发布(share ...
- tar: Cowardly refusing to create an empty archive 问题
在解压 .tar.gz文件的时候遇到了这个解压的问题. 原命令:tar -zcvf ···.tar.gz 提示:tar: Cowardly refusing to create an empty ar ...
- .pth is a zip archive (did you mean to use torch.jit.load()?)
RuntimeError: bert.pth is a zip archive (did you mean to use torch.jit.load()?) .pth is a zip archiv ...
- http://www.cnblogs.com/amboyna/archive/2008/03/08/1096024.html
http://www.cnblogs.com/amboyna/archive/2008/03/08/1096024.html
最新文章
- php函数表达式,正规表达式函数_php
- 计算机动漫设计VR主要学什么,动漫设计专业学什么 要学什么软件
- 处理网络请求qs、图片转base64的优劣
- python元组赋值给变量,Python的赋值
- JVM 堆内存设置原理
- 安全领域多位世界级权威的智慧结晶——《黑客新型攻击防范:深入剖析犯罪软件》...
- Windows phone 7应用之代码性能分析工具——Profile.
- autojs toast 可以改变字体颜色吗_喃喃札记 | 你真的需要一部pad做笔记吗?
- 如何查询Linux服务的作用
- 俄罗斯政府称“主权网络”测试成功
- WPF多线程更新UI的一个解决途径
- TextToSpeech文本转语音,从开始说话到结束的监听
- 端口扫描工具masscan常用方法和参数
- wmic java_wmic 命令用法及实例
- 路由器,交换机和猫的区别
- 2021.11_Coggle组队学习_Linux命令
- 杭电2022 海选女主角
- 使用函数求余弦函数的近似值 (15 分)
- php计算问卷分数,php 问卷调查结果统计
- Google Earth Engine(GEE)——GEE版本的全球森林火灾信息获取并呈现2001-2020年四川省火灾亮度时间序列分析