题目链接: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"; } }