zoukankan      html  css  js  c++  java
  • HDU 5719 Arrange

    根据条件,某些位置的数字就可以确定了。确定过程中如果有冲突,则无解。

    如果B中出现了递增,C中出现了递减,则无解。

    对于每一个未确定的a[i],ans需要更新,ans=ans*((c[i]-b[i]+1)-(i-1))%MOD;

    如果计算ans过程中,出现了(c[i]-b[i]+1)-(i-1)<=0,则也是无解。

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<vector>
    #include<map>
    #include<queue>
    #include<stack>
    #include<algorithm>
    using namespace std;
    
    long long MOD=998244353;
    const int maxn=100000+10;
    int T,n;
    int a[maxn],b[maxn],c[maxn];
    int tmp1[maxn],tmp2[maxn];
    bool f[maxn];
    long long h[maxn];
    
    int main()
    {
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            for(int i=1;i<=n;i++) scanf("%d",&b[i]);
            for(int i=1;i<=n;i++) scanf("%d",&c[i]);
    
            memset(a,-1,sizeof a);
            memset(tmp1,-1,sizeof tmp1);
            memset(tmp2,-1,sizeof tmp2);
    
            tmp1[1]=b[1];
            for(int i=2;i<=n;i++) if(b[i]<b[i-1]) tmp1[i]=b[i];
    
            tmp2[1]=c[1];
            for(int i=2;i<=n;i++) if(c[i]>c[i-1]) tmp2[i]=c[i];
    
            bool fail=0;
            for(int i=1;i<=n;i++)
                if(tmp1[i]!=-1&&tmp2[i]!=-1&&tmp1[i]!=tmp2[i]) fail=1;
    
            for(int i=2;i<=n;i++) if(b[i]>b[i-1]||c[i]<c[i-1]) fail=1;
    
            if(fail) { printf("0
    "); continue;}
    
            for(int i=1;i<=n;i++)
            {
                if(tmp1[i]!=-1) a[i]=tmp1[i];
                if(tmp2[i]!=-1) a[i]=tmp2[i];
            }
    
            long long ans=1;
            for(int i=1;i<=n;i++)
            {
                if(a[i]!=-1) continue;
                if((c[i]-b[i]+1)-(i-1)<=0) ans=0;
                ans=ans*((c[i]-b[i]+1)-(i-1))%MOD;
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    paramiko连接并配置交换机
    Paramiko-sftp上传和下载文件
    常做的性能测试包含哪些?
    术语?
    什么是【负载测试】和【压力测试】?
    什么是性能?
    web服务器
    兼容性测试?
    可用性测试?
    什么是【回归测试】?
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5682489.html
Copyright © 2011-2022 走看看