L2-005 集合相似度 (25 分)(set+容斥)

简介: L2-005 集合相似度 (25 分)(set+容斥)

描述


bcb02d27ebcc1cf60592101ea709e291_867f1daa5df845ba9cbb0a3837575234.png


输入:


4b18310c81bde68e61c35377308a527e_1a1cea7ebbb44fe2affede89eb76d3cb.png


输出:


对每一对需要计算的集合,在一行中输出它们的相似度,为保留小数点后2位的百分比数字。


思路


:同一集合内相同的数据是无用的,我们直接用set处理掉,对于每两个给出的集合,先找出相同的数据,再用总数减去相同的既是一共有的


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e4+10;
map<int,set<int>>mp;
int n,cnt,t,m;
int a,b;
int main()
{
  cin>>n;
  for(int i=1;i<=n;i++)
  {
    cin>>cnt;
    for(int j=1;j<=cnt;j++)
    {
      cin>>t;
      mp[i].insert(t);
    }
  }
  cin>>m;
  for(int i=1;i<=m;i++)
  {
    cin>>a>>b;
    double ss=0,st=0;
    for(auto k : mp[a])
    {
      if(mp[b].count(k)==1)
      {
        ss++;
      }
    }//找出两个集合都有的
    st=mp[a].size()+mp[b].size()-ss;//一共有的即是总数减去重复的
    printf("%.2lf",ss/st*100);
    cout<<"%"<<endl;
  }
}


反思:


vector没有查找函数,使用set更加方便和省力


目录
相关文章
|
1月前
|
监控 算法 安全
带用集合算法set union讲解
带用集合算法set union讲解
20 0
|
1月前
|
存储 安全 Java
java集合框架及其特点(List、Set、Queue、Map)
java集合框架及其特点(List、Set、Queue、Map)
|
3月前
|
JavaScript 前端开发 定位技术
JavaScript 中如何代理 Set(集合) 和 Map(映射)
JavaScript 中如何代理 Set(集合) 和 Map(映射)
50 0
|
12天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
1月前
|
存储 Shell Linux
【Shell 命令集合 系统设置 内置命令】⭐⭐⭐Linux 设置或修改shell环境变量set命令 使用指南
【Shell 命令集合 系统设置 内置命令】⭐⭐⭐Linux 设置或修改shell环境变量set命令 使用指南
32 0
|
1月前
|
存储 安全 Java
Python教程第3章 | 集合(List列表、Tuple元组、Dict字典、Set)
Python 列表、无序列表、字典、元组增删改查基本用法和注意事项
51 1
ES6之Set集合(通俗易懂,含实践)
ES6之Set集合(通俗易懂,含实践)
|
1月前
|
存储 安全 Java
【Java】集合(二)Set
【Java】集合(二)Set
19 0
|
2月前
|
存储 Java
java set集合相关介绍和方法使用操作
java set集合相关介绍和方法使用操作
27 2
|
3月前
|
存储 安全 Java
从零开始学习 Java:简单易懂的入门指南之泛型及set集合(二十二)
从零开始学习 Java:简单易懂的入门指南之泛型及set集合(二十二)