题目

一共有\(n\)本书,混乱值是连续相同高度书本的段数。

可以取出\(k\)本书随意放回,问最小混乱值,高度\([25\sim 32]\)


分析

设\(f[i][j][k][mask]\)表示前\(i\)本书已经抽出了\(j\)本,前\(i\)本中没被抽出的

书里最后一本书的高度是\(k\),\(mask\)是一个\(0\sim 2^8-1\)的二进制,表示前\(i\)本中没被

抽出的书里高度的存在情况。整体表示前\(i\)本书中没被抽出的书组成的序列的最小混乱度。

然后枚举第\(i\)本书是否被抽出。


代码

#include <cstdio>
#include <cstring>
#define rr register
using namespace std;
const int po[9]={1,2,4,8,16,32,64,128,256}; bool v[101];
int b[101],dp[2][101][11][261],top,c[101],t[101],n,m,a[101];
inline void Min(int &a,int b){if (a>b) a=b;}
signed main(){
scanf("%d%d",&n,&m);
for (rr int i=1;i<=n;++i){
scanf("%d",&a[i]),a[i]-=24;
if (a[i]!=a[i-1]) b[++top]=a[i];
++c[top];
}
for (rr int i=top;i;--i){
if (v[b[i]]) ++t[i];
v[b[i]]=1;
}
memset(dp[0],42,sizeof(dp[0]));
dp[0][0][0][0]=0;
for (rr int i=1;i<=top;++i){
memset(dp[i&1],42,sizeof(dp[i&1]));
for (rr int j=0;j<=m;++j)
for (rr int k=0;k<9;++k)
for (rr int p=0;p<po[8];++p){
if (dp[(i&1)^1][j][k][p]>n) continue;
Min(dp[i&1][j][b[i]][p|po[b[i]-1]],dp[(i&1)^1][j][k][p]+(b[i]!=k));//不动
if (j+c[i]>m) continue;
Min(dp[i&1][j+c[i]][k][p|po[b[i]-1]],dp[(i&1)^1][j][k][p]+!(p&po[b[i]-1]));//放前面
if (t[i]) Min(dp[i&1][j+c[i]][k][p],dp[(i&1)^1][j][k][p]);//放后面
}
}
rr int ans=2e9;
for (rr int i=0;i<=m;++i)
for (rr int j=0;j<9;++j)
for (rr int k=0;k<po[8];++k)
Min(ans,dp[top&1][i][j][k]);
return !printf("%d",ans);
}

#状压dp#JZOJ 3853 帮助Bsny的更多相关文章

  1. jzoj 5230 队伍统计(状压DP)

    Description 现在有n个人要排成一列,编号为1->n .但由于一些不明原因的关系,人与人之间可能存在一些矛盾关系,具体有m条矛盾关系(u,v),表示编号为u的人想要排在编号为v的人前面 ...

  2. BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3336  Solved: 1936[Submit][ ...

  3. nefu1109 游戏争霸赛(状压dp)

    题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1109 //我们校赛的一个题,状压dp,还在的人用1表示,被淘汰 ...

  4. poj3311 TSP经典状压dp(Traveling Saleman Problem)

    题目链接:http://poj.org/problem?id=3311 题意:一个人到一些地方送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短.最后输出最短距离即可.注意:每一 ...

  5. [NOIP2016]愤怒的小鸟 D2 T3 状压DP

    [NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...

  6. 【BZOJ2073】[POI2004]PRZ 状压DP

    [BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...

  7. bzoj3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(spfa+状压DP)

    数据最多14个有宝藏的地方,所以可以想到用状压dp 可以先预处理出每个i到j的路径中最小权值的最大值dis[i][j] 本来想用Floyd写,无奈太弱调不出来..后来改用spfa 然后进行dp,这基本 ...

  8. HDU 1074 Doing Homework (状压dp)

    题意:给你N(<=15)个作业,每个作业有最晚提交时间与需要做的时间,每次只能做一个作业,每个作业超出最晚提交时间一天扣一分 求出扣的最小分数,并输出做作业的顺序.如果有多个最小分数一样的话,则 ...

  9. 【BZOJ1688】[Usaco2005 Open]Disease Manangement 疾病管理 状压DP

    [BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) ...

  10. 【BZOJ1725】[Usaco2006 Nov]Corn Fields牧场的安排 状压DP

    [BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排 Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M< ...

随机推荐

  1. 文心一言 VS 讯飞星火 VS chatgpt (201)-- 算法导论15.2 6题

    六.用go语言,证明:对 n 个元素的表达式进行完全括号化,恰好需要 n-1 对括号. 文心一言,代码正常运行: 在Go语言中,证明对n个元素的表达式进行完全括号化恰好需要n-1对括号,可以通过数学归 ...

  2. 【Filament】Filament环境搭建

    1 前言 ​ Filament 是一个实时物理渲染引擎,用于 Android.iOS.Linux.macOS.Windows 和 WebGL 平台.该引擎旨在提供高效.实时的图形渲染,并被设计为在 A ...

  3. Elasticsearch系列之-linux.docker安装和基础操作及在Django中集成

    elasticsearch Elasticsearch是一个基于Lucene的搜索服务器,也是属于NoSQL阵营的数据库.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口提供 ...

  4. JVM-对象实例化

    JVM-对象实例化 1.创建对象的方式 new:最常见的方式.Xxx的静态方法,XxxBuilder/XxxFactory的静态方法 Class的newInstance方法:反射的方式,只能调用空参的 ...

  5. macOS Monterey 与以下电脑兼容下载操作流程解析

    有时在开发iOS应用时我们时常遇到各种情况,比如手机升级了Xcode不支持这时候需要安装xcode但是xcode需要依奈相应系统本人小编整理了这种情况无法解决问题. 首相打开苹果标志进入到下面界面 进 ...

  6. 【Azure 存储服务】Azure Storage Account 下的 Table 查询的性能调优

    问题描述 Azure Storage Account 下的 Table 查询的性能调优? 问题解答 因为Azure Storage Table服务(表服务) 与常规的关系型数据库不一样(例如:MySQ ...

  7. 【Azure 应用服务】App Service For Linux 环境中,如何从App Service中获取GitHub私有库(Private Repos)的Deploy Key(RSA key)呢?

    问题描述 为App Service For Linux配置CI/CD,源代码在GitHub私有库中,在发布时候报错 Cannot find SourceControlToken with name B ...

  8. spring Cloud 有哪些组件?

    Eureka:服务注册与发现,每个服务都向eureka提供自己的ip地址,端口号,协议,通信协议,eureka将各个服务维护到一个服务清单中(双层map,第一层key为服务名,第二层key为实例名), ...

  9. 上来就对标 20k Star 的开源项目,是自不量力还是后起之秀?

    先来一段紧箍咒:nvm.fvm.gvm.sdkman.fnm.n.g.rvm.jenv.phpbrew.rustup.swiftenv.pyenv.rbenv... 这些都是用来解决编程语言多版本管理 ...

  10. FastStone Capture 屏幕录像软件推荐 支持录像的时候放大屏幕

    FastStone Capture(屏幕截图软件)v9.7中文注册版 http://www.ucbug.com/soft/25602.html