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 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...
随机推荐
- CF1278B-A and B-(简单数学)
https://vjudge.net/problem/CodeForces-1278B 题意:给两个数a和b,有一种操作:第i次操作任选其中一个数加或减i:如第1次操作可以任选其中一个数加1或减1,第 ...
- C语言验证哥德巴赫猜想
#include<stdio.h>int f(int x);int main(void){ int n,i; scanf("%d",&n); for( ...
- POJ3974Palindrome(Manacher)
传送门 题目大意:求最长回文串 题解:Manacher 代码: #include<cstdio> #include<cstring> #include<iostream& ...
- Noip2017Day1T3 逛公园
题目链接 problem 一个有向无重边自环图,设\(D\)为从\(1\)号点走到\(n\)号点的最短距离.问有多少条从\(1\)到\(n\)的路径长度不超过\(D+K\).\(K\)为给定的值,且\ ...
- 【洛谷5299】[PKUWC2018] Slay the Spire(组合数学)
点此看题面 大致题意: 有\(n\)张强化牌\(a_i\)和\(n\)张攻击牌\(b_i\),每张牌有一个权值(强化牌的权值大于\(1\)),每张强化牌能使所有攻击牌的权值乘上这张强化牌的权值,每张攻 ...
- A1071 Speech Patterns (25 分)
一.技术总结 开始拿到这道题目时,思考的是我该如何区分它们每一个单词,不知道这里还是要学习得知在cctype头文件中有一个函数用于查看是否为0~9.a~z.A~Z,就是isalnum(),又因为题目中 ...
- golang数据结构之稀疏数组
掌握知识: 数组的初始化和赋值 结构体的初始化和赋值 字符串和整型之间的转换以及其它的一些操作 类型断言 读取文件 写入文件 对稀疏数组进行压缩 package main import ( " ...
- SpringMVC拦截器和数据校验
1.什么是拦截器 Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以进行权限验证.记录请求 ...
- git分支合并解决冲突
git分支合并,解决冲突 1.手动解决冲突 手动解决冲突,需要使用编辑器,把所有文件中出现的冲突地方修改,然后再添加到暂存区再提交 >>>>>>brancha so ...
- 明解C语言 入门篇 第八章答案
练习8-1 #include<stdio.h> #define diff(x,y)(x-y) int main() { int x; int y; printf("x=" ...