小猪存钱罐

这是一道关于算法优化的问题,Byteazar需要打开所有存钱罐来获取钥匙,目标是最少破坏存钱罐。给定每个钥匙所在的位置,需要找出打开所有存钱罐所需的最小破坏数。输入包括存钱罐数量和钥匙位置,输出是破坏的最少存钱罐数。题目对运行时间和内存有特定限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

Byteazar the Dragon 拥有 NN 个小猪存钱罐。每一个存钱罐能够用相应的钥匙打开或者被砸开。Byteazar 已经将钥匙放入到一些存钱罐中。现在已知每个钥匙所在的存钱罐,Byteazar 想要买一辆小汽车,而且需要打开所有的存钱罐。然而,他想要破坏尽量少的存钱罐,帮助 Byteazar 去决策最少要破坏多少存钱罐。

读入存钱罐的数量以及相应的钥匙的位置,求出能打开所有存钱罐的情况下,需要破坏的存钱罐的最少数量并将其输出。

输入描述

第一行:包括一个整数 N(1≤N≤10^6),这是 Byteazar the Dragon 拥有的存钱罐的数量。

存钱罐(包括它们对应的钥匙)从 1 到 N 编号。

接下来有 N 行:第 i+1 行包括一个整数 x,表示第 i 个存钱罐对应的钥匙放置在了第 x 个存钱罐中。

输出描述

输出一个整数,表示能打开所有存钱罐的情况下,需要破坏的存钱罐的最少数量。

输入输出样例

示例 1

输入

4
2
1
2
4

输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值