Codeforces 844 C Sorting by Subsequences(离散+dfs+排序)
来源:互联网 发布:淘宝商城女装夏装 编辑:程序博客网 时间:2024/06/07 03:36
题目地址
题意:给你一个序列,这个是序列是乱序的,你需要把它给排序,你有k个桶,每个数放入桶以后就会自动排序,然后再把这些数按原来的位置按现在的顺序放入,使得这个序列变得有序。问最大的k为多少?
思路:对这些数排个序因为要构成一个个的集合,所以每个集合必然是成环的,所以dfs一下就好了。然后每次dfs的时候下一步就是找该点排完序以后的位置上的数字是哪个,直到遇到被访问过的数。
#include <iostream>#include <stdio.h>#include <cstring>#include <vector>#include <queue>#include <map>#include <algorithm>#define N 100010#define INF 0x3f3f3f3fusing namespace std;int a[N], b[N], vis[N];map<int, int> mapp;vector<int> v[N];void dfs(int id, int num) { v[num].push_back(id); vis[id] = true; if (!vis[mapp[a[id]]]) { dfs(mapp[a[id]], num); }}int main() { cin.sync_with_stdio(false); int n; while (cin >> n) { for (int i = 1; i <= n; i++) { cin >> a[i]; b[i] = a[i]; v[i].clear(); } mapp.clear(); memset(vis, false, sizeof(vis)); sort(b + 1, b + 1 + n); for (int i = 1; i <= n; i++) { mapp[b[i]] = i; } int cnt = 0; for (int i = 1; i <= n; i++) { if (!vis[i]) { dfs(i, cnt); cnt++; } } cout << cnt << endl; for (int i = 0; i < cnt; i++) { cout << v[i].size(); for (int j = 0; j < v[i].size(); j++) { cout << " " << v[i][j]; } cout << endl; } } return 0;}
阅读全文
0 0
- Codeforces 844 C Sorting by Subsequences(离散+dfs+排序)
- Codeforces 844C Sorting by Subsequences【思维】
- CodeForces Sorting by Subsequences
- Codeforces AIM Tech Round 4 (Div. 2) C Sorting by Subsequences (dfs)
- CF C. Sorting by Subsequences AIM Tech Round 4 (Div. 2)(简单模拟)
- AIM Tech Round 4 (Div. 2) C. Sorting by Subsequences
- CodeForces 670C Cinema(排序,离散化)
- Codeforces 29C Mail Stamps 【离散化 + DFS】
- Codeforces 29C Mail Stamps【离散化+DFS】
- 【codeforces】C - Buggy Sorting
- CodeForcse 29C (DFS+离散化)
- codeforces 731C(DFS)
- codeforces 767C (dfs)
- Codeforces 264A Buggy Sorting(童年排序)
- Codeforces 314C. Sereja and Subsequences
- 【Codeforces 597C】 Subsequences - DP 主席树
- Codeforces 597C Subsequences dp + 树状数组
- codeforces-597C-Subsequences【树状数组】
- 石子合并(四边形优化第一题)
- EF更新错误:一个实体对象不能由多个 IEntityChangeTracker 实例引用
- memcached 操作
- JS 性能提升
- feign 9.3.0 学习笔记
- Codeforces 844 C Sorting by Subsequences(离散+dfs+排序)
- 310
- 311
- 312
- 313
- 相对路径绝对路径分析
- 霍夫变换圆形检测(基于OpenCV&Python)
- 人脸检测 各种 demo/api体验
- 论文复现