交换瓶子(图论 贪心)

1224. 交换瓶子 - AcWing题库

 把每一个瓶子看成一个点,从每个瓶子向他应该在的那个位置的瓶子连一条边

通过这个方式,我们就可以连出n条边 

观察可以发现这些图有特点:

n个点 连成n条边 

因为每个点会指向它应该在的位置的那个点,他所在位置的对应的点会指向他,所以每个点的出度和入度都为1

不会有以下情况

都会是一个一个环

 

最终希望完成的样子是一个升序的 ,把整个图都变成自环

对点进行操作,分两种情况:

1️⃣交换同一个环内的点

 

 如图,交换1 和 3的位置,意味着改变点1和点2的出边,让点1的出边指向点2先前出边方向,点2指向点1 先前出边的方向

可以发现将一个环裂开成了两个环

2️⃣交换不同环中的点

 可以发现合并了两个环

初始的时候我们假设有k个环,n个点,我们的目标是将所有的环拆解成自环,每次操作最多增加一个环,因此次数 >= n-k次,只要有一个环里面存在两个或以上的点,我们就必然可以把它分裂一下,变成两个环,所以必然存在一种方案,可以使我们恰好操作n-k次就可以把k个环分解成n个环

所以答案>=n-k 且可以取到n-k

#include <iostream>using namespace std;const int N = 1e4 + 10;int n;
int b[N];
bool st[N];int main() {cin >> n;for (int i = 1;i <= n;i++) {cin >> b[i];}int cnt = 0;for (int i = 1;i <= n;i++) {if (!st[i]) {cnt++;for (int j = i;!st[j];j=b[j]) {st[j] = true;}}}int res = n - cnt;cout << res << endl;return 0;
}

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

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

相关文章

汽车免拆案例 | 2007款宝马650i车发动机偶尔无法起动

故障现象 一辆2007款宝马650i车&#xff0c;搭载N62B48B发动机&#xff0c;累计行驶里程约为26万km。车主反映&#xff0c;发动机偶尔无法起动&#xff0c;故障频率较低&#xff0c;十几天出现1 次&#xff0c;且故障出现时起动机不工作。 故障诊断  接车后试车&#xff0c;…

oracle 取斜杠后字符

在Oracle中&#xff0c;可以使用SUBSTR和INSTR函数组合来取得斜杠后的字符。以下是一个示例SQL语句&#xff0c;它取得指定字段中最后一个斜杠后的所有字符&#xff1a; SELECT SUBSTR(column_name, INSTR(column_name, /, -1) 1) AS last_slash_after_char FROM table_name;…

厦门凯酷全科技有限公司怎么样?

随着短视频和直播带货的兴起&#xff0c;抖音电商平台迅速崛起&#xff0c;成为众多品牌和商家争夺的新战场。在这个竞争激烈的市场中&#xff0c;如何抓住机遇、实现销售增长&#xff0c;成为了每个企业面临的挑战。厦门凯酷全科技有限公司&#xff08;以下简称“凯酷全”&…

「Mac玩转仓颉内测版49」小学奥数篇12 - 图形变换与坐标计算

本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换&#xff0c;并学会用编程实现坐标变化。 关键词 小学奥数Python Cangjie图形变换坐标计算 一、题目描述 编写一个程序&#xff0c;模拟以下三种图形变换&a…

MBTI 16人格分析

文章目录 一、MBTI介绍二、十六种MBTI人格1.ESTJ&#xff1a;总经理2.ENTP&#xff1a;辩论家3.INTP&#xff1a;逻辑学家4.ISFJ&#xff1a;守卫者 三、4组人格分析1.E与I2.S与N3.T与F4.P与J 一、MBTI介绍 MBTI是一种人格类型理论模型。全称是“Myers-Briggs Type Indicator”…

2024 X-GAME 上海智能新能源汽车大数据竞赛决赛顺利举行,和鲸Heywhale连续五年助推新能源汽车产业发展

11月22日&#xff0c;第七届 X-GAME 上海智能新能源汽车大数据竞赛圆满落幕&#xff01;这是和鲸作为协办方第五年为 X-GAME 新能源汽车分析赛道提供全程支持&#xff0c;赋能新能源汽车的产业发展。自 2018 年首次举办以来&#xff0c;以“数联万物&#xff0c;车载未来”为主…

书生实战营第四期-进阶岛第六关-MindSearch 快速部署

一、开发环境配置 1、打开codespace主页&#xff0c;选择Blank模板进行创建 Codespaces 2、创建conda环境隔离并安装依赖 conda create -n mindsearch python3.10 -y conda init 因为是新建的codespace&#xff0c;在第一次创建conda环境时&#xff0c;需要conda init 然后再…

ubuntu16.04部署dify教程

