首页 > 其他分享 >7-10 集合相似度 (25分)

7-10 集合相似度 (25分)

时间:2023-05-30 17:04:04浏览次数:46  
标签:10 25 int ++ cin sc v1 集合


超时代码

//
// Created by HMN on 2020/1/27.
//
/*7-10 集合相似度 (25分)
给定两个整数集合,它们的相似度定义为:N
c
 /N
t
 ×100%。其中N
c
 是两个集合都有的不相等整数的个数,N
t
 是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。

输入格式:
输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤10
4
 ),是集合中元素的个数;然后跟M个[0,10
9
 ]区间内的整数。

之后一行给出一个正整数K(≤2000),随后K行,每行对应一对需要计算相似度的集合的编号(集合从1到N编号)。数字间以空格分隔。

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

输入样例:
3
3 99 87 101
4 87 101 5 87
7 99 101 18 5 135 18 99
2
1 2
1 3



输出样例:
50.00%
33.33%



作者: 陈越
单位: 浙江大学
时间限制: 500 ms
内存限制: 64 MB
*/
#include <iostream>
#include <iomanip>
#include <set>
using namespace std;
int main(int argc, char** argv){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n;
    cin>>n;
    int m,t;
    set<int> sc[55];
    for (int i = 0; i < n; ++i) {
        cin>>m;
        for (int j = 0; j < m; ++j) {
            cin>>t;
            sc[i+1].insert(t);
        }
    }
    int k;
    cin>>k;
    for (int i = 0,v1,v2; i < k; ++i) {
        cin>>v1>>v2;
        int same_num;
        set<int> tmp;
        for (auto it=sc[v1].begin();it!=sc[v1].end();it++) {
            tmp.insert(*it);
        }
        for(auto it=sc[v2].begin();it!=sc[v2].end();it++){
            tmp.insert(*it);
        }
        same_num=sc[v1].size()+sc[v2].size()-tmp.size();
        cout<<fixed<<setprecision(2)<<same_num*100.0/tmp.size()<<"%"<<endl;
    }
    return 0;
}

修改后:

//
// Created by HMN on 2020/1/27.
//
/*7-10 集合相似度 (25分)
给定两个整数集合,它们的相似度定义为:N
c
 /N
t
 ×100%。其中N
c
 是两个集合都有的不相等整数的个数,N
t
 是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。

输入格式:
输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤10
4
 ),是集合中元素的个数;然后跟M个[0,10
9
 ]区间内的整数。

之后一行给出一个正整数K(≤2000),随后K行,每行对应一对需要计算相似度的集合的编号(集合从1到N编号)。数字间以空格分隔。

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

输入样例:
3
3 99 87 101
4 87 101 5 87
7 99 101 18 5 135 18 99
2
1 2
1 3



输出样例:
50.00%
33.33%



作者: 陈越
单位: 浙江大学
时间限制: 500 ms
内存限制: 64 MB
*/
#include <iostream>
#include <iomanip>
#include <set>
using namespace std;
int main(int argc, char** argv){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n;
    cin>>n;
    int m,t;
    set<int> sc[55];
    for (int i = 0; i < n; ++i) {
        cin>>m;
        for (int j = 0; j < m; ++j) {
            cin>>t;
            sc[i+1].insert(t);
        }
    }
    int k;
    cin>>k;
    for (int i = 0,v1,v2; i < k; ++i) {
        cin>>v1>>v2;
        int same_num=0;
        for (auto it=sc[v1].begin();it!=sc[v1].end();it++) {
            if(sc[v2].count(*it))
                same_num++;
        }
        cout<<fixed<<setprecision(2)<<same_num*100.0/(sc[v1].size()+sc[v2].size()-same_num)<<"%"<<endl;
    }
    return 0;
}

该坑我已经跳过多次了,真该打脸


标签:10,25,int,++,cin,sc,v1,集合
From: https://blog.51cto.com/u_16144724/6380484

相关文章

  • Wifi密码 (10分)
    下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用wifi,又怕耽误亲们的学习,现将wifi密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。谢谢合作!!~”——老师们为了促进学生学习也是拼了……本题就要求你写程序把一系列题目的答案按照卷子上给......
  • 旅行前的准备 (25分)
    LX同学想要游遍整个中国甚至全世界!所以这个国庆假期她计划去长沙玩。但是在她做旅行前的准备的时候,她收到了老师的作业,并且要求在国庆假期结束之前上交!LX同学非常的生气,告诉了你这个消息。你也觉得实在是太过分了,但是没有办法,只好帮助LX同学完成她的作业。老师给了LX同学两个整数,分......
  • 哥尼斯堡的“七桥问题” (25分)
    哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(LeonhardEuler,1707—1783)最终解决了这个问题,并由此创立了拓扑学。这个问题如今可以描述为判断欧拉回路是否存在的问题。欧拉回路是指不令......
  • 是不是顺子 (25分)
    本题目要求对读入的五张Poker牌进行判断:它是否是一个正常的顺子。说明:34567890JQKA2wW相信大家知道一二,为简化操作,0代表10,w和W代表小王和大王,大,小王可代替任意的牌哟。编程判断输入的五张牌是否会构成一个顺子(方案多个时,输出较大的,34567和0JQKA分别是最小和最大的顺子)输入格式:输......
  • 7-3 树的同构 (25分)
    7-3树的同构(25分)给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1图2现给定两棵树,请你判断它们是否是同构......
  • 堆栈模拟队列 (25分)
    堆栈模拟队列(25分)设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:intIsFull(StackS):判断堆栈S是否已满,返回1或0;intIsEmpty(StackS):判断堆栈S是否为空,返回1或0;voidPush(StackS,ElementTypeitem):将......
  • C# 程序开发中如何移除List集合的某列(属性)呢?
    如题,在C#&.NET,.NETCore程序开发中如何移除List集合的某列(属性)呢?比如,有以下的MyClass类: publicclassMyClass{publicintColumn1{get;set;}publicstringColumn2{get;set;}publicintColumn3{get;set;}}现在MyClass的集合myList,如何......
  • win10系统蓝屏0xc0000098错误
    故障:客户处笔记本新增内存条后,开机win10系统报0xc0000098蓝屏错误分析:新增了内存条,可能有异常关机操作导致BCD启动文件损坏和丢失,需进行修复BCD文件准备:win10启动盘(最好和当前笔记本内的win10系统版本一致)报错图片:  解决步骤: 1、笔记本接入win10启动盘,开机按“F12”通......
  • 3.4. Java集合框架(List、Set、Map等)
    Java集合框架是Java提供的一套用于存储和操作数据的接口和类。它包括以下几个主要部分:接口:集合框架定义了一系列接口,如Collection、List、Set、Map等。实现类:集合框架提供了一些实现这些接口的类,如ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap等。......
  • 【每日一题】[1110. 删点成林]
    1110.删点成林给出二叉树的根节点root,树上每个节点都有一个不同的值。如果节点值在to_delete中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。返回森林中的每棵树。你可以按任意顺序组织答案。示例1:输入:root=[1,2,3,4,5,6,7],to_delete=......