首页 > 其他分享 >luogu P7740 [NOI2021] 机器人游戏

luogu P7740 [NOI2021] 机器人游戏

时间:2023-06-14 21:22:38浏览次数:53  
标签:P7740 frac luogu 可以 容斥 NOI2021 枚举 dp

题面传送门

一个 bitset 值 52 分?

首先样例让你容斥你就容斥,枚举哪些位是可以的,计算每一位的 \(p_0,p_1,q_0,q_1\) 表示是否被要求最后是 \(0/1\),是否有最终值是开始值异或 \(0/1\)。然后每个位置的贡献可以分类讨论出来:

  • 如果 \(p_0,p_1\) 或者 \(q_0,q_1\) 都有,那只能空着。
  • 如果 \(p_0,p_1\) 中有一个且 \(q_0,q_1\) 中有一个,那除了空着还有恰好一种方法。
  • 否则都可以填。

这样可以得到一个 \(O(2^n\operatorname{poly}(nm))\) 的做法,期望得分 \(28\)。

\(n\) 这么小考虑根号分治,按照第一种容斥暴力枚举前 \(\frac{n}{2}\) 位。如果后 \(\frac{n}{2}\) 位有值,说明向右走的步数不超过 \(\frac{n}{2}\),计算某个位置的贡献时有用的也就只有前 \(\frac{n}{2}\) 位。

考虑 dp,先枚举最后一位在哪里,然后设 \(dp_{i,S}\) 表示到了第 \(i\) 位,前面 \(\frac{n}{2}\) 位是 \(S\)。平衡可以得到一个 \(O(2^{\frac{n}{2}}n^2m)\) 的做法,大概能过 \(48\) 分。

主要的瓶颈在于计算贡献。首先是可以 bitset 优化,变成 \(O(\frac{2^{\frac{n}{2}}n^2m}{\omega})\),然后我们发现我们实际上要求的是一个子集异或的形式,所以可以每次分成刨掉最低位和最低位或起来,这样可以优化到 \(O(\frac{2^{\frac{n}{2}}nm}{\omega})\),就稳过了。

submission

标签:P7740,frac,luogu,可以,容斥,NOI2021,枚举,dp
From: https://www.cnblogs.com/275307894a/p/17481371.html

相关文章

  • Luogu P7118
    题面题意很清楚,就不复述了。不难发现,我们首先要求出场景数小于给定galgame的galgame数量,于是我们需要求出场景数\(=i\)的galgame数量,设为\(f_i\)。考虑根节点,当A场景大小为\(j\)时,B场景的大小为\(i-j-1\)。枚举每个\(j\),不难得到\(f_i=\sum\limits_{j=0}^{i-1......
  • Luogu P2580 于是他错误的点名开始了
    于是他错误的点名开始了题目背景XS中学化学竞赛组教练是一个酷爱炉石的人。他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛CON900)。题目描述这之后校长任命你为特派探员,每天记录他的点......
  • Luogu P3435 [POI2006] OKR-Periods of Words
    [POI2006]OKR-PeriodsofWords题面翻译对于一个仅含小写字母的字符串\(a\),\(p\)为\(a\)的前缀且\(p\nea\),那么我们称\(p\)为\(a\)的proper前缀。规定字符串\(Q\)(可以是空串)表示\(a\)的周期,当且仅当\(Q\)是\(a\)的proper前缀且\(a\)是\(Q+Q\)的前缀......
  • Luogu P2375 [NOI2014] 动物园
    [NOI2014]动物园题目描述近日,园长发现动物园中好吃懒做的动物越来越多了。例如企鹅,只会卖萌向游客要吃的。为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法。某天,园长给动物们讲解KMP算法。园长:“对于一个字符串\(S\),它......
  • Luogu P4824 [USACO15FEB] Censoring S
    [USACO15FEB]CensoringS题面翻译FarmerJohn为他的奶牛们订阅了GoodHooveskeeping杂志,因此他们在谷仓等待挤奶期间,可以有足够的文章可供阅读。不幸的是,最新一期的文章包含一篇关于如何烹制完美牛排的不恰当的文章,FJ不愿让他的奶牛们看到这些内容。FJ已经根据杂志的所有文字,......
  • Luogu P3375 【模板】KMP字符串匹配
    【模板】KMP字符串匹配题目描述给出两个字符串\(s_1\)和\(s_2\),若\(s_1\)的区间\([l,r]\)子串与\(s_2\)完全相同,则称\(s_2\)在\(s_1\)中出现了,其出现位置为\(l\)。现在请你求出\(s_2\)在\(s_1\)中所有出现的位置。定义一个字符串\(s\)的border为\(s\)......
  • Luogu P3167 [CQOI2014]通配符匹配
    [CQOI2014]通配符匹配题目描述几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户。最常见的通配符有两个,一个是星号(”“'),可以匹配0个及以上的任意字符:另一个是问号(”?“),可以匹配恰好一个任意字符。现在需要你编写一个程序,对于给定的文件名列表和一个包......
  • Luogu P4591 [TJOI2018]碱基序列
    [TJOI2018]碱基序列题目描述小豆参加了生物实验室。在实验室里,他主要研究蛋白质。他现在研究的蛋白质是由\(k\)个氨基酸按一定顺序构成的。每一个氨基酸都可能有\(a\)种碱基序列\(s_{i,j}\)构成。现在小豆有一个碱基串\(s\),小豆想知道在这个碱基上都多少中不同的组合方式可能得......
  • Luogu P4159 [SCOI2009] 迷路
    [SCOI2009]迷路题目背景windy在有向图中迷路了。题目描述该有向图有\(n\)个节点,节点从\(1\)至\(n\)编号,windy从节点\(1\)出发,他必须恰好在\(t\)时刻到达节点\(n\)。现在给出该有向图,你能告诉windy总共有多少种不同的路径吗?答案对\(2009\)取模。注意:windy......
  • Luogu P1939 【模板】矩阵加速(数列)
    【模板】矩阵加速(数列)题目描述已知一个数列\(a\),它满足:\[a_x=\begin{cases}1&x\in\{1,2,3\}\\a_{x-1}+a_{x-3}&x\geq4\end{cases}\]求\(a\)数列的第\(n\)项对\(10^9+7\)取余的值。输入格式第一行一个整数\(T\),表示询问个数。以下\(T\)行,每行一个正......