题目 传送门:QWQ 分析 水题.$ O(nlogn) $的LCS 代码 #include <bits/stdc++.h> using namespace std; *, INF=1e9; int S[maxn], g[maxn], d[maxn]; int num[maxn]; int main(){ int T; scanf("%d",&T); ;kase<=T;kase++){ int N,p,q,x; scanf("%d%d%d",…
直接LCS是时间复杂度是O(p*q)的,但是序列元素各不相同,只要把其中一个序列映射成有序的, 另外一个序列再做相同的映射,没有的直接删掉,就变成了求另一个序列LIS. #include<bits/stdc++.h> using namespace std; int read() { '); '; +c-'; return re; } *; int mp[maxn]; int S[maxn],g[maxn]; //#define LOCAL int main() { #ifdef LOCAL…
题目qwq (第一道蓝题) 先把第一个序列每个数出现的顺序记下来(数字本身不用记), 然后第二个序列的每个数都对照它的顺序,这样只要得到一个升序的序列就行了qwq 如果遇到出现顺序在前面的数,就用二分法找一下它的位置,然后把原来存下来的顺序覆盖掉 #include<cstdio> using namespace std; ],ans[]; int n,sum; int k,l,r,now,mid; int main() { scanf("%d",&n); ; i &…