UVA 1481 Genome Evolution(高效算法优化)

来源:互联网 发布:淘宝下单与发货时间 编辑:程序博客网 时间:2024/05/21 17:52

记录下第二个数组的位置,然后更新第一个数组的区间,然后更新第二个数组的区间,如果区间长度相等,那么就是有子集相等,此时ans++。

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define ss(x) scanf("%d",&x)const int maxn=3000+10;int s[maxn],t[maxn],vis[maxn];int n;int main(){    while(true)    {        int ans=0;        ss(n);if(n==0) break;        rep(i,1,n) ss(s[i]);        rep(i,1,n) {ss(t[i]);vis[t[i]]=i;}        rep(i,1,n){            int l=vis[s[i]],r=vis[s[i]],k=1;            rep(j,i+1,n){                l=min(l,vis[s[j]]);                r=max(r,vis[s[j]]);                k++;                if(r-l+1==k) ans++;            }        }        printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击