newcoder61132F <结论:排序最小交换次数>
1.newcoder61132F <结论:排序最小交换次数>
2.newcoder61132L <multiset 维护中位数>题目
松鼠排序
n个不同的数,任意交换位置进行排序,其最小交换次数。
思路
结论:
参考:https://www.cnblogs.com/CDOI-24374/p/16410082.html
代码
Code
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
using LL = long long;
const int N = 1e5 + 10;
vector<int> adj[N];
bool vis[N];
void dfs(int u)
{
vis[u] = true;
for (auto v: adj[u]) if (!vis[v]) dfs(v);
}
void solv()
{
int n;
cin >> n;
for (int i = 1, a; i <= n; i ++)
{
cin >> a;
adj[a].push_back(i);
}
int cnt = 0;
for (int i = 1; i <= n; i ++)
if (!vis[i])
{
cnt ++;
dfs(i);
}
cout << n - cnt << endl;
}
int main()
{
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int T = 1;
// cin >> T;
while (T --)
{
solv();
}
return 0;
}
本文来自博客园,作者:O2iginal,转载请注明原文链接:https://www.cnblogs.com/o2iginal/p/17548615.html
合集:
ACM-newcoder
分类:
ACM竞赛
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律