文章目录 1、克隆 Dify 源代码至本地环境2、加速Dify镜像文件下载3、启动 Dify4、访问 Dify5、更新 Dify6、常见问题及解决方案&#xff08;1&#xff09;容器restarting&#xff08;2&#xff09;日志文件上限&#xff08;3&#xff09;重置管理员密码&#xff08;4&#xff0…

开发类似的同款小程序系统制作流程

很多老板想要开发一款和别人家类似的同款小程序系统&#xff0c;但是不知道该怎么开发制作&#xff0c;本文就为大家详细介绍一下开发类似的同款小程序的流程为大家做参考。 一、前期准备找到对标小程序&#xff1a;首先&#xff0c;需要找到你想要模仿的同款小程序&#xff0…

python joblib和pickle的详细对比和使用步骤

在当今数据驱动的时代&#xff0c;序列化&#xff08;Serialization&#xff09;成为了数据处理和存储中不可或缺的一部分。无论是在机器学习、数据分析&#xff0c;还是在日常的编程任务中&#xff0c;能够将复杂的数据结构转换为可存储或传输的格式&#xff0c;都是提升工作效…

[代码随想录Day32打卡] 理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

理论基础 题型 动归基础&#xff08;这一节就是基础题&#xff09;背包问题打家劫舍股票问题子序列问题 动态规划五部曲 确定dp数组及其下标的含义确定递推公式dp数组如何初始化遍历顺序打印dp数组 509. 斐波那契数 简单~ dp数组及下标含义&#xff1a; dp[i]表示第i各斐…

《操作系统 - 清华大学》6 -7:局部页面置换算法:Belady现象

文章目录 1. 定义2. LRU、FIFO和Clock的比较 1. 定义 局部页面置换算法的特点是针对一个正在运行的程序&#xff0c;它访问内存的情况&#xff0c;访问页的情况&#xff0c;来决定应该采取什么样策略&#xff0c;把相应的页替换出去&#xff0c;站在算法本身角度来考虑置换哪个…

Spring Boot 3 中Bean的配置和实例化详解

一、引言 在Java企业级开发领域&#xff0c;Spring Boot凭借其简洁、快速、高效的特点&#xff0c;迅速成为了众多开发者的首选框架。Spring Boot通过自动配置、起步依赖等特性&#xff0c;极大地简化了Spring应用的搭建和开发过程。而在Spring Boot的众多核心特性中&#xff…

maven报错“找不到符号“

问题 springboot项目 maven编译打包过程&#xff0c;报错"找不到符号" 解决 很多网上方法都试过&#xff0c;都没用 换jdk&#xff0c;把17->21

UnityShaderLab-实现溶解效果

实现思路&#xff1a; 使用一张噪声图&#xff0c;与一个Cut值计算&#xff08;加或减&#xff09;&#xff0c;将计算后的值赋值给Alpha,然后小于0的片段就被丢弃掉了。 ShaderGraph实现&#xff1a; ShaderLab实现&#xff1a; 效果&#xff1a; 未完待续。。。 参考链接…

硬件设计-TINA新建元器件仿真模型

目录 简介: 项目内容: 过程详情: 问题处理: 简介: 有时候,需要一些其他公司的元器件来进行仿真,这就需要使用到TINA的新建宏向导。 TINA是很好用的原理图仿真软件,先是绘制原理图,然后进行电路原理的仿真,如果原理图仿真,电路功能符合设计要求,就可以接下来把…

如何在HTML中修改光标的位置(全面版)

如何在HTML中修改光标的位置&#xff08;全面版&#xff09; 在Web开发中&#xff0c;控制光标位置是一个重要的技巧&#xff0c;尤其是在表单处理、富文本编辑器开发或格式化输入的场景中。HTML中的光标位置操作不仅适用于表单元素&#xff08;如<input>和<textarea…

Next.js 系统性教学:中间件与国际化功能深入剖析

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 一、Next.js 中间件 (Middleware) 功能解析 1.1 什么是中间件&#xff1f; 1.2 Next.js 中间件的工作机制 1.3 中间件的功能应用 身份验证与授权 请求重定向 修改请…

分布式 令牌桶算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 令牌桶算法 & 总结》《分布式 & 令牌桶算法 & 问题》 参考文献 《【算法】令牌桶算法》 概述 简介 TBA Token Bucket Algorithm 令牌桶算法是一种流行于网络通信领域的流量控制/频率限制算法。令牌…

正则表达式的高级方法

正则表达式的高级方法 正则表达式&#xff08;regex&#xff09;不仅仅是简单的模式匹配工具&#xff0c;它还提供了一系列高级功能&#xff0c;使得处理复杂文本任务变得更加灵活和强大。以下是一些Python中正则表达式的高级用法&#xff1a; 1. 命名捕获组 命名捕获组允许…