相似图片分类 [华为]【并查集】

这篇具有很好参考价值的文章主要介绍了相似图片分类 [华为]【并查集】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述:

小明想要处理一批图片,将相似的图片分类,他首先对图片的特征采样,得到图片之间的相似度,然后
按照以下规则判断图片是否可以归为一类:
1)相似度>0表示两张图片相似;
2)如果A和B相似,B和C相似,但A和C不相似,那么认为A和C间接相似,可以把ABC归为一类,但不计算AC的相似度;
3)如果A和所有其他图片都不相似,则A自己归为一类,相似度为0。
给定一个大小为N×N的矩阵M存储任意两张图片的相似度,M[i][j]即为第i个图片和第j个图片的相似度,请按照“从大到小”的顺序返回每个相似类
中所有图片的相似度之和。

输入描述:

第一行为一个整数N,代表矩阵M中有N个图片。下面跟着N行,每行有N列数据,空格分隔(为了显示整齐,空格可能为多个),代表N个图片之间的相似度。
约束:

  1. 0 < N <= 900
  2. 0 <= M[i][j] <= 100,输入保证 M[i][i]=0,M[i][j]=M[j][i]
  3. 输入的矩阵中分隔符为1个或连续多个空格

输出描述:

每个相似类的相似度之和。格式为:一行数字。分隔符为1个空格

样例1

输入
5
0 0 50 0 0
0 0 0 25 0
50 0 0 0 15
0 25 0 0 0
0 0 15 0 0
输出
62 25

样例2

输入
5
0 5 42 0 0
5 0 0 91 0
42 0 0 0 15
0 91 0 0 0
0 0 15 0 0
输出
153

样例3

输入
7
0 1 3 0 0 0 0
1 0 2 0 0 0 0
3 2 0 0 0 0 0
0 0 0 0 3 0 9
0 0 0 3 0 5 0
0 0 0 0 5 0 7
0 0 0 9 0 7 0
输出
24 6文章来源地址https://www.toymoban.com/news/detail-848681.html

AC代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 1010;

int n, m;
int k[N][N];
int p[N];
map<int, int> p2;
map<int, bool> p3;
vector<int> res;

int find(int x)
{
    if(p[x] != x) p[x] = find(p[x]);
    return p[x];
}

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i ++) p[i] = i;
    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j <= n; j ++)
        {
            cin >> k[i][j];
            if(k[i][j] > 0) p[find(i)] = find(j);
        }
    }
    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j <= n; j ++)
        {
            if(find(i) == find(j) && k[i][j] > 0) p2[find(i)] += k[i][j];
        }
    }
    for(int i = 1; i <= n; i ++)
    {
        if(p3[find(i)] == false)
        {
            res.push_back(p2[find(i)] / 2);
            p3[find(i)] = true;
        }
    }
    sort(res.begin(), res.end());
    reverse(res.begin(), res.end());
    for(int i = 0; i < res.size(); i ++)
    {
        if(i != res.size() - 1) cout << res[i] << " ";
        else cout <<  res[i];
    }
    return 0;
}

到了这里,关于相似图片分类 [华为]【并查集】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构与算法】并查集

    并查集是一个树形结构,所谓的并查,就是 当我们有了一个节点,我们就能知道这个节点属于哪个集合 。 举个例子理解以下:战国时期有很多国家,它们会互相打仗,那么现在有两个互相不认识的人,如何知道对方是敌是友呢? 现在有一种方法:每个国家都有一个大王,我

    2023年04月15日
    浏览(37)
  • 算法刷题day34:并查集

    今天写的题集是并查集,其实感觉有两个难点,一个是,要维护多余的信息和路径压缩,另一个难点则是抽象出来合并集合的这个操作,还是要不断地练习,看别人怎么去做,加油! 标签:并查集 思路: 模板题,没啥说的 题目描述: 示例代码: 标签:并查集 思路: 其实

    2024年03月21日
    浏览(65)
  • 算法与数据结构(九)--并查集

    1.处理对象:Disjoint Set,即“不相交集合”。 在一些应用问题中,需将n个不同的元素划分成一组不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定顺序将属于同一组元素的集合合并。其间要反复用到查询某个元素属于哪个集合的运算。适合于描述这类问题的

    2024年02月10日
    浏览(41)
  • 【算法日志】图论 并查集及其简单应用

    并查集是一种算法设计思想,通过判断两个元素是否在同一个集合里,常用来解决一些和图相关的连通性问题。 并查集主要有以下两个功能: 将两个元素添加到一个集合中。 判断两个元素是否是在一个集合之中(这一功能够有效判断是否成环)。 主要思想: 通过创建一个数组

    2024年01月23日
    浏览(48)
  • ⌈算法进阶⌋图论::并查集——快速理解到熟练运用

    目录  一、原理 1. 初始化Init   2. 查询 find  3. 合并 union 二、代码模板 三、练习 1、  990.等式方程的可满足性🟢 2、  1061. 按字典序排列最小的等效字符串🟢 3、721.账户合并 🟡 4、  839.相似字符串组🟡 5、  2812.找出最安全路径 🔴 并查集主要运用与求一些 不相交且有关

    2024年02月13日
    浏览(35)
  • 【算法证明 五】并查集的时间复杂度

    相信如果不是为了刷 leetcode 外,很少有数据结构的数介绍并查集这一数据结构的。并查集的算法模板写起来非常容易,所以刷了并查集相关算法题的人,应该也不会去深入分析这一数据结构,最多知道路径压缩、按秩合并可以做到非常快。深入一点知道 阿克曼函数 α ( n ) 阿

    2024年02月11日
    浏览(46)
  • 罗勇军 →《算法竞赛·快冲300题》每日一题:“小球配对” ← 并查集

    【题目来源】 http://oj.ecustacm.cn/problem.php?id=1850 http://oj.ecustacm.cn/viewnews.php?id=1023 【题目描述】 给定 n 个小球,编号为 1-n ,给定 m 个篮子,编号为 1-m 。 每个球只允许放入样例给定的编号为 Ai 或者 Bi 的两个篮子中的 1 个。 每个球必须放入某个篮子。 如果篮子中球的数量为奇

    2024年02月11日
    浏览(40)
  • 并查集维护额外信息,算法思路类似前缀和,结构类似扑克接龙

    240. 食物链 动物王国中有三类动物 A,B,CA,B,C, 这三类动物的食物链构成了有趣的环形 。 AA 吃 BB,BB 吃 CC,CC 吃 AA。 现有 NN 个动物,以 1∼N 1∼N 编号 。 每个动物都是 A,B,CA,B,C 中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这 NN 个动物所构成的

    2024年02月14日
    浏览(39)
  • [算法分析与设计] 3. 并查集分析与反阿克曼函数

    Union-Find 问题:给定 (n) 个元素,最初每个元素在一个集合中,有两种操作,union 表示合并两个集合,find 表示查询某个特定元素所在的集合。 并查集是一种数据结构。其为每个集合寻找一个代表元,代表元可以是任意的,也可以随操作变化,但需要满足任何时刻一个集合的

    2024年02月08日
    浏览(50)
  • AcWing 算法基础课二 数据结构 链表 栈 队列 并查集 哈希表

    链表题目:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 AcWing. 826.单链表 双链表 AcWing 827.双链表 AcWing 828.模拟栈 AcWing 3302.表达式求值 AcWing 829. 模拟队列 AcWing 830.单调栈 AcWing 154.滑动窗口 AcWing 831. KMP字符串 AcWing 835. Trie字符串统计 AcWing 143. 最大异或对 AcWing 836.合并集合

    2024年02月15日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包