当前位置: 首页 > news >正文

LGP3694 邦邦的大合唱站队 学习笔记

LGP3694 邦邦的大合唱站队 学习笔记

\(\texttt{Luogu Link}\)

前言

状压热身题。\(\texttt{Warm up!}\)

另外,你知道吗,设定上,邦邦已经火了……

题意简述

\(n\) 个偶像排成一列,他们来自 \(m\) 个不同的乐队。每个团队至少有一个偶像。现在要求重新安排队列,使来自同一乐队的偶像连续的站在一起。重新安排的办法是,让若干偶像出列(剩下的偶像不动),然后让出列的偶像一个个归队到原来的空位,归队的位置任意。问最少让多少偶像出列?

形式化题意:有长为 \(n\) 的序列 \(A\),值域 \([1,m]\)。保证 \([1,m]\) 的值全部出现过。可以这样调整:选取若干个下标,将它们上的元素重新排列。要求调整后每种取值的元素形成 \(1\) 个连续段。问至少选取多少个下标?

\(n\le 10^5\)\(m\le 20\)

做法解析

这是贪心还是 \(\texttt{DP}\)?感觉无论怎么样它进行操作时中间的的状态都好多啊……

“有若干颜色的若干元素,要交换位置或者干什么别的,中间换来换去一通”似乎很复杂,但这时候我们通常就要考虑:直接思考它的终态,对于所有颜色一种一种地把它的贡献作用到终态。

好巧不巧这道题就是一个如此的典例。显然最终队列的形态只有 \(2^m\) 种,而对于一个终态,我们尝试一个一个元素将其归位到它是简单的。

具体来说,我们直接状压 \(\texttt{DP}\)。我们的转移是往当前的队列末加一个颜色段。所以设 \(dp_S\) 为已经加入了 \(S\) 中所有颜色段的状态,\(len_S\) 为当前状态下队列的总长,显然没有后效性。我们增加颜色 \(i\) 时,要将 \((len_S,len_S+cnt_i]\) 这一段填满颜色 \(i\),因此除了 \(x\) 个本来就在该区间中的颜色 \(i\)(这个数目可以简单地前缀和求),其它的 \(i\) 肯定都要离开它的位置,这就是我们转移的代价。因为你整个转移中对每种颜色有且仅有一次计算代价,所以必然不重不漏。

讲完了。

代码实现

#include <bits/stdc++.h>
using namespace std;
using namespace obasic;
const int MaxN=1e5+5,MaxM=20,Inf=1e9;
int N,M,S[MaxN][MaxM],X,dp[1<<MaxM],len[1<<MaxM],alf;
int main(){readis(N,M);alf=(1<<M)-1;for(int i=1;i<=N;i++){for(int j=0;j<M;j++)S[i][j]=S[i-1][j];readi(X),X--,S[i][X]++;}fill(dp,dp+(1<<M),Inf),dp[0]=0;for(int s=0,t;s<=alf;s++){for(int j=0;j<M;j++){if((s>>j)&1)continue;t=s|(1<<j),len[t]=len[s]+S[N][j];minner(dp[t],dp[s]+(S[N][j]-(S[len[t]][j]-S[len[s]][j])));}}writi(dp[alf]);return 0;
}
http://www.zskr.cn/news/27724.html

相关文章:

  • TRAE 设计团队如何玩转 Vibe Coding(上)|高美感页面生成篇
  • 详细介绍:观察者模式(Observer Pattern)定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。
  • LeeCode_226反转二叉树
  • TRAE 设计团队如何玩转 Vibe Coding(下)|设计工具生成与提效篇
  • 取证-windbg和dmp,以及文件分析基本流程
  • 20232422 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 完整教程:C++项目:仿muduo库高并发服务器-------connection模块
  • 营销数字化专家要求
  • 完整教程:LeapMotion_Demo演示
  • [题解]P11126 [ROIR 2024] 三等分的数组 (Day 2)
  • 1111111111111
  • 数据库学习篇(持续更新中)
  • Fortinet产品安全漏洞分析:FGFM协议未经认证连接重置漏洞
  • Yolo11分割模型
  • 这是一个测试文档
  • 智联笔记项目——251022登录注册、后端管理及内容类型处理优化
  • 2025.10.22博客
  • 完整教程:基于WebAssembly的STEP文件3D在线查看器实现详解
  • 实用指南:86-python电网可视化项目-6
  • 通过电脑调试 Android/iOS 手机端网页
  • CMS垃圾回收器详解
  • 实用指南:生活琐记(3)
  • 设计模式-建造者模式 - 实践
  • 实用指南:C++设计模式_创建型模式_原型模式Prototype
  • 第二十一篇
  • [MS-DOS]MS-DOS 6.22 with CD-ROM Driver.ver.6.22.English下载与安装
  • 2025 年国内品牌设计公司最新推荐排行榜:聚焦行业领军者优势,精选优质服务商深度解析
  • 087_尚硅谷_switch使用细节(1)
  • 2025 年感温电缆厂家最新推荐权威榜单重磅发布,全方位解析头部品牌优势助力工业消防精准选型
  • 完整教程:2- 十大排序算法(希尔排序、计数排序、桶排序)