当前位置: 首页 > news >正文

【天梯赛】L2_005 集合相似度(C++)

L2-005 集合相似度 - 团体程序设计天梯赛-练习集

代码实现(C++)

#include <iostream>
#include <vector>
#include <unordered_set>
#include <iomanip>

// 计算两个集合的相似度
double cal(const std::unordered_set<int>& set_a, const std::unordered_set<int>& set_b) {
    int num_shared = 0;
    // 遍历较小的集合,减少查找次数
    if (set_a.size() < set_b.size()) {
        for (int num : set_a) {
            if (set_b.count(num)) {
                num_shared++;
            }
        }
    } else {
        for (int num : set_b) {
            if (set_a.count(num)) {
                num_shared++;
            }
        }
    }
    // 计算相似度
    return static_cast<double>(num_shared) / (set_a.size() + set_b.size() - num_shared) * 100;
}

int main() {
    int N;
    std::cin >> N;
    std::vector<std::unordered_set<int>> sets(N + 1);
    // 读取每个集合的元素
    for (int i = 1; i <= N; i++) {
        int total;
        std::cin >> total;
        for (int j = 0; j < total; j++) {
            int cur;
            std::cin >> cur;
            sets[i].insert(cur);
        }
    }
    int total_test;
    std::cin >> total_test;
    // 处理每个查询
    for (int i = 0; i < total_test; i++) {
        int a, b;
        std::cin >> a >> b;
        double res = cal(sets[a], sets[b]);
        // 输出结果,保留两位小数
        std::cout << std::fixed << std::setprecision(2) << res << "%" << std::endl;
    }
    return 0;
}

http://www.dtcms.com/a/116973.html

相关文章:

  • Apache Kafka全栈技术解析
  • STM32——DMA
  • 从火险预测到智能指挥,地理信息系统的“硬核”突围
  • AI重构农业:从“面朝黄土“到“数字原野“的产业跃迁—读中共中央 国务院印发《加快建设农业强国规划(2024-2035年)》
  • InnoDB存储引擎的三大特性
  • 数字身份DID协议:如何用Solidity编写去中心化身份合约
  • 使用typedef和不使用的区别
  • PyTorch教程:如何读写张量与模型参数
  • 【科普】 探秘图像评价指标的奇妙世界
  • 可发1区的超级创新思路(python 实现):一种轻量化的动态稀疏门控网络
  • forms实现地铁跑酷小游戏
  • Spring的简单介绍
  • C++ std::shared_mutex
  • 汽车与航空航天领域软件维护:深度剖析与未来展望
  • SSH远程工具
  • C语言传参寄存器压栈流程总结
  • 洛谷 P1330 封锁阳光大学
  • C++11:lambda表达式
  • 说一下java的探针agent的应用场景
  • 如何用开源工具,把“定制动漫面具”做成柔性制造?
  • Github最新AI工具汇总2025年4月份第2周
  • 【SPSS/EXCEl】主成分分析构建__综合评价指数
  • 遥感卫星概述#卫星工程系列
  • Linux基本操作指令5(查看IP)
  • 【合新通信】光纤延迟线(ODL)的原理
  • 一周学会Pandas2 Python数据处理与分析-NumPy算术运算和统计计算
  • qml信号与槽函数
  • 《命理学》专项探究与研习
  • css2学习总结之尚品汇静态页面
  • ragflow本地部署(WSL下Ubuntu)