一、技术总结

  1. 这个题目是属于set容器的内容,使用可以减少很多代码量
  2. 开始试过在同一个for循环中定义两个auto,结果编译通不过,有时候构思很重要,就比如这一题,开始我是一个一个去加,而代码中是,先同意其中一个容器中的所有数量,然后再遍历另一个容器,查找是否在该容器中有相同值,如果没有再在之前的所有数量上加一,这样就统计出来了两个set容器中值的并集。
  3. 同时,如何查找两个容器中的相同元素也是这个需要考查的点,这里使用find的函数,find函数是返回找到值的迭代器,如果没有找到就返回该容器的end()处迭代器,通过遍历其中一个set容器,然后调用find函数代码如下:
int Nt = q[compare[i][0]].size(), Nc = 0;//Nc表示共同元素的个数,Nt表示总共元素,即并集。
for(auto it = q[compare[i][1]].begin(); it != q[compare[i][1]].end(); it++){
if(q[compare[i][0]].find(*it) != q[compare[i][0]].end()) Nc++;
else Nt++;
}

二、参考代码

#include<iostream>
#include<set>
using namespace std;
const int N = 51;
const int M = 10000;
const int K = 2000;
set<int> q[N];
int compare[K][2];
double rate[K];
int main(){
int n, m, k;
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d", &m);
int num;
for(int j = 0; j < m; j++){
scanf("%d", &num);
q[i].insert(num);
}
}
scanf("%d", &k);
for(int i = 0; i < k; i++){
scanf("%d %d", &compare[i][0], &compare[i][1]);
int Nt = q[compare[i][0]].size(), Nc = 0;//Nc表示共同元素的个数,Nt表示总共元素,即并集。
for(auto it = q[compare[i][1]].begin(); it != q[compare[i][1]].end(); it++){
if(q[compare[i][0]].find(*it) != q[compare[i][0]].end()) Nc++;
else Nt++;
}
rate[i] = Nc*100.0/Nt;
}
for(int i = 0; i < k; i++){
printf("%.1f%%\n", rate[i]);
}
return 0;
}

A1063 Set Similarity (25 分)的更多相关文章

  1. PAT 甲级 1063 Set Similarity (25 分) (新学,set的使用,printf 输出%,要%%)

    1063 Set Similarity (25 分)   Given two sets of integers, the similarity of the sets is defined to be ...

  2. 1063 Set Similarity (25分)

    Given two sets of integers, the similarity of the sets is defined to be /, where N​c​​ is the number ...

  3. 【PAT甲级】1063 Set Similarity (25 分)

    题意: 输入一个正整数N表示集合的个数(<=50),接着输入N行,每行包括一个数字x代表集合的容量(<=10000),接着输入x个非负整数.输入一个正整数Q(<=2000),接着输入 ...

  4. 【算法笔记】A1063 Set Similarity

    1063 Set Similarity (25 分)   Given two sets of integers, the similarity of the sets is defined to be ...

  5. 1063. Set Similarity (25)

    1063. Set Similarity (25) 时间限制 300 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given ...

  6. PTA - - 06-图1 列出连通集 (25分)

    06-图1 列出连通集   (25分) 给定一个有NN个顶点和EE条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N-1N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发, ...

  7. 中国大学MOOC-陈越、何钦铭-数据结构-2015秋 01-复杂度2 Maximum Subsequence Sum (25分)

    01-复杂度2 Maximum Subsequence Sum   (25分) Given a sequence of K integers { N​1​​,N​2​​, ..., N​K​​ }. ...

  8. PTA 字符串关键字的散列映射(25 分)

    7-17 字符串关键字的散列映射(25 分) 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位:再用除留余 ...

  9. PTA 旅游规划(25 分)

    7-10 旅游规划(25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...

随机推荐

  1. perl: warning: Setting locale failed. 解决

    perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAG ...

  2. Java连载53-单例模式初步、final关键字补充、回顾知识点

    一.回顾 1.类和对象的区别 2.UML(uniform makeup language) 3.方法区存储静态变量.常量(static final修饰) 4.堆内存中存储对象 5.栈存储变量 6.th ...

  3. Java连载44-静态代码块、实例代码块、继承

    一.可以使用static关键字来定义“静态代码块” 1.语法规则 static { java语句: } 2.静态代码块在类加载时执行,并且只执行一次 3.静态代码块在一个类中可以编写多个,并且遵循自上 ...

  4. 【raid级别】RAID级别工作模式

    友情链接 磁盘分区,格式化,挂载,创建交换分区:https://www.cnblogs.com/HeiDi-BoKe/p/11936998.html RAID工作级别:https://www.cnbl ...

  5. 详解JAVA8Stream 方法引用(基础){全}

    1: Stream流 1.1 引言 1.2 流式思想概述 1.3 获取流 1.4 常用方法 1.5 练习:集合元素处理 2:方法引用 2.1 冗余的Lambda场景 2.2 方法引用符 2.3 通过对 ...

  6. python 动态语言和协议编程

    动态语言:不需要去定义变量的类型 协议编程:一个类实现了某个魔法函数,这个类就是什么类型,理解为协议

  7. layui 学习笔记一:layui table 查询、新增、编辑、删除

    一.table数据的呈现(对应查询) 页面代码: @{ ViewBag.Title = "TableGrid"; } @section styles{ <link href= ...

  8. Taro聊天室|react+taro仿微信聊天App界面|taro聊天实例

    一.项目简述 taro-chatroom是基于Taro多端实例聊天项目,运用Taro+react+react-redux+taroPop+react-native等技术开发的仿微信App界面聊天室,实 ...

  9. Android开发当中的JavaBean实现

    一般我们在Android开发当中如果会对一些数据类进行解析,那么则需要写出一个JavaBean的类,比如在进行json解析的时候,就需要使用这个类进行数据的处理,下面是我们的JavaBean的模板代码 ...

  10. STC15控制数码管 38译码器

    共阳极数码管举例 #define MAIN_Fosc 27000000L //定义主时钟 #include "STC15Fxxxx.H" #define uchar unsigne ...