• hdu 5495


    这算是个模板,计算两组1~n的数 循环个数

    离散数学中的置换群应用,答案就是找出所有循环的个数(循环长度必须大于1),最后用n-sum(sum为循环个数),每个循环必有一个与其他不同,每个循环牺牲一个元素。就是LCS。
    #include<iostream>
    #include<cstdio>
    using namespace std;
    int main(){
        int t,a[100005],b[100005],pa[100005],pb[100005],vis[100005];
        cin >> t;
        while(t--){
            int n;
            scanf("%d",&n);
            int temp;
            for(int i = 1;i <= n;i++){
     //           cin >> a[i];
                scanf("%d",a+i);
            }
            for(int i = 1;i <= n;i++){
    //            cin >> b[i];
                scanf("%d",b+i);
                pb[b[i]] = i;
            }
    //        memset(vis,0,sizeof(vis));
            for(int i = 1;i <= n;i++){
                vis[i] = 0;
            }
    
           /* for(int i = 1;i <= n;i++){
                cout << a[i] << " ";
            }
            cout << endl;
            for(int i = 1;i <= n;i++){
                cout << b[i] << " ";
            }
            cout << endl;
            for(int i = 1;i <= n;i++){
                cout << pb[i] << " ";
            }
    
            cout << endl;
            for(int i = 1;i <= n;i++){
                cout << pb[a[i]] << " ";
            }
            cout << endl;
    */
            //开始找环
            int sum = 0;
            for(int i = 1;i <= n;i++){
                if(!vis[i]){
                    int now = i;
                    int len = 0;
                    while(!vis[now]){
                        vis[now] = 1;
                        now = pb[a[now]];
                        len++;
                    }
                    //cout << len << endl;
                    if(len > 1){
                        sum++;
                    }
                }
            }
            cout << n - sum << endl;
        }
        return 0;
    }
  • 相关阅读:
    「2019.7.25 考试」偶然发生
    「刷题」可怜与STS
    「刷题」小星星
    「刷题」数三角形
    「刷题」 关于线段上的整点个数
    「刷题」Color 群论
    「2019.7.22 考试」AC和WA0一步之遥
    「刷题」幸运数字
    「刷题」卡特兰数&prufer序列
    「刷题」一个人的数论
  • 原文地址:https://www.cnblogs.com/gudygudy/p/10480157.html
Copyright © 2020-2023  润新知