首页 > 其他分享 >邦邦的大合唱站队

邦邦的大合唱站队

时间:2024-01-30 11:46:35浏览次数:15  
标签:状态 大合唱 部分 乐队 站队 区间 出列 人数

这一道题目看到\(m\)很小,考虑状压

这个状压的状态只考虑了前\(l[S]\)的位置,后面的人都忽略了。由数学归纳法可以知道,这其实是正确的

我还要证明一下这种转移的正确性:即证明对一个区间\([1,r]\),当乐队顺序固定后,出列的人数最少就是\(r-\)一开始就在对应乐队的区间中的人数

其实用微扰很容易证明,如果存在一种最优方案,让某一个本来最开始就匹配的人(设为\(i\))出列了,那么最后这个人一定会走到这个乐队区间的另一个位置(设为\(j\)),然后他的这个原来的位置(\(i\))就会被另一个人(设为\(k\))来填充,如果是这样的话我们不如直接让\(i\)不出列,然后让\(k\)去填充\(j\)

我最开始的时候认为状态要把整个区间(即\([1,N]\))都考虑进去,所以我的\(f[i]\)表示状态为\(i\)的时候,不在\(i\)里面的乐队可以随便排的最少出队人数

倒是也能做,但是很麻烦,此时人数还是按照上面这样算,然后枚举最后一个乐队是多少,但是不能用\(i\)去除这最后一支的状态的\(f\)来转移,而是应该预处理另一个数组来转移。我们将出队人数分为三部分:第一部分就是最后一支队伍的不匹配人数,与\(i\)剩下的乐队怎么排列无关;第二部分就是\(i\)之外的乐队(排在\(l[S]\)后面),也与\(i\)剩下的乐队怎么排列无关;第一部分就是\(i\)剩下的乐队排列后的不匹配人数。以上三部分中的后两个部分需要预处理两个数组来进行转移

当然这道题目启发我们,费用提前计算别做多了。。只考虑当前状态是一个很典型的DP思想呀

标签:状态,大合唱,部分,乐队,站队,区间,出列,人数
From: https://www.cnblogs.com/dingxingdi/p/17996770

相关文章

  • P3694 邦邦的大合唱站队 题解
    原题链接:P3694思路状态设计因为这道题\(m\)的范围非常小,所以可以用\(m\)来作为状态。设\(dp_{i}\)表示\(m\)支队伍的状态为\(i\)时最少让多少偶像出列。预处理在转移之前,我们先要预处理出序列的前缀和\(sum_{i,j}\)表示第\(i\)个数之前有多少个值为\(j\)......
  • 洛谷 P1889 士兵站队
    洛谷\(P1889\)士兵站队问题简述这道题我们可以换另一种思路去看待它,就容易理解了:在一个平面上,把\(n\)个点排列在一条与\(x\)轴平行的直线的整点上,且相邻两点的距离为\(1\)。求一种排列方案,使得这\(n\)个点到目标位置的曼哈顿距离和最小。解法综述由于是求曼哈顿......
  • 洛谷P3694 邦邦的大合唱站队
    题目分析首先我们来抓题目里的关键信息:最少、M≤20那么由此得出做法就是DFS、贪心或DP,我们一一讨论DFS暴搜复杂度\(O(m!)\),只能过70%(70%它不香吗)贪心如果要贪心我......
  • 【题解】 洛谷P3694 邦邦的大合唱站队
    发现尽管\(n\)比较大,但\(m\)非常小,于是考虑状压。记\(dp_{i}\)表示满足条件的乐队集合为\(i\)时的最小出队人数,\(dp_i=\min\{dp_{i\\xor\\1<<k}\}+w_{i\\xo......