Codeforces Round #658 (Div. 2)A. Common Subsequence
题目链接:https://codeforces.com/contest/1382/problem/A
找最小的公共子串(对,就是长度为1)
水题一道,不过看到了一个非常好的O(n)的算法。
利用了统计的思想,如果a数组有x,则A[x]=1,然后读入B数组中的值x的时候的时候判断A[x]是否等于1就行了。
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int t; cin >> t;
while(t--) {
int n, m; cin >> n >> m;
vector<bool> A(1024);
while(n--) {
int x; cin >> x;
A[x] = true;
}
int a = -1;
while(m--) {
int x; cin >> x;
if(A[x])
a = x;
}
if(a == -1) cout << "NO\n";
else cout << "YES\n1 " << a << "\n";
}
}