L2-005. 集合相似度

题目:

这个题最后一个数据没有通过 ,先这样吧,过几天应该有题解,到时候在完善一下。。。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>
using namespace std;
//<int> s[50];
struct node {
    int c=0;//zongzhi
    set<int > s;
};
node ans[51];
int ch[51];
int main()
{
    int n,x,m,k;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&m);
        while(m--)
        {
            scanf("%d",&x);
            ans[i].s.insert(x);
            //ans[i].c++;
        }
        ans[i].c=ans[i].s.size();
    }
    scanf("%d",&k);
    int a,b;
    node ans1;
    while(k--)
    {
        scanf("%d%d",&a,&b);
        ans1.s.clear();

        for(set<int>::iterator it=ans[a-1].s.begin();it!=ans[a-1].s.end();it++)
        {
            ans1.s.insert(*it);

        }
        for(set<int>::iterator it=ans[b-1].s.begin();it!=ans[b-1].s.end();it++)
        {
            ans1.s.insert(*it);
            //ans1.c++;
        }
        int sum=ans1.s.size();
        int nc=ans[a-1].c+ans[b-1].c-sum;
        //double
        printf("%.2f",nc*1.0/sum*100);
        printf("%%\n");

    }
    return 0;
}
时间: 2024-10-12 10:25:39

L2-005. 集合相似度的相关文章

天梯杯 L2-005. 集合相似度

L2-005. 集合相似度 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定两个整数集合,它们的相似度定义为:Nc/Nt*100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的任务就是计算任意一对给定集合的相似度. 输入格式: 输入第一行给出一个正整数N(<=50),是集合的个数.随后N行,每行对应一个集合.每个集合首先给出一个正整数M(<=104),是集合中元素的个数:然后跟

天梯程序设计竞赛 L2-005. 集合相似度 STL

---恢复内容开始--- L2-005. 集合相似度 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定两个整数集合,它们的相似度定义为:Nc/Nt*100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的任务就是计算任意一对给定集合的相似度. 输入格式: 输入第一行给出一个正整数N(<=50),是集合的个数.随后N行,每行对应一个集合.每个集合首先给出一个正整数M(<=104),

集合相似度对比的两种计算算法

相似度对比的两种计算算法:Jaccard similarity相似性系数和Ochiai coefficient落和系数 Jaccard coefficient:A,B分别代表符合某种条件的集合:两个集合交集的大小/两个集合并集的大小,交集=并集意味着2个集合完全重合. Ochiai coefficient:A,B分别代表符合某种条件的集合:两个集合的交集大小/两个集合大小的几何平均值.是余弦相似性的一种形式. 相关参考链接:http://en.wikipedia.org/wiki/Jaccard

L2-5 集合相似度 (set的应用)

给定两个整数集合,它们的相似度定义为:Nc/Nt*100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的任务就是计算任意一对给定集合的相似度. 输入格式: 输入第一行给出一个正整数N(<=50),是集合的个数.随后N行,每行对应一个集合.每个集合首先给出一个正整数M(<=104),是集合中元素的个数:然后跟M个[0, 109]区间内的整数. 之后一行给出一个正整数K(<=2000),随后K行,每行对应一对需要计算相似度的集合的编号(集合从1到N编

使用MinHash算法计算两个集合的相似度

集合相似度计算是一个常见的问题.例如,已知看过芈月传的人都有哪些,还知道看过琅琊榜的人都有哪些,那么想知道同时看过两者的人群占至少看过一部的人群的占比,就是求这两个集合的相似度: 集合A = 看过芈月传的人群集合B = 看过琅琊榜的人群相似度 = |A∩B| / |A∪B| = 既看过芈月传又看过琅琊榜的人数 / 看过芈月传或琅琊榜的人数 当集合的元素较少时,我们可以采用逐一比较的方式来找出既在集合A出现也在集合B出现的人,统计其人数,再除以至少在集合A或集合B出现的人数,得到相似度. 然而当集

汇总从代数角度与几何角度理解相似度计算方法(以机器学习Mahout框架为主线)

相似度的计算是数据挖掘与机器学习中的一个永恒的话题,为了能更好地理解与比较各种相似度计算的方法,能灵活运用到各种计算模型中,自己在研究机器学习之Mahout框架时,源代码中也实现了很多相似度计算方法,本文结合机器学习Mahout框架中各种相似度计算方法的实现,并且从代数角度和几何角度来理解相似度的计算方法.并阐述其优缺点,及自己的适用场景.本文通过总结和归纳,一共总结了9中距离测量方法,方法一到方法七是Mahout中完完本本实现了,其中前面是方面名,破折号后是Mahout中各方法实现的类名,本文

PTA天梯赛L2

L2-001 紧急救援 题意:就是给你一张n<500的图:让你求最短路径,最短路条数,以及路径: 做法,先用dijkstra求最短路,然后dfs找最短路条数,以及点权的最大值: 一般dfs不就可以解决这个问题吗,像n皇后求次数,注意回溯即可: 那如何dfs确定这条路是最短路径呢?贪心思想,枚举每一个邻居,如果满足   dis[y.v]==dis[x]+y.w 说明当前邻居 通过这个点可以一直是最短路径,这样dfs下去,如果碰到d就return掉: 主要是没有想到用dfs求最短路径条数,然后注意回

使用Apriori算法和FP-growth算法进行关联分析(Python版)

===================================================================== <机器学习实战>系列博客是博主阅读<机器学习实战>这本书的笔记也包含一些其他python实现的机器学习算法 算法实现均采用python github 源码同步:https://github.com/Thinkgamer/Machine-Learning-With-Python ==================================

l2-005

L2-005. 集合相似度 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定两个整数集合,它们的相似度定义为:Nc/Nt*100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的任务就是计算任意一对给定集合的相似度. 输入格式: 输入第一行给出一个正整数N(<=50),是集合的个数.随后N行,每行对应一个集合.每个集合首先给出一个正整数M(<=104),是集合中元素的个数:然后跟