A1063 Set Similarity (25 分)
一、技术总结
- 这个题目是属于set容器的内容,使用可以减少很多代码量
- 开始试过在同一个for循环中定义两个auto,结果编译通不过,有时候构思很重要,就比如这一题,开始我是一个一个去加,而代码中是,先同意其中一个容器中的所有数量,然后再遍历另一个容器,查找是否在该容器中有相同值,如果没有再在之前的所有数量上加一,这样就统计出来了两个set容器中值的并集。
- 同时,如何查找两个容器中的相同元素也是这个需要考查的点,这里使用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 分)的更多相关文章
- 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 ...
- 1063 Set Similarity (25分)
Given two sets of integers, the similarity of the sets is defined to be /, where Nc is the number ...
- 【PAT甲级】1063 Set Similarity (25 分)
题意: 输入一个正整数N表示集合的个数(<=50),接着输入N行,每行包括一个数字x代表集合的容量(<=10000),接着输入x个非负整数.输入一个正整数Q(<=2000),接着输入 ...
- 【算法笔记】A1063 Set Similarity
1063 Set Similarity (25 分) Given two sets of integers, the similarity of the sets is defined to be ...
- 1063. Set Similarity (25)
1063. Set Similarity (25) 时间限制 300 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given ...
- PTA - - 06-图1 列出连通集 (25分)
06-图1 列出连通集 (25分) 给定一个有NN个顶点和EE条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N-1N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发, ...
- 中国大学MOOC-陈越、何钦铭-数据结构-2015秋 01-复杂度2 Maximum Subsequence Sum (25分)
01-复杂度2 Maximum Subsequence Sum (25分) Given a sequence of K integers { N1,N2, ..., NK }. ...
- PTA 字符串关键字的散列映射(25 分)
7-17 字符串关键字的散列映射(25 分) 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位:再用除留余 ...
- PTA 旅游规划(25 分)
7-10 旅游规划(25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...
随机推荐
- Java内存中的常量池
1,java内存模型简介 <深入理解java虚拟机>里将java内存分为如下五个模块: 堆-堆是所有线程共享的,主要用来存储对象. 其中,堆可分为:新生代和老年代两块区域.使用NewRat ...
- Python程序中的进程操作-进程间通信(multiprocess.Queue)
目录 一.进程间通信 二.队列 2.1 概念介绍--multiprocess.Queue 2.1.1 方法介绍 2.1.2 其他方法(了解) 三.代码实例--multiprocess.Queue 3. ...
- python面试题及答案 2019
利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法. 正解1: def trim(s): while s[:1] == ' ': s = s[1:] ...
- 【shell脚本】优化内核参数===
一.Linux内核参数优化 Sysctl命令用来配置与显示在/proc/sys目录中的内核参数.如果想使参数长期保存,可以通过编辑/etc/sysctl.conf文件来实现. 命令格式: sysct ...
- Windows 10 powershell 中文乱码解决方案
Windows 10 powershell 中文乱码解决方案 Intro 我装的系统是英文版的 win 10 操作系统,最近使用命令行测试接口,发现中文显示一直异常, 使用网上的各种解决方案都没有效果 ...
- Four Ways to Read Configuration Setting in C#(COPY)
Introduction This article will demonstrate us how we can get/read the configuration setting from Web ...
- vue-父组件和路由
父子组件之间传值 <div id="app"> <com1 v-bind:parentmsg="msg" @func="getMsg ...
- Feign整合Ribbon和Hystrix源码解析
在上篇文章Feign自动装配中,我们提到了Feign的自动装配的原理,以及Feign整合Ribbon和Hystrix的核心在类FeignClientFactoryBean中,那么本篇文章就来揭开这个类 ...
- log4j笔记----输出格式
数说明例子 %c 列出logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间 log4j配置文件参数举例 输出显示媒介 假设当前logger名字空间是&q ...
- awk 输出前 N 列的最简单方法
最近遇到一种场景,需要输出一个文本信息的前 N 列. 众所周知 cut 可以指定分隔符并指定列的范围,如 cut -d' ' -f-4 就是以空格为分隔符输出前 4 列.但是 cut 的分隔符只能是一 ...