状态压缩DP

embedded/2024/12/23 4:24:06/

状态压缩DP

含义

是一种对状态表示形式的一种优化。

前置知识——常见的位操作

任何二进制数位;

  1. &1 得到它本身。
  2. ^1 则取反。
  3. &0 则赋值为 00。
  4. |1 则赋值为 11。

通常二进制的第一位我们称之为第零位。

  • (n>>k)&1 取出二进制下 nn 的第 kk 位(从右往左数)。
  • n&((1<<k)-1) 去除二进制下 nn 的右 kk 位。
  • n^(1<<k) 将二进制下 nn 的第 kk 位取反。
  • n|(1<<k) 将二进制下 nn 的第 kk 位赋值为 11。
  • n&(~(1<<k)) 将二进制下 nn 的第 kk 位赋值为 00。

模板例题——P10447 最短 Hamilton 路径

见 https://www.luogu.com.cn/article/z883dedy。

前置知识——常用优先级

四则运算符 >> 位移运算符 >> 位运算符 >> 逻辑运算符。

例题

First:P1879

定义状态 dp_{i,j}dpi,j​ 表示前 ii 行且第 ii 行的种草状态为二进制下的 jj 的方案数。

答案为所有 dp_{m,j}dpm,j​ 的和对 100000000100000000 取模。

维护 soil_isoili​ 表示第 ii 行的肥沃情况。当种草状态 j \& soil_i = jj&soili​=j,种草在肥沃土地上。

上下中草的两个状态按位与的结果为 00 时,不冲突。

种草状态 ii 左移 11 位后再和 ii 按位与的结果为 00 时,不冲突。

初始状态:dp_{0,0}=1dp0,0​=1

状态转移除了判肥沃以外还是有点板的。

Second:P2704 炮兵阵地

定义状态为 dp_{i,j,k}dpi,j,k​ 表示前 ii 行且第 ii 行状态为二进制下的 jj,第 i-1i−1 行的状态为二进制下的 kk 的最大炮兵数。

答案即为 dp_{n,j,k}dpn,j,k​ 的最大值。

状态转移稍有点ex。

提示:需要维护一个 soil_isoili​,soil[i]=(soil[i]<<1)+(c=='P');

初始状态:dp_{0,0}=0dp0,0​=0,其余 极小值。

优化:滚动数组、提前筛可能状态。

有Latex版请在安全访问中心 - 洛谷查看


http://www.ppmy.cn/embedded/95904.html

相关文章

[微软数据库]了解sql server数据库

一、介绍 SQL Server是由Microsoft开发和推广的关系数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的&#xff0c;并于1988年推出了第一个OS/2版本。 特点&#xff1a;图形化用户界面、飞赴的编程接口、很…

[免费]适用于 Windows 10 的十大数据恢复软件

Windows 10 是 Microsoft 开发的跨平台和设备应用程序操作系统。它启动速度更快&#xff0c;具有熟悉且扩展的“开始”菜单&#xff0c;甚至可以在多台设备上以新的方式工作。因此&#xff0c;Windows 10 非常受欢迎&#xff0c;我们用它来保存照片、音乐、文档和更多文件。但有…

redis集合若干记录

无序集合 redis通常使用字典结构保存集合数据&#xff0c;字典健存储集合元素&#xff0c;字典值为空。如果一个集合全为整数&#xff0c;使用字典就有点浪费了&#xff0c;redis使用intset保存。 插入元素到intset中 获取插入元素编码&#xff0c;如果插入元素编码级别高于int…

AI大模型入门基础教程(非常详细),AI大模型入门到精通,收藏这一篇就够了!

什么是 AI大模型&#xff1f; AI大模型是指使用大规模数据和强大的计算能力训练出来的人工智能模型。 这些模型通常具有高度的准确性和泛化能力&#xff0c;可以应用于各种领域&#xff0c;如自然语言处理、图像识别、语音识别等。 为什么要学AI大模型&#xff1f; 2024人工…

Python实现简单的马尔科夫链

之前为了应对数学建模&#xff0c;就学了一些数学模型&#xff0c;就比如马尔科夫链。 以下就是我写的简单的马尔科夫链&#xff1a; from typing import Any ,NoReturn from pprint import pprintclass MarkovChain(object):CACHE: dict[str : int] {}#实现简单的缓存classm…

【Python机器学习】Apriori算法——关联分析

从大规模数据集中寻找物品间的隐含关系被称为关联分析或者关联规则学习。这里的主要问题在于&#xff0c;寻找物品的不同组合是一项十分耗时的任务&#xff0c;所需的计算代价很高&#xff0c;蛮力搜索方法并不能解决这个问题&#xff0c;所以需要用更智能的方法在合理的时间范…

【二分查找】--- 二分模板总结

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Journey 从本博客开始&#xff0c;博主将开始分享二分查找算法的相关知识。 &#x1f3e0; 朴素二分模板 --- 二分查找 &#x1f4cc; 题目内容 二…

华慕水果,水果口感数字化开创者

华慕水果&#xff0c;致力于“水果口感数字化分级”产业&#xff0c;是国内首家“一果一测&#xff0c;口感精细分级”的水果供应商。 华慕水果口感数字化分级工厂&#xff0c;总部位于国家级科研单位-中华全国供销合作总社济南果品研究院内&#xff0c;院内有5800平方各类水果…