zoukankan      html  css  js  c++  java
  • HDU 5399 Too Simple (2015年多校比赛第9场)

    1.题目描写叙述:点击打开链接

    2.解题思路:本题分情况讨论。比赛时候真是想的太简单了。以为就是(n!)^(cnt-1)。

    终于无限WA。

    本题有几个特殊情况须要额外推断。

    首先,假设输入的时候。有某一行不是-1且有两个数映射到同一个数,那么必定无解,ans=0。其次。假设不存在-1,须要从第m个函数一步步映射到第1个函数,检查一下最后是否真的变成了自身映射。最easy想到的情况就是有至少一个-1,那么最后答案就是(n!)^(cnt-1)。

    3.代码:

    //#pragma comment(linker, "/STACK:1024000000,1024000000")
    #include<iostream>
    #include<algorithm>
    #include<cassert>
    #include<string>
    #include<sstream>
    #include<set>
    #include<bitset>
    #include<vector>
    #include<stack>
    #include<map>
    #include<queue>
    #include<deque>
    #include<cstdlib>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<ctime>
    #include<cctype>
    #include<functional>
    using namespace std;
    
    #define me(s)  memset(s,0,sizeof(s))
    typedef long long ll;
    typedef unsigned int uint;
    typedef unsigned long long ull;
    typedef pair <int, int> P;
    
    
    const int N=100+10;
    const int MOD=1e9+7;
    ll f[N],a[N][N];
    
    int main()
    {
        int n,m;
        f[0]=1;
        for(int i=1;i<N;i++)
            f[i]=(f[i-1]*i)%MOD;
        while(~scanf("%d%d",&n,&m))
        {
            ll ans=1,tot=0;
            for(int i=0;i<m;i++)
            {
                scanf("%I64d",&a[i][1]);
                if(a[i][1]==-1)tot++;
                else for(int j=2;j<=n;j++)
                {
                    scanf("%I64d",&a[i][j]);
                    for(int k=j-1;k>=1;k--)
                        if(a[i][k]==a[i][j])ans=0;  //假设某一行存在两个数都映射到同一个数,无解
                }
            }
            for(int i=1;i<tot;i++)ans=(ans*f[n])%MOD;
            if(!tot)
            {
                ll x[N];
                for(int i=1;i<=n;i++)x[i]=i;
                for(int i=m-1;i>=0;i--)
                    for(int j=1;j<=n;j++)
                {
                    x[j]=a[i][x[j]];
                }
                for(int i=1;i<=n;i++)
                if(x[i]!=i)ans=0;  //不是自身映射,无解
            }
            printf("%I64d
    ",ans);
        }
    }
    
    
    
    

  • 相关阅读:
    WebUploader大文件上传支持分场上传
    WebUploader大文件上传支持切片上传
    WebUploader大文件上传支持分片上传
    ASP.NET大文件上传支持切割上传
    ASP.NET大文件上传支持分场上传
    ASP.NET大文件上传支持切片上传
    ASP.NET大文件上传支持分片上传
    C#大文件上传支持切割上传
    C#大文件上传支持分场上传
    山中何太冷,自古非今年
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6921457.html
Copyright © 2011-2022 走看看