The 2019 China Collegiate Programming Contest Harbin Site I - Interesting Permutation 思维

Posted qingyuyyyyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了The 2019 China Collegiate Programming Contest Harbin Site I - Interesting Permutation 思维相关的知识,希望对你有一定的参考价值。

//#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;
}


以上是关于The 2019 China Collegiate Programming Contest Harbin Site I - Interesting Permutation 思维的主要内容,如果未能解决你的问题,请参考以下文章

The 2019 China Collegiate Programming Contest Harbin Site F. Fixing Banners

The 2019 China Collegiate Programming Contest Harbin Site I. Interesting Permutation

The 2019 China Collegiate Programming Contest Harbin Site K. Keeping Rabbits

The 2019 China Collegiate Programming Contest Harbin Site I - Interesting Permutation 思维

The 2019 China Collegiate Programming Contest Harbin Site A - Artful Paintings 差分约束

Rolling The Polygon (2018-2019 ACM-ICPC, China Multi-Provincial Collegiate Programming Contest)(The