状态压缩DP

哈密顿路径问题:

一般设f[i][j] 表示 i 状态下,j为最后一个最值情况 。

一般有两种稍微不同的写法,单纯就是写法不同,思路方法都相同。

第一个例题为第一种转移方法,有当前转移后面。

后面的都是由前面转移目前。

G. Shuffling Songs

题意:就是要你删除最少的歌曲,使其播放精彩,每对相邻的歌曲要么作者相同,要么流派相同(或两者皆有)即为精彩。

思路:观察数据范围可以发现2的16次方枚举,类似哈密顿路劲问题转移即可

string g[N], s[N];
int n;
void solve()
{cin >> n;for (int i = 0; i < n; i++)cin >> g[i] >> s[i];vector<int> e(n, 0);for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (g[i] == g[j] || s[i] == s[j])e[i] |= (1 << j);}}vector<vector<int>> f(1 << n, vector<int>(n, 0));for (int i = 0; i < n; i++)f[1 << i][i] = 1;for (int i = 0; i < (1 << n); i++){for (int j = 0; j < n; j++) // 最后一个点是谁{if (!f[i][j])continue;for (int k = 0; k < n; k++){if (i >> k & 1) // 加进去一个点continue;if ((e[j] >> k) & 1){f[i | (1 << k)][k] = 1;}}}}int ans = 0;for (int i = 0; i < (1 << n); i++){for (int j = 0; j < n; j++)if (f[i][j])ans = max(ans, __builtin_popcount(i));}cout << n - ans << endl;
}

AcWing 731. 毕业旅行问题

同理也是哈密顿路径问题


int g[M][M];
int f[1 << 20][20];
void solve()
{int n;cin >> n;for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)cin >> g[i][j];memset(f, inf, sizeof f);f[1][0] = 0;for (int i = 0; i < (1 << n); i++){for (int j = 0; j < n; j++){if (i >> j & 1){for (int k = 0; k < n; k++){if (i - (1 << j) >> k & 1){f[i][j] = min(f[i][j], f[i - (1 << j)][k] + g[k][j]);}}}}}int ans = 1e18;for (int i = 1; i < n; i++)ans = min(ans, f[(1 << n) - 1][i] + g[i][0]);cout << ans << endl;
}

91. 最短Hamilton路径


int f[1 << 20][21];
int g[M][M];
void solve()
{int n;cin >> n;for (int i = 0; i < n; i++){for (int j = 0; j < n; j++)cin >> g[i][j];}memset(f, 0x7f, sizeof f);f[1][0] = 0;for (int i = 0; i < (1 << n); i++){for (int j = 0; j < n; j++){if (i >> j & 1){for (int k = 0; k < n; k++){if (i - (1 << j) >> k & 1){f[i][j] = min(f[i - (1 << j)][k] + g[k][j], f[i][j]);}}}}}cout << f[(1 << n) - 1][n - 1] << endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/588935.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果IPA上传技巧:优化应用提交流程,提高通过率

目录 引言 摘要 第二步&#xff1a;打开appuploader工具 第二步&#xff1a;打开appuploader工具&#xff0c;第二步&#xff1a;打开appuploader工具 第五步&#xff1a;交付应用程序&#xff0c;在iTunes Connect中查看应用程序 总结 引言 在将应用程序上架到苹果应用商…

阿里云未来20%代码由AI编写;支付宝开放「AI 就医助理」

阿里云未来 20% 代码由通义灵码编写 阿里云于 4 月 2 日开始&#xff0c;在内部全面推行 AI 编程&#xff0c;使用通义灵码辅助程序员写代码、读代码、查 BUG、优化代码等。阿里云此次还专门给通义灵码分配了一个正式的员工工号—— AI001 。 有阿里云相关人士表示&#xff0c…

在电脑上怎么把视频做成二维码?视频生码的方法及步骤

在电脑上怎么把视频做成二维码呢&#xff1f;现在将视频存入二维码之后&#xff0c;将二维码分享或者打印出来&#xff0c;用这种方式来分享或者传递视频对比传统方式会更加的方便快捷。无需占用接收者的内存&#xff0c;手机扫码调取云端储存的视频&#xff0c;消耗视频流量来…

Flink 流批一体在模型特征场景的使用

摘要&#xff1a;本文整理自B站资深开发工程师张杨老师在 Flink Forward Asia 2023 中 AI 特征工程专场的分享。内容主要为以下四部分&#xff1a; 模型特征场景流批一体性能优化未来展望 一、 模型特征场景 以下是一个非常简化并且典型的线上实时特征和样本的生产过程。 前面…

鸿蒙OS开发实例:【应用状态变量共享】

平时在开发的过程中&#xff0c;我们会在应用中共享数据&#xff0c;在不同的页面间共享信息。虽然常用的共享信息&#xff0c;也可以通过不同页面中组件间信息共享的方式&#xff0c;但有时使用应用级别的状态管理会让开发工作变得简单。 根据不同的使用场景&#xff0c;ArkT…

基于单片机20v数字电压表仿真系统设计

**单片机设计介绍&#xff0c;基于单片机20v数字电压表仿真系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机20V数字电压表仿真系统设计的主要目标是实现一个能够准确测量和显示20V直流电压的仿真系统。以下是该设计的主…

算法学习——LeetCode力扣图论篇2(1020. 飞地的数量、130. 被围绕的区域、827. 最大人工岛)

算法学习——LeetCode力扣图论篇2 1020. 飞地的数量 1020. 飞地的数量 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一个大小为 m x n 的二进制矩阵 grid &#xff0c;其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相…

C++——哈希(二)unordered_map和unordered_set的封装

前言 在上一篇文章中我们已经对闭散列的哈希表(线性探测法)和开散列的哈希表(哈希桶)进行了简单的模拟实现&#xff0c;由于是简单实现&#xff0c;功能简单、没有迭代器且不支持不同的类型(非泛型编程)。此时我们这篇文章主要是对上次开散列哈希表的完善并用其封装出unordere…

xray扫描器安装

项目地址 xray community 访问进入xray目录选择适合自己的版本 下载解压 winR输入powershell cd进入xray目录 输入下述命令生成证书 .\xray_windows_amd64.exe genca 在浏览器中设置中找到隐私管理证书 点击管理证书&#xff0c;导入 找到之前xray的目录导入证书 点击浏览…

【Linux】Vim编辑器

专栏文章索引&#xff1a;Linux 目录 在Vim编辑器中&#xff0c;一个Tab键相当于几个空格&#xff1f; 在Vim编辑器中&#xff0c;一个Tab键相当于几个空格&#xff1f; 在Vim编辑器中&#xff0c;默认情况下&#xff0c;一个Tab键相当于8个空格。 这是Vim的默认设置&#x…

16.springboot项目下使用事务(springboot-016-transaction)

事务是一个完整的功能&#xff0c;也叫作是一个完整的业务 事务只跟什么SQL语句有关&#xff1f;事务只跟DML语句有关系&#xff1a;增删改 DML,DQL,DDL,TCL,DCL 首先添加两个依赖以及MyBatis代码自动生成插件 <!--MySql驱动--><dependency><groupId>mysql…

Verilog语法回顾--用户定义原语

目录 用户定义原语 UDP定义 UDP状态表 状态表符号 组合UDP 电平敏感UDP 沿敏感时序UDP 参考《Verilog 编程艺术》魏家明著 用户定义原语 用户定义原语&#xff08;User-defined primitive&#xff0c;UDP&#xff09;是一种模拟硬件技术&#xff0c;可以通过设计新的原…