首页 > 其他分享 >#9134. 翻转硬币 题解

#9134. 翻转硬币 题解

时间:2023-10-12 15:25:20浏览次数:30  
标签:9134 题解 sqrt times 一段 操作 oplus dp 翻转

首先考虑一些简单的情况,比如 \(m=1\)。

容易发现操作 1 和操作 2 的顺序不会影响结果,于是可以钦定所有操作 1 在操作 2 之前。并且可以发现,进行完所有 1 后 2 的次数即为 \((\text{连续段个数}-1)\)。

然后考虑将 \(m>1\) 的情况。显然最后序列上每 \(m\) 长度分一段,则每一段都相同,最后一段例外,是和其他段的一段等长前缀相同。那么设最后每段都为 \(S\),一开始每段的状态为 \(A_i\),则在所有操作 2 之前,都有 \(S=A_i\) 或 \(S=flip(A_i)\)。\(flip(X)\) 表示把 \(X\) 串内所有数 \(\oplus 1\)。然后定义一个序列 \(c_i\) 表示第 \(i\) 段有没有被 \(flip\)。则与 \(m=1\) 时一样,需要进行操作 2 的次数即为 \(c\) 的连续段个数。

上面的是 naive 的,相信大家赛时都想出来了。

然后考虑如何解决这个转化后的问题。如果考虑 dp,则会发现不管将这个状态和操作 1 还是 2 联系起来,都会对另一种操作有后效性。很难设计状态。贪心什么的就更难了。

此时发现我们的路已经被堵死了。那就要从头开始考虑这个问题。

我们观察一下数据范围,\(n\leq300\)。很像一个 \(n^3\) 的问题。但是刚才已经基本否定了常规解法。

你突然想到 \(m\) 长度一段,就共有 \(\left\lceil\dfrac{n}{m}\right\rceil\) 段。看到这个分数,联系 \(n\leq300\),你发现 \(\sqrt n\leq20<\log 10^6\)。你发现你可以根号分治!

  • \(m\leq\sqrt n\)

则上文的 \(S\) 长度 \(\leq 20\)。暴力状压 \(S\),对于每一种 \(S\),考虑 dp。设 \(dp_{i,0/1}\) 为当前处理到第 \(i\) 段,有没有翻转的最小操作数。则有:

