Codeforces Round #345 (Div. 2) E. Table Compression(并查集)


传送门

首先先从小到大排序,如果没有重复的元素,直接一个一个往上填即可,每一个数就等于当前行和列的最大值 + 1

如果某一行或列上有重复的元素,就用并查集把他们连起来,很(不)显然,处于同一行或列的相同元素始终应该保持一样的,然后再一个一个往上填

#include <bits/stdc++.h>#define N 1000007#define fi first#define se secondusing namespace std;pair <int, pair<int, int> > A[N];map <int, int> X, Y;int n, m;int Hx[N], Hy[N], ans[N], f[N];inline int find(int x)inline void uni(int x, int y)int main()sort(A, A + n * m);for(i = 0; i < n * m; i++)for(k = j + 1; k <= i; k++)for(k = j + 1; k <= i; k++)for(k = j + 1; k <= i; k++)j = i;}for(i = 0; i < n * m; i++)return 0;}

  



上一篇:[BZOJ3054] Rainbow的信号(考虑位运算 + DP?)

下一篇:[luoguP2331] [SCOI2005]最大子矩阵(DP)


并查集
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图