题目传送门

最开始学状压的时候...学长就讲的是这个题。当时对于刚好像明白互不侵犯和炮兵阵地的我来说好像在听天书......。因为我当时心里想,这又不是什么棋盘,咋状压啊?!后来发现这样的状压多了去了hhh。后来这道题就一直压着了,现在对状压明白了一点便来填坑。


我们注意到,团体队员数$N$比较大,而团体数$M$很小(不能称为乐队)。那么我们可以在$m$上下功夫,把它压成二进制串。开始想的状态是0表示这个团体还没站好,1表示这个团体已经站好了。看了看jtdalao的文章发现自己的状态是对的,但是转移嘛...,有点迷感觉。一步一步来。首先我们肯定要枚举当前的状态是什么,按照状压dp的套路,我们接下来要枚举下这一次新站好的是哪个队。转移时我们需要用在新队站好前的状态所需的次数+站成新队另需要的人数。我们默认大家都是排成一列紧跟在一个人之后的,所以我们需要求出当前已经排到谁了。所以我们还需要开一个数组前缀和来记录排队的信息。设$sum[i][j]$表示到$i$位置,$j$团体的人数。

转移有:

$f[i]$=$min$$($f[i^(1<<j)]$+$num[j]$-($sum[pos][j]$-$sum[pos-num[j]][j]$))。

因为当前新加的段之前也可能有本队队员,所以把他们减去。

初值,因为求最小,所以开始赋成极大,$f[0]=0$。(边界)

之后就比较好想了==。


$Code$

 #include<cstdio>
#include<algorithm>
#include<cstring> using namespace std; int n,m,fAKe;
int f[<<],num[],sum[][]; int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
int x=;
scanf("%d",&x);
num[x-]++;
sum[i][x-]++;
for(int j=;j<m;j++)
sum[i][j]+=sum[i-][j];
}
fAKe=(<<m)-;
memset(f,0x3f,sizeof(f));
f[]=;
for(int i=;i<=fAKe;i++)
{
int pos=;
for(int j=;j<m;j++)
if(i&(<<j)) pos+=num[j];
for(int j=;j<m;j++)
f[i]=min(f[i],f[i^(<<j)]+num[j]-(sum[pos][j]-sum[pos-num[j]][j]));
}
printf("%d\n",f[fAKe]);
return ;
}

最新文章

  1. Mysql 5.7 Linux安装详细步骤
  2. checkbox与jq&lt;转&gt;
  3. asp.net mvc @Html.Raw 作用
  4. 使用ftp软件上传下载php文件时换行丢失bug
  5. C#怎样去掉对于用Splict分隔的数组中的空值?
  6. Android Socket编程学习笔记
  7. VellCar(我的钢管车)
  8. View.setTag()的作用
  9. c#wiform中KeyDown事件
  10. jQuery--效果和遍历
  11. kafka学习(二)-zookeeper集群搭建
  12. 【原】Spring和Dubbo整合案例和过程
  13. Singal Page App:使用Knockout和RequireJS创建高度模块化的单页应用引擎
  14. Unity 碰撞器和触发器的理解
  15. MQTT Client library for C (MQTT客户端C语言库-paho)
  16. ngRx 官方示例分析 - 5. components
  17. 谓词筛选表达式的扩展库PredicateLib
  18. Python——文件读取
  19. 原创:vsphere概念深入系列一:关于vsphere虚拟交换机的端口的数量限制。
  20. nginx + fastdfs 的开机自启动

热门文章

  1. js 监控浏览器关闭(完美兼容chrome &amp; ie &amp; fire fox)
  2. 关于Android滑动冲突的解决方法(二)
  3. Spyder的汉化
  4. ACM在线题库
  5. python day-15 匿名函数 sorted ()函数 filter()函数 map()函数 递归 二分法
  6. liberOJ#6006. 「网络流 24 题」试题库 网络流, 输出方案
  7. 理解yarn平台,理解万岁,肤浅理解也万岁~
  8. HDU1569 方格取数(2) —— 二分图点带权最大独立集、最小割最大流
  9. 织梦DedeCMS未审核文章更新为当前时间
  10. 类的加载、时机、反射、模板设计、jdk7/jdk8新特性(二十六)