首页 > 其他分享 >状压dp总结

状压dp总结

时间:2023-08-25 19:33:08浏览次数:44  
标签:总结 寿司 度为 状压 晚宴 质因数 dp

状压 dp 总结

三进制状压

Q&A

1.如果我的当前的dp值需要前两个状态才可以推导出来怎么办?

很简单,既然我们无法舍弃任何一个状态那我们就加一维将它纳入考虑范围之内,就拿 P8756 [蓝桥杯 2021 省 AB2] 国际象棋做列子
我们本列的马最远是可以威胁到前两列的马,那么我们就让 dp 表示这一列与上一列的马的情况,这样子转移就很明了了.

for(int i=1;i<=m;i++)
    for(int L=0;L<=(1<<n)-1;L++)
        for(int S=0;S<=(1<<n)-1;S++)
            for(int T=0;T<=(1<<n)-1;T++)
                dp[i][S][T]= contribution(dp[i-1][L][S]);//contribution()这个状态从上一个状态得到的贡献

值得注意的是这个数组肯定是要滚动的,不然爆空间是一件无疑的事情.
类似这样的题目

P2704	[NOI2001] 炮兵阵地
P8756	[蓝桥杯 2021 省 AB2] 国际象棋

2.如果数值太大我们的状态放不下怎么办?
3.如果要考虑

提出这么多个疑问都是为了引出这道题,因为实在觉得这道题出的太好了.

$P2150 [NOI2015] 寿司晚宴$

[NOI2015] 寿司晚宴

题目描述

为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。

在晚宴上,主办方为大家提供了 $n−1$ 种不同的寿司,编号 $1,2,3,\ldots,n-1$,其中第 $i$ 种寿司的美味度为 $i+1$。(即寿司的美味度为从 $2$ 到 $n$)

现在小 G 和小 W 希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当:小 G 品尝的寿司种类中存在一种美味度为 $x$ 的寿司,小 W 品尝的寿司中存在一种美味度为 $y$ 的寿司,而 $x$ 与 $y$ 不互质。

现在小 G 和小 W 希望统计一共有多少种和谐的品尝寿司的方案(对给定的正整数 $p$ 取模)。注意一个人可以不吃任何寿司。

输入格式

输入文件的第 $1$ 行包含 $2$ 个正整数 $n, p$ 中间用单个空格隔开,表示共有 $n$ 种寿司,最终和谐的方案数要对 $p$ 取模。

输出格式

输出一行包含 $1$ 个整数,表示所求的方案模 $p$ 的结果。

提示

【数据范围】

勘误:$0 < p \le 10^9 $

可以从题目中提炼出来的较为浅显的信息:

1.要求全部互质,也就是两人所选的数包括的质因数集合没有交集,可以考虑从这里下手做状态
2.n≤500,我们简单写个输出质因数表的暴力,发现有整整92个质因数,显然直接用来做状态是会爆的

好了,就这些信息了,没了...
大部分选手已经可以根据这些信息得到一个30pts的状压了但我太蒟了
程序实现时盯着自己的草稿纸半天都没有一点动作,看了题解之后还是决定把暴力也详细的推一遍.

我们令n位二进制数表示现在已经包括了x个质因数(有则1无则0),我们先预处理一遍所有数的质因数(把他们转成形如上文的二进制数)
我们对于每一道菜有3种可选的转移:

1.给小G
2.给小W
3.都不给

我们定义dp的第一维表示小G的状态,第二维表示小W的状态

就会有

$1.dp[i][G|a[i]][W]+=dp[i-1][G][W]$
$2.dp[i][G][W|a[i]]+=dp[i-1][G][W]$
$3.dp[i][G][W]+=dp[i-1][G][W]$

注意我们这里转移之前都需要先判断会不会$(G&a[i])$和$(W&a[i])$都是有值的,也就是说要小心不要让他们吃到有相同质因子的菜啦
暴力告一段落,下面我们开始讲正解,

标签:总结,寿司,度为,状压,晚宴,质因数,dp
From: https://www.cnblogs.com/hugohu/p/17657789.html

相关文章

  • 20230825巴蜀暑期集训测试总结
    T1考场竟然没有想到单调栈!后面看题解一看到栈就顿悟了。考场打的时\(O(n\log^2n)\)倍增,挂掉了,区间求重复了。还T了一些点,应该是常数比较大。倍增在求答案的时候其实是可以做到\(O(\logn)\)的,但是我“执意”要求GCD,时间就炸掉了。GCD,LCM和倍数因数关系如果想成与乘除法......
  • 《LGJOJ 8.25》 测试总结
    纯菜了,属于是。中间还咕了很多场总结。。。\(T1\)简单游戏输入:输出:\(\color{red}analysis:\)考试的时候看错题了,寄。正常做就是直接暴力区间\(dp\)就好了就是正常的博弈论\(dp\)其他没什么好说的了,时间复杂度\(O(n^2)\)\(PS:\)挂成了\(30pts\)\(PS:\)没加......
  • 获得NPDP证书后,能做什么工作?
    NPDP全称为NewProductDevelopmentProfessional,中文翻译为产品经理国际资格认证。NPDP由美国产品开发与管理协会(PDMA)发起,是是国际公认的新产品开发专业认证,集理论、方法与实践为一体的全方位知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。目前NPDP认证已......
  • ios开发之 -- UIView总结
    如果想调用某个类的某个方法可以写成这样,这个方法来自NSObject类performSelector:performSelector:withObject:performSelector:withObject:withObject: 实际调用[selfperformSelector:@selector(displayViews)withObject:nilafterDelay:1.0f];有三个方法分别是//父视图......
  • untity的SerializedProperty介绍
    SerializedProperty是Unity中用于访问和修改序列化对象属性的类。在Unity中,序列化对象是指可以在Inspector面板中显示和编辑的对象,例如组件、脚本等。SerializedProperty提供了访问和修改序列化对象属性的方法,可以通过它来获取属性的值、设置属性的值、判断属性是否可见、获取属......
  • Kafka生产问题总结及性能优化实践
    Kafka可视化管理工具kafka-manager安装及基本使用可参考:https://www.cnblogs.com/dadonggg/p/8205302.html 线上环境规划 JVM参数设置kafka是scala语言开发,运行在JVM上,需要对JVM参数合理设置,参看JVM调优专题修改bin/kafka-start-server.sh中的jvm设置,假设机器是32G内......
  • 使用bootstrap总结
    bootstrap是个很不错的前端css框架,把很多按钮、表单、表格、图片css通用样式都写好了,而且浏览器兼容不需我们考虑尤其是它的栅格系统很强大,在做响应式布局时候很有用,但是默认支持12列,一般也足够了,如果要自定义列,就要它的less我没用过,网站性能优化里面有提尽量少用css表达式<!DOC......
  • [算法学习笔记] 换根dp
    换根dp一般不会指定根节点,并且根节点的变化会对一些值进行改变。因此我们需要转移根。换根dp一般需要预处理一下一个节点的值,然后对于任意节点开始树上dp转移。所以我们常用两次dfs,第一次dfs预处理,第二次dfs为树上dp。一般比较套路。接下来会给出一个典型例题。典例1:L......
  • 2023下半年杭州/武汉/深圳NPDP产品经理国际认证开班啦
    产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。  【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是全球范围内产品开发与管理专业人士最杰出的倡导者,协助个人、企业......
  • USART知识总结
    一、知识总结1.USART:(UniversalSynchronous/AsynchronousReceiverTransmitter)通用同步/异步串行收发送器。通常使用UART,UART异步收发器,是一种通用的串行、异步通信总线,该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信。2.并......