zoukankan      html  css  js  c++  java
  • 2019CCPC哈尔滨 Interesting Permutation(思维)

    首先约束不成立情况,因为他是最大值减最小值,所以对于成立的h来说,h1等于0,h[n]=n-1,并且h[i]>=h[i-1]。

    其次我们需要计算的是合法的排列。对于h[i]>h[i-1],显然a[i]是当前的最大值或者最小值,因此答案值*2,并且多出了h[i]-h[i-1]-1个空位,这个空位的意思时,选这些空位不会改变h[i]。

    因此当h[i]==h[i-1],就是我们选择了空位,所以答案乘以空位数,因为我们选择了他,所以空位数--

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=5e5+10;
    const int mod=1e9+7;
    int h[N];
    int main(){
        ios::sync_with_stdio(false);
        int t;
        cin>>t;
        while(t--){
            int n;
            cin>>n;
            int i;
            for(i=1;i<=n;i++){
                cin>>h[i];
            }
            int ok=0;
            for(i=1;i<=n;i++){
                if(i==1){
                    if(h[1]!=0){
                        ok=1;
                        break;
                    }
                }
                else if(i==n){
                    if(h[i]>=n){
                        ok=1;
                        break;
                    }
                }
                else{
                    if(h[i]<h[i-1]){
                        ok=1;
                        break;
                    }
                }
            }
            if(ok){
                cout<<0<<endl;
                continue;
            }
            else{
                ll ans=1;
                ll cnt=0;
                for(i=2;i<=n;i++){
                    if(h[i]>h[i-1]){
                        ans=ans*2%mod;
                        cnt+=(h[i]-h[i-1]-1);
                    }
                    else{
                        ans=(ans*cnt)%mod;
                        cnt--;
                    }
                }
                cout<<ans<<endl;
            }
        }
    }
    View Code
    没有人不辛苦,只有人不喊疼
  • 相关阅读:
    查询datatime类型
    ms的题目,无聊不妨看看
    读取客户端收藏夹资料的问题
    delphi中的DBGrid无法刷新数据
    jsp与javascript
    .net2.0 web site中的cs文件怎么编译为dll
    由传奇木马引起的遐想
    com组件的调用
    Crystal Report的奇怪问题
    算法导论15章LCS实现(c++)
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13532542.html
Copyright © 2011-2022 走看看