1063 Set Similarity(详细注释+35代码+set的妙用)

这篇具有很好参考价值的文章主要介绍了1063 Set Similarity(详细注释+35代码+set的妙用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分数 25

全屏浏览题目

作者 CHEN, Yue

单位 浙江大学

Given two sets of integers, the similarity of the sets is defined to be Nc​/Nt​×100%, where Nc​ is the number of distinct common numbers shared by the two sets, and Nt​ is the total number of distinct numbers in the two sets. Your job is to calculate the similarity of any given pair of sets.

Input Specification:

Each input file contains one test case. Each case first gives a positive integer N (≤50) which is the total number of sets. Then N lines follow, each gives a set with a positive M (≤104) and followed by M integers in the range [0,109]. After the input of sets, a positive integer K (≤2000) is given, followed by K lines of queries. Each query gives a pair of set numbers (the sets are numbered from 1 to N). All the numbers in a line are separated by a space.

Output Specification:

For each query, print in one line the similarity of the sets, in the percentage form accurate up to 1 decimal place.

Sample Input:

3
3 99 87 101
4 87 101 5 87
7 99 101 18 5 135 18 99
2
1 2
1 3

Sample Output:

50.0%
33.3%

代码长度限制

16 KB

时间限制

500 ms

内存限制

64 MB

注意:set里存储的元素不包括重复的元素

#include<bits/stdc++.h> 
using namespace std;
const int N=55;
set<int>s[N];//存储某个集合的所有元素 
set<int>temp;//存储要查询的两个集合合并后的元素 
int main(){
    int n;
    cin>>n;
    int cur=1;
    while(n--){//输入集合个数 
        int m;
        scanf("%d",&m);
        while(m--){//输入每个集合里的元素 
            int t;
            scanf("%d",&t);
            s[cur].insert(t);//将元素压入第cur个集合 
        }
        cur++;
    }
    int k;
    cin>>k;
    while(k--){ 
        int a,b;
        scanf("%d %d",&a,&b);
        for(auto t:s[a])temp.insert(t); //将要查询的两个集合里的元素全部加入到临时的集合temp里
        for(auto t:s[b])temp.insert(t);
        int total=temp.size();//计算临时集合的大小(合并后的元素集合的大小) 
        int common=s[a].size()+s[b].size()-total;//计算相同的元素数量(简单的数学问题) 
        double res=common*100.0/total;//结果的百分比 
        printf("%.1f%\n",res);//保留一位小数 
        temp.clear();//每次清空临时集合 
    } 
    return 0;
}

 文章来源地址https://www.toymoban.com/news/detail-454401.html

到了这里,关于1063 Set Similarity(详细注释+35代码+set的妙用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • C++set和map详细介绍

    在本篇文章中,我们将会学到关联式容器set,multiset,map,multimap。 其中前两种容器对应我们上篇二叉树文章中的K模型,后两者容器对应我们的KV模型。 我们来详细看一下吧!!! 我们在之前学习到的vector,list,stack,queue等都属于序列式容器,底层是线性结构,只存储数据。 关联式

    2024年04月09日
    浏览(30)
  • Python中的set_xticks和set_xticklabels用法(附代码解释)

    设置刻度有两个方法: ax.set_xticks() 设置刻度 ,matplotlib将刻度放在对应范围的哪个位置,默认情况下这些刻度就是刻度标签; ax.set_xticklabels() ,可以将任何其他类型的值作为标签,可以赋值给之前已经设置过的set_xtick。 我们通过例子来解释说明: 代码解释 此时我们的生成

    2024年02月10日
    浏览(28)
  • c++ set用法详解超详细 适合零基础小白

    目录 1.set简介  2.插入数据  3.删除数据  4.其它常用方法 set 是 C++ 标准库中的一个容器,属于关联容器的一种。它是一个有序集合,其中的元素是唯一的,即每个元素只能在集合中出现一次。 set 是基于红黑树实现的,这使得插入、删除和查找操作的时间复杂度都是 O(log n)。

    2024年04月28日
    浏览(43)
  • 【vue】Vue 全局API 详细介绍(nextTick、set、delete、......)

    一、Vue.extend(options) 当然,我们也可以把使用extend创建出来的实例挂载到自定义标签上(这里不再展开)。 Vue.extend只是创建一个构造器,这个构造器预设一些参数,这个构造器创建可复用的组件。 其主要用来服务于Vue.component,用来生成组件。 二、 Vue.component Vue.component()会注

    2023年04月23日
    浏览(74)
  • 【FPGA 约束:set_clock_groups 之异步时钟】——详细解析

    【FPGA 约束:set_clock_groups 之异步时钟】——详细解析 FPGA 设计中,设置正确的时钟约束是非常重要的。在设计中,不同的时钟域之间都需要进行一定的同步和互锁,以保证系统能够正常工作。而异步时钟则是其中一个比较特殊的情况,其时序关系相对较为复杂,需要采用专门

    2024年02月09日
    浏览(43)
  • C++进阶:详细讲解容器set与map(pair、multiset、multimap)

    C++进阶:详细讲解容器set与map(pair、multiset、multimap) 上次介绍了搜索二叉树:C++进阶:二叉搜索树介绍、模拟实现(递归迭代两版本)及其应用 为了介绍后面的AVLTree和红黑树,我们要进行一些铺垫,就是set与map的介绍啦 关联式容器和序列式容器是 C++ 中两种不同的容器类

    2024年04月12日
    浏览(40)
  • 提高代码封装性的好习惯:Java中的get和set方法

    在Java中,get和set方法是用于访问对象的私有属性的一种常见方法。通常情况下,属性被声明为私有的,以防止其他类直接访问该属性,而是通过get和set方法来访问。本篇博客将介绍Java中的get和set方法,它们的作用以及如何使用它们。 get方法用于获取对象的私有属性值,并返

    2024年02月03日
    浏览(40)
  • C++【unordered_map/set的底层实现-哈希表】—含有源代码

    前面讲了STL中的map和set容器以及封装实现,虽然它们的查找效率是O(logN),但是当红黑树中的节点非常多时,因为红黑树不是严格平衡,树的高度可能变得很大,就是一变高一边低的情况,这会导致查询操作的时间复杂度变为O(N),所以后面就出现了四个unordered系列的关联式容

    2024年02月08日
    浏览(44)
  • git 新建分支 推送到远程 首次pull代码报错 git branch --set-upstream-to=origin/<branch>

    在本地创建新分支后,上传到远程仓库,首次pull 的时候,会提示: 当前分支与远程分支并未建立联系,需要执行一下 git branch --set-upstream-to=origin/ 操作 解决办法: git branch --set-upstream-to=origin/远程分支名 建立完联系之后,就可以进行 git pull、git push 等操作啦~

    2024年02月16日
    浏览(51)
  • Linux配置hadoop文件报错 ERROR: JAVA_HOME is not set and could not be found(超详细)

    目录 一、hadoop配置文件的一些报错情况 1、ERROR: JAVA_HOME is not set and could not be found (1)查看我们的jdk所在的位置 代码:pwd (2)进入配置环境 (3)最重要的事情!!记得更新环境变量  (4)查看java版本 (5)最后再去运行就好了 2、ERROR: JAVA HOME /cpt/jieya/jdk does not exis

    2024年02月08日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包