首页 > 其他分享 >L2-005 集合相似度

L2-005 集合相似度

时间:2024-03-14 17:14:14浏览次数:25  
标签:cm g2 g1 int dataset L2 005 集合 size

法一(暴力超时21分)
纯暴力,最后一个测试点超时。

#include <bits/stdc++.h>
using namespace std;
vector<set<int>> dataset;
int main(){
	int n;
	cin>>n;
	dataset.resize(n+1);
    for(int i=1;i<=n;i++){
    	int count,data;
    	cin>>count;
    	for(int j=0;j<count;j++){
    		cin>>data;
    		dataset[i].insert(data);
		}
	}
	int m;
	cin>>m;
	set<int>::iterator it;
	for(int i=0;i<m;i++){
		int g1,g2;
		cin>>g1>>g2;
		set<int> st;
		for(it=dataset[g1].begin();it!=dataset[g1].end();++it){
			st.insert(*it);
		}
		for(it=dataset[g2].begin();it!=dataset[g2].end();++it){
			st.insert(*it);
		}
		int Nt=st.size();
		int Nc=dataset[g1].size()+dataset[g2].size()-Nt;
		//cout<<Nt<<" "<<Nc<<endl;
		cout<<fixed<<setprecision(2)<<(1.0*Nc/Nt*10000)/100 << "%"<<endl;
	}
	return 0;
}

法二stl(25分)

#include <bits/stdc++.h>
using namespace std;
vector<set<int>> dataset;
int main(){
	int n;
	cin>>n;
	dataset.resize(n+1);
    for(int i=1;i<=n;i++){
    	int count,data;
    	cin>>count;
    	for(int j=0;j<count;j++){
    		cin>>data;
    		dataset[i].insert(data);
		}
	}
	int m;
	cin>>m;
	set<int>::iterator it;
	for(int i=0;i<m;i++){
		int g1,g2;
		cin>>g1>>g2;
		int cm=0;
		for(it=dataset[g1].begin();it!=dataset[g1].end();++it){
			if(dataset[g2].find(*it)!=dataset[g2].end()){
				cm++;
			}
		}
		int Nt=dataset[g1].size()+dataset[g2].size()-cm;
		int Nc=cm;
		cout<<fixed<<setprecision(2)<<(1.0*Nc/Nt*10000)/100 << "%"<<endl;
	}
	return 0;
}

标签:cm,g2,g1,int,dataset,L2,005,集合,size
From: https://www.cnblogs.com/chengyiyuki/p/18073281

相关文章

  • 3-9 集合的划分和覆盖
    3-9集合的划分和覆盖在探索数学的丰富领域中,集合论占据着基础而重要的位置。它不仅是高等数学研究的基石,也深深影响着我们对数据结构和算法的理解。本节将重点介绍集合的两个核心概念:划分和覆盖,它们在数学分析和理论研究中有着广泛的应用。集合的覆盖定义当我们谈论集合......
  • L2-003 月饼
    背包。#include<bits/stdc++.h>usingnamespacestd;structnode{ doublekc,sj; doubleavg;}s[1010];boolcmp(noden1,noden2){ returnn1.avg>n2.avg;}intmain(){ intn,total; cin>>n>>total; for(inti=0;i<n;i++){ cin>>......
  • 2.4GHz小型超高性能模块:LBEE5XV2EA-802、LBEE5PA1LD-005、LBES5PL2EL-923、LBWA0ZZ2DS
    1、描述:2EA型是一款基于CYW55573组合芯片组的小型超高性能模块,支持Wi-Fi802.11a/b/g/n/AC/ax2×2MIMO蓝牙5.3BR/EDR/le高达1.2Gbps的Wi-FiPHY数据速率和3Mbps的传统蓝牙PHY数据速率(EDR)以及2Mbps的PHY蓝牙LE数据速率。WLAN部分支持PCIe3.0第二代和SDIO3.0接口,蓝牙部分支持......
  • C# EPPlus导出dataset----Excel2绘制图像
    一、生成折线图方法 ///<summary>    ///生成折线图    ///</summary>    ///<paramname="worksheet">sheet页数据</param>    ///<paramname="colcount">总列数</param>    ///<paramname="......
  • L2-002 链表去重(25分)
    代码真的好烂啊。一个元素加入之前,修改集合中(va,vb)最后一个元素的下一个地址为当前元素的地址。然后我是把(元素地址,下一个地址)和(元素的值)拆开放到两个集合了,放一个里面有点麻烦不太会处理。#include<bits/stdc++.h>usingnamespacestd;intvis[10010];//是否已经来过ve......
  • L2-001 紧急救援
    这道题就是在dijkstra的基础上增加了一些东西。代码有参考别人,最后一步的处理很好。#include<bits/stdc++.h>usingnamespacestd;constintmaxv=0x7fffffff;intedges[510][510];//从i到j的长度intdist[510];//最短路径boolcheck[510];//是否在集合之中intnum[510......
  • 中考英语首字母快速突破005-2021上海虹口英语二模-Overcoming Labels to Save a Frien
    PDF格式公众号回复关键字:ZKSZM005原文​OnedaySamandJerryweregoinghomefromschool.Whenonturningacorner,Samcriedout,“Afight!Letusgoandsee!”​“No,”saidJerry,“letusgoquietlyhome!Wehavenothingtodowith......
  • Python实战:Python集合的常见操作
    Python集合(set)是一种无序且元素唯一的容器,它是Python中一种基本的数据结构。本文将详细介绍Python集合的常见操作,包括创建集合、添加和删除元素、集合运算、集合推导式等。1.创建集合Python集合可以通过多种方式创建,包括直接赋值、使用内置函数set()和集合推导式等。示......
  • L2-033 简单计算器(Python)
    作者 陈越单位 浙江大学本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1​ 存放数字,另一个堆栈 S2​ 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:从 S1​ 中弹......
  • Java集合
    集合中最重要的是ArrayList,LinkedList,HashMap这三种集合,首先我们先看一下下面这副整体的关于这三种集合关系图片可以清晰的看到不管是List,Set还是Map都有一个共同的父类就是Collection,这副图片当中虚线表示的是实现接口而实线表示的是实现接口的类,箭头所指的就是实现那个接口......