首页 > 学院 > 开发设计 > 正文

1063. Set Similarity (25)

2019-11-08 18:27:35
字体:
来源:转载
供稿:网友

第一次的想法是把要比较的两个set合并成一个set,然后原来set的两个长度-合并的set长度就是公共的长度,然而最后一个测试点过不去,后来就根据set是从小到大排序的规律进行一个个遍历比较,这要就通过了

#include<iostream>#include<set>#include<vector>#PRagma warning(disable:4996)using namespace std;vector<set<int>> rr;//存储输入int main(){ int N; cin >> N; rr.resize(N); for (int t = 0;t < N;t++) { int temp; scanf("%d", &temp); while (temp--) { int temp2; scanf("%d", &temp2); rr[t].insert(temp2); } } cin >> N; while (N--) { int l, r; scanf("%d %d", &l, &r); l--;r--; int x = rr[l].size(), y = rr[r].size(); int cnt = 0; set<int>::iterator it1=rr[l].begin(), it2=rr[r].begin(); while (it1 != rr[l].end() && it2 != rr[r].end())//计算公共元素的个数 { if (*it1 > *it2) it2++; else if (*it1 < *it2) it1++; else { cnt++; it1++;it2++; } } printf("%.1f%%/n", 100.0*cnt /(x+y-cnt)); }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表