\[dp_{i,j}=\min(dp_{i-1,j}+\operatorname{popcount}(S\oplus c_i\oplus(j\times (2^m-1)),dp_{i-1,j\oplus 1}+\operatorname{popcount}(S\oplus c_i\oplus(j\times (2^m-1)))+1) \]

其中 \((j\times (2^m-1))\) 部分是要看这一段是否翻转,\(+1\) 则是因为新增连续段。

初始状态为 \(dp_{0,0}=0\)

最后一个不完整的段要特殊处理,差别不大。

  • \(m>\sqrt n\)

则段数 \(\leq 20\)。暴力状压 \(c\),然后处理 \(S\)。根据 \(S\) 当前位 \(0/1\) 的数量,贪心地选择更小的,再加上操作 2 次数。全部取最小值即为答案。

时间复杂度 \(O(2^{\sqrt n}\times n)\)。挺稳的。

以上内容纯属杜撰。

标签:9134,题解,sqrt,times,一段,操作,oplus,dp,翻转
From: https://www.cnblogs.com/yinhee/p/fanzhuanyingbi.html

相关文章

  • [CF1098E] Fedya the Potter 题解
    [CF1098E]FedyathePotter题解前言一道类欧好题。题解这道题让求\(c\)数组的中位数,那么有一个比较套路的方法就是二分答案\(mid\)然后计算\(b\)数组中区间和小于\(mid\)的区间个数进行\(check\)。但是\(b\)数组总共有\(\mathcal{O}(n^2)\)项,考虑如何优化。因......
  • [ABC245G] Foreign Friends 题解
    [ABC245G]ForeignFriends题解想法考虑所有颜色相同的弱化版。这种情况下,只需要把所有特殊点都推入队列之后跑多源Dijkstra即可。思路正解与上述做法大致相同。如果有颜色限制,那么可以考虑这个神仙思路:把所有特殊点的颜色用二进制表示,对于每一位,这一位是\(0\)的特殊......
  • CF882E1+CF1882E2 Two Permutations 题解-构造题
    CF882E1+CF1882E2TwoPermutations题解-构造题哇,人类智慧,太智慧了。。。此题作为20231010联考的T3。感觉赛时根本没有去往这方面想。CF1882E1CF1882E2E1是简单版,就是没有要求操作数最小化。E1-EasyVersion方法1首先考虑没有次数限制的,对于单独的每一个串的情况。......
  • [USACO17JAN] Promotion Counting P 题解
    [USACO17JAN]PromotionCountingP题解前言好久没写题解了,今天趁我心情好赶紧水一篇。思路首先拿到这题,关键词检索:子树,比\(p_i\)大的,树状数组!现在考虑如何去掉其他子树的贡献……emm,我直接在算贡献的时候去掉其他子树的贡献不就好了!当然,暴力去贡献复杂度肯定爆炸,这里考虑......
  • [USACO08FEB]meteor Shower S题解(bfs)
    题目描述贝茜听说一场特别的流星雨即将到来:这些流星会撞向地球,并摧毁它们所撞击的任何东西。她为自己的安全感到焦虑,发誓要找到一个安全的地方(一个永远不会被流星摧毁的地方)。如果将牧场放入一个直角坐标系中,贝茜现在的位置是原点,并且,贝茜不能踏上一块被流星砸过的土地。根据预......
  • FileZilla 超时连接失败问题解决办法
    1.确保ubuntu支持FTP   就是安装ssh。      首先查看你有没有:sudops-e|grepssh红色箭头存在就代表你有的!如果没有那就去安装吧!2.确保ubuntu和windouws都关闭防火墙!【1】ubuntu打开终端输入:sudoufwdisable就会出现【2】windows中在搜索框中搜索防火墙:关闭......
  • 网络规划设计师真题解析--SNMP管理(安全威胁)
    在网络管理中要防范各种安全威胁。在SNMP管理中,无法防范的安全威胁是(35)。A.篡改管理信息:通过改变传输中的SNMP报文实施未经授权的管理操作B.通信分析:第三者分析管理实体之间的通信规律,从而获取管理信息C.假冒合法用户:未经授权的用户冒充授权用户,企图实施管理操作D.截获:未经授权......
  • P1457 [USACO2.1] 城堡 The Castle 题解
    分析感觉没有蓝题难度一道bfs题目,相较于大部分bfs题,它较为复杂,但分析一下还是很好水过的。建立墙时,可以用三维数组,\(wall_{~i,~j,~pos}\)表示第\(i\)行第\(j\)列\(pos\)方向有墙。观察发现,\(8=2^3,4=2^2,2=2^1,1=2^1\),于是可以用位运算快速储存。这里给出......
  • Ubuntu无法联网问题解决
    前言会有不同种原因导致系统无法联网,我遇到的可能只是其中一种,建议多问问ChatGPT,每一步遇到的问题问问人家应该能解决我遇到的情况是,之前一直能联网,然后一段时间不登就连不上网,然后又好了,然后又连不上网因此也把我这种情况的解决方案记录一下,以备不时之需   解决步骤......
  • Shuffle 题解
    Shuffle题目大意给定一个长度为\(n\)的01序列\(a\),你可以进行至多一次以下操作:选定\(a\)的一个连续段,满足连续段内恰好有\(k\)个\(1\),将该连续段任意排列。问能产生多少种不同的01序列。思路分析(这题\(n\)完全可以开到\(10^6\)或是\(10^7\),因为存在\(O(......