zoukankan      html  css  js  c++  java
  • The 2019 China Collegiate Programming Contest Harbin Site I

    //#include<bits/stdc++.h>
    #include<map>
    #include<queue>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define int long long
    using namespace std;
    #define rep_1(i,m,n) for(int i=m;i<=n;i++)
    #define mem(st) memset(st,0,sizeof st)
    int read()
    {
    	int res=0,ch,flag=0;
    	if((ch=getchar())=='-')             //判断正负
    		flag=1;
    	else if(ch>='0'&&ch<='9')           //得到完整的数
    		res=ch-'0';
    	while((ch=getchar())>='0'&&ch<='9')
    		res=res*10+ch-'0';
    	return flag?-res:res;
    }
    int jqx1=9143;
    void qwjt()
    {
    	if(jqx1=9143)
    	{
    		int jqx1=9143;
    		int sy1h=51312;
    		int z1zt=519383;
    		int aistqwr=59124;
    		int qwkjrqwiht=5124;
    	}
    }
    typedef long long ll;
    typedef pair<int,int> pii;
    typedef unsigned long long ull;
    typedef pair<double,double> pdd;
    const int inf = 0x3f3f3f3f;
    const int N=1e6+10;
    ll h[N];
    const int mod=1e9+7;
    void solve()
    {
    	int n=read();
    	rep_1(i,1,n)
    		h[i]=read();
    	ll ans=1;
    	ll flag=1;
    	//先确定第一位和最后一位是满足合法序列的
    	//第一位肯定为0,因为一样
    	//最后一位肯定为n-1
    	if(h[1]!=0 || h[n]!=n-1)
    		flag=0;
    	rep_1(i,2,n)
    	{
    		if(flag==0)
    			break;
    		//差值肯定非递减的
    		//因为最小值是不断变小的
    		//最大值是不断变大的
    		//所以一定是非递减的 
    		if(h[i]<h[i-1])
    			flag=0;
    		//当前的a[i]在最大值和最小值之间
    		//区间长度  也就是 最大减去最小值+1  也就是 h[i]+1
    		//然后要减去重复的 也就是
    		//已有的数列中,在最大值到最小值之间的
    		//那么就是 i-1个 必定是在最大值到最小值之间的
    		//h[i]+1 -(i-1)
    		//h[i]-i+2 
    		else if(h[i]==h[i-1])
    			ans=ans*(h[i]+2-i)%mod;
    		//要么比最大值小,那么比最大值大
    		//只有两种方案 
    		else if(h[i]>h[i-1])
    			ans=ans*2%mod;
    	}
    	if(flag==0)
    		cout<<"0"<<endl;
    	else
    		cout<<ans<<endl;
    }
    signed main()
    {
    	int t=read();
    	while(t--)
    		solve();
    	return 0;
    }
    
    
    
  • 相关阅读:
    LAMP环境搭建
    Httpd
    MySQL常用配置和性能压力测试:MySQL系列之十五
    MySQL的高可用实现:MySQL系列之十四
    MySQL的复制:MySQL系列之十三
    备份与恢复:MySQL系列之十二
    日志记录:MySQL系列之十一
    事务隔离实现并发控制:MySQL系列之十
    SpringMVC上传文件(图片)并保存到本地
    W10如何开启LinuxBash及安装Ubuntu
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12686561.html
Copyright © 2011-2022 走看看