状态压缩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.mzph.cn/news/789394.shtml

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

相关文章

js中this指向以及改变this指向方法

js中this指向以及改变this指向方法 this指向 1、在构造函数中this指向实例化对象 2、在自定义对象的函数&#xff08;方法&#xff09;中this指向当前的对象 3、在普通函数中this指向window 4、在事件函数中this指向事件源 5、在定时器函数中this指向window 6、原型对象…

是谁?写的Java神作一出版就获Jolt图书大奖【抽奖赠书】

送书活动 1️⃣参与方式&#xff1a;点此参与抽书抽奖 2️⃣获奖方式&#xff1a;小程序随机 抽5位&#xff0c;每位小伙伴一本《Effective Java中文2024版》 3️⃣活动时间&#xff1a;截止到 2024-4-6 12:01:00 注&#xff1a;所有抽奖活动都是全国范围免费包邮到家&#xff…

Unity类银河恶魔城学习记录11-15 p117 Ice and Fire item Effect源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili IceAndFire_Controller.cs using System.Collections; using System.Coll…

MP4文件中h264的 SPS、PPS获取

MP4文件中h264的SPS、PPS获取 如下图所示&#xff0c;为avcC 1 【参考依据】ISO/IEC 14496-15 2 【综述】在H264中&#xff0c;SPS和PPS存在于NALU header中&#xff0c;而在MP4文件中&#xff0c;SPS和PPS存在于AVCDecoderConfigurationRecord&#xff0c; 首先要定位avcC. …

Ant Design Vue中的table与pagination的联合使用

效果&#xff1a; 代码&#xff1a; <a-table:dataSource"dataSource":columns"columns":pagination"pagination"change"handleTableChange":scroll"{ x: 100%, y: 600 }"> </a-table> export default defin…

基于springboot实现定时任务,并且添加Event事件处理机制

1、基于Spring-Event增加事件处理机制 import org.bson.Document; import org.springframework.context.ApplicationEvent;/*** 基于Spring-Event增加事件处理机制* create: 2024/4/1-13:33*/ public class SysProductConfigEvent extends ApplicationEvent {// 数据配置priv…

MetaGPT教程学习笔记

官方文档&#xff1a; MetaGPT: 多智能体框架 | MetaGPT 学习手册及教程&#xff1a; Docs Docs 第一章 前期准备 安装提供了两种方式&#xff0c;pip和github安装包。 配置也提供了两种方式&#xff0c;执行命令或在config.yaml中修改&#xff0c;需提前获取API key。 …

kubernetes-Pod基于污点、容忍度、亲和性的多种调度策略(二)

Pod调度策略 一.污点-Taint二.容忍度-Tolerations三.Pod常见状态和重启策略1.Pod常见状态2.Pod的重启策略2.1测试Always重启策略2.2测试Never重启策略2.3测试OnFailure重启策略&#xff08;生产环境中常用&#xff09; 一.污点-Taint 在 Kubernetes 中&#xff0c;污点&#x…

基于R、Python的Copula变量相关性分析及AI大模型应用

在工程、水文和金融等各学科的研究中&#xff0c;总是会遇到很多变量&#xff0c;研究这些相互纠缠的变量间的相关关系是各学科的研究的重点。虽然皮尔逊相关、秩相关等相关系数提供了变量间相关关系的粗略结果&#xff0c;但这些系数都存在着无法克服的困难。例如&#xff0c;…

智能电销机器人的功能体现

随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;已经深入到各个行业&#xff0c;其中智能电销机器人更是成为电销行业不可或缺的一部分。智能电销机器人采用先进的语音识别和自然语言处理技术&#xff0c;能够实现自动拨打、语音交互、数据记录等功能&#…

Nginx在Kubernetes集群中的进阶应用

简介 在现代DevOps环境中&#xff0c;Nginx作为负载均衡器与Kubernetes的Ingress资源的结合&#xff0c;为应用程序提供了强大的路由和安全解决方案。本文将深入探讨如何利用Nginx的灵活性和功能&#xff0c;实现高效、安全的外部访问控制&#xff0c;以及如何配置Ingress以优…

【MySQL】数据类型(1)

数据类型1 一、整形数据二、位图类型三、浮点类型 一、整形数据 我们的MySQL&#xff0c;有很多的数据类型&#xff0c;其中&#xff0c;我们在建表时&#xff0c;肯定要用到相应的数据类型。 整形有 tinyint, samllint , mediumint, int, bigint。 我们第一眼看上去&#x…

uniapp通过蓝牙传输数据 (安卓)

在uni-app中&#xff0c;可以通过原生插件的方式来实现蓝牙传输数据的功能。以下是一般的步骤&#xff1a; 1. 创建一个原生插件 在uni-app项目的根目录下&#xff0c;创建一个原生插件的目录&#xff0c;比如"uni-bluetooth"。然后在该目录下创建一个"Androi…

python类(对象)之间的关系

在Python中&#xff0c;类&#xff08;对象&#xff09;之间的关系是面向对象编程的核心概念之一。这些关系定义了类&#xff08;及其实例&#xff09;如何相互交互&#xff0c;以及它们如何构成程序的结构。 关联&#xff08;Association&#xff09; 关联是两个类之间的一种…

LeetCode207、210 课程表(图 dfs 拓扑排序)

官方题解主要思想是使用dfs进行拓扑排序。 课程表 class Solution:def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:edges collections.defaultdict(list) visited [0] * numCourses # 将列表初始化为numCourses个0# result []valid T…

数字化赋能农业:数字乡村促进农业现代化

随着信息技术的迅猛发展&#xff0c;数字化浪潮正以前所未有的速度席卷各行各业&#xff0c;农业领域也不例外。数字乡村战略作为推动农业现代化的重要手段&#xff0c;通过数字化技术的深度应用&#xff0c;为农业生产带来了革命性的变革。本文旨在探讨数字化如何赋能农业&…

经典 topk

347. 前 K 个高频元素 215. 数组中的第K个最大元素 703. 数据流中的第 K 大元素 692. 前K个高频单词 public class Solution {public List<String> topKFrequent(String[

算法学习17:背包问题(动态规划)

算法学习17&#xff1a;背包问题&#xff08;动态规划&#xff09; 文章目录 算法学习17&#xff1a;背包问题&#xff08;动态规划&#xff09;前言一、01背包问题&#xff1a;1.朴素版&#xff1a;&#xff08;二维&#xff09;2.优化版&#xff1a;&#xff08;一维&#xf…

主流公链文章整理

主流公链文章整理 分类文章地址&#x1f349;BTC什么是比特币&#x1f96d;BTCBTC网络是如何运行的&#x1f351;BTC一文搞懂BTC私钥&#xff0c;公钥&#xff0c;地址&#x1f955;ETH什么是以太坊&#x1f336;️基础知识BTC网络 vs ETH网络&#x1f95c;CosmosCosmos介绍&a…

c++对象指针

对象指针在使用之前必须先进行初始化。可以让它指向一个已定义的对象&#xff0c;也可以用new运算符动态建立堆对象。 定义对象指针的格式为&#xff1a; 类名 *对象指针 &对象; //或者 类名 *对象指针 new 类名(参数); 用对象指针访问对象数据成员的格式为&#xff1a…