zoukankan      html  css  js  c++  java
  • 康拓展开-----两个排列的位置之差

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #define LL long long
    using namespace std;
    const int maxn=105;
    const int mod=1e6+7;
    
    int T,n,a[maxn],b[maxn];
    LL fac[maxn];
    int vis[maxn];
    
    void set(int high)
    {
        fac[0]=1;
        for(int i=1;i<=high;i++)
            fac[i]=(fac[i-1]*i)%mod;
    }
    
    void deal(int a[],LL &ans)
    {
        ans=0;
        memset(vis,0,sizeof(vis));
        for(int i=0;i<n;i++)
        {
            int cnt=0;
            for(int j=1;j<a[i];j++) if(!vis[j]) cnt++;
            ans=(ans+((cnt*fac[n-i-1])%mod))%mod;
            vis[a[i]]=1;
        }
    }
    int main()
    {
        set(100);
        int Case=1;
        cin>>T;
        while(T--)
        {
            cin>>n;
            for(int i=0;i<n;i++) cin>>a[i];
            for(int i=0;i<n;i++) cin>>b[i];
            LL p1=0,p2=0,ans=0;
            deal(a,p1);deal(b,p2);
    
            int i=0;
            for(i=0;i<n;i++) if(a[i]!=b[i]) break;
            if(a[i]>b[i]) ans=(p1-p2)%mod;
            else ans=(p2-p1)%mod;
            cout<<"Case $"<<Case++<<":"<<endl<<(ans+mod)%mod<<endl;
        }
        return 0;
    }
    
    
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #define LL long long
    using namespace std;
    const int maxn=105;
    const int mod=1e6+7;
    
    int T,n,a[maxn],b[maxn];
    LL fac[maxn];
    int vis[maxn];
    
    void set(int high)
    {
        fac[0]=1;
        for(int i=1;i<=high;i++)
            fac[i]=(fac[i-1]*i)%mod;
    }
    
    void deal(int a[],LL &ans)
    {
        ans=0;
        memset(vis,0,sizeof(vis));
        for(int i=0;i<n;i++)
        {
            int cnt=0;
            for(int j=1;j<a[i];j++) if(!vis[j]) cnt++;
            ans=(ans+((cnt*fac[n-i-1])%mod))%mod;
            vis[a[i]]=1;
        }
    }
    int main()
    {
        set(100);
        int Case=1;
        cin>>T;
        while(T--)
        {
            cin>>n;
            for(int i=0;i<n;i++) cin>>a[i];
            for(int i=0;i<n;i++) cin>>b[i];
            LL p1=0,p2=0,ans=0;
            deal(a,p1);deal(b,p2);
    
            int i=0;
            for(i=0;i<n;i++) if(a[i]!=b[i]) break;
            if(a[i]>b[i]) ans=(p1-p2)%mod;
            else ans=(p2-p1)%mod;
            cout<<"Case $"<<Case++<<":"<<endl<<(ans+mod)%mod<<endl;
        }
        return 0;
    }
  • 相关阅读:
    tfs+git
    fis3 部署手册
    git +vs2017 操作手册+目前工作流程图
    Git 分支策略
    git 分回滚后无法合并代码问题
    git 拉取远程分支到本地并建立关联关系
    mysql查看数据库大小或者表大小
    centos7.4安装高可用(haproxy+keepalived实现)kubernetes1.6.0集群(开启TLS认证)
    centos7.4安装kubernetes1.6.0(开启TLS认证)
    Centos搭建http代理服务器(无密码验证)
  • 原文地址:https://www.cnblogs.com/calmwithdream/p/5876110.html
Copyright © 2011-2022 走看看