当前位置:网站首页>Exchange bottles (graph theory + thinking)
Exchange bottles (graph theory + thinking)
2022-07-06 03:44:00 【AC__ dream】

sample input 1:
5
3 1 2 5 4
sample output 1:
3
sample input 2:
5
5 4 3 2 1
sample output 2:
2The idea of this topic is difficult to think about , It is a problem combined with graph theory , We put this n A position can be regarded as n A little bit , For the first i The value of a point a[i], Jean di i Point to point a[i] A dot with a directed edge represents the i The final position of the value at point is a[i] A little bit , Because each point will only have a final position and the position will only be the final position of a point , So after connecting the edges according to the above method, there will only be one out edge and one in edge for each point , That is, it will form several rings , Follow the example first 1 Draw edges and analyze :

This is the graph built according to the above method , Now let's take a look at what changes will happen when we build a map after exchanging two points
At this time, the discussion should be divided into two situations , One is to exchange two points in a ring , The other is that the two points exchanged are located in two rings
Case one :( The two points of exchange are located in a ring , such as 1,2 Point on position )
be 1 The point on the position will point to 2 The point pointed by the position point , That is to say 1, and 2 The position will point to 1 The point the position points to , That is to say 3, So we'll find out 1 Forming a self ring , So the number of rings decreases 1
The second case :( The two points of exchange are located on two different rings , such as 1,5 Point on position )
be 1 The point on the position will point to 5 The point pointed by the position point , That is to say 4, and 5 The position will point to 1 The point the position points to , That is to say 3, In this way, we will find that the ring of these two points becomes a big ring , That is, the number of rings is reduced 1
Through the analysis of these two situations , We will find that if two points of the exchange are in a ring , Then the number of rings decreases 1, If two points of the exchange are on two different rings , Then the number of rings decreases 1, And our final situation is that all points form a self ring , That is, the number of rings is n, So we should exchange two points in a ring at a time to increase the number of rings 1. So the answer is n- At first, the number of rings
How to calculate the number of rings , A clever method is used here , Refer to code for details :
#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
const int N=10003;
int a[N];
bool vis[N];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
int cnt=0;
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
cnt++;
int t=i;
while(!vis[t])
{
vis[t]=true;
t=a[t];
}
}
}
printf("%d",n-cnt);
return 0;
}边栏推荐
- 给新人工程师组员的建议
- mysql从一个连续时间段的表中读取缺少数据
- Pointer for in-depth analysis (problem solution)
- Yyds dry inventory what is test driven development
- Pointer written test questions ~ approaching Dachang
- Cross origin cross domain request
- 2.2 STM32 GPIO操作
- How to standardize the deployment of automated testing?
- Esbuild & SWC: a new generation of construction tools
- 1.16 - check code
猜你喜欢

mysql从一个连续时间段的表中读取缺少数据

LTE CSFB test analysis

Pytorch基础——(1)张量(tensor)的初始化

Factors affecting user perception

3.1 rtthread 串口设备(V1)详解

Flask learning and project practice 8: introduction and use of cookies and sessions

JS music online playback plug-in vsplayaudio js

Python implementation of maddpg - (1) openai maddpg environment configuration

Remote Sensing Image Super-resolution and Object Detection: Benchmark and State of the Art

BUAA magpie nesting
随机推荐
js凡客banner轮播图js特效
[rust notes] 18 macro
Mysqldump data backup
BUAA喜鹊筑巢
2、GPIO相关操作
Yyds dry inventory what is test driven development
ESBuild & SWC浅谈: 新一代构建工具
Teach you to build your own simple BP neural network with pytoch (take iris data set as an example)
canvas切积木小游戏代码
[optimization model] Monte Carlo method of optimization calculation
Svg drag point crop image JS effect
The solution of permission denied (750 permissions should be used with caution)
Four logs of MySQL server layer
3.1 rtthread 串口设备(V1)详解
Canvas cut blocks game code
关于非虚函数的假派生
How do we make money in agriculture, rural areas and farmers? 100% for reference
MySQL 中的数据类型介绍
Why do you want to start pointer compression?
Introduction to data types in MySQL