zoukankan      html  css  js  c++  java
  • 1288C Two Arrays

    题意:

    两个长度为M的序列a和b,要求里面每个数字都在1和N之间,同时a数组不递减,b数组不递增,并且对于所有元素,a(i)<b(i),询问有多少种这样的ab序列,结果对1e9+7取模

    题解:

    翻转b序列,并与a序列合并,就是一个长度为2*M的严格不递减的序列,问题转化为求这个序列有多少种。

    开一个二维dp数组,表示第i位后面放大于等于j的数字的方案数,然后推导状态转移方程:

    dp(i)(j)=dp(i)(j+1)+dp(i-1)(j)

    时间复杂度是O(M*N)

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn=1e3+100;
    const int mod=1e9+7;
    ll dp[maxn<<1][maxn];
    //dp[i][j]表示第i个位置可以放大于等于j的方案数 
    int main () {
        int N,M;
        scanf("%d%d",&N,&M);
        for (int i=1;i<=N;i++)
            dp[1][i]=1;
        for (int i=2;i<=2*M;i++) {
            for (int j=N;j>=1;j--)
                dp[i][j]=(dp[i][j+1]+dp[i-1][j])%mod;
        } 
        ll ans=0;
        for (int i=1;i<=N;i++)
            ans+=dp[2*M][i],ans%=mod;
        printf("%lld
    ",ans);
    }
  • 相关阅读:
    ValueStack、ActionContext
    s debug
    1923: [Sdoi2010]外星千足虫
    1013: [JSOI2008]球形空间产生器sphere
    HDU 3923 Invoker
    poj 1286 Necklace of Beads
    HDU 3037:Saving Beans
    2440: [中山市选2011]完全平方数
    1101: [POI2007]Zap
    1968: [Ahoi2005]COMMON 约数研究
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12626445.html
Copyright © 2011-2022 走看看