zoukankan      html  css  js  c++  java
  • cf 1288 补题

    C题题意:

    给你两个数n,m ; m为数组长度,数组内的数据范围为1到n。

    • 对任意i,有a[i] <= b[i]
    • 数组a为非降序
    • 数组b为非升序

    结果可能非常大,您应该以10^9+7模数打印它。

    Input

    n m (1≤n≤1000, 1≤m≤10).

    Output

    打印一个整数-满足上述条件的数组a和b的个数对10^9+7取模的结果。

    分析:

    分析一下题目,a[i]<=b[i]
    数组a为非降序,则a1为最小的数
    数组b为非升序,则b1为最大的数

    则将b数组倒序(b就变为非降序了),和a数组形成了一个非降序的c数组

    问题就变成了,求在1到n中有多少个满足条件的c数组

    dp[i] [j]指的是对于数组长度为i,且最后一位为j并满足条件的个数

    则最后结果sum为dp[2*m] [j] 从1到 n 之和

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int MA=10005;
    const int mod=1e9+7;
    ll dp[MA][MA];
    int main(){
    	int n,m;
    	cin>>n>>m;
    	for(int j=1;j<=n;j++){
    		dp[1][j]=1;
    	}
    	for(int i=2;i<=2*m;i++){
    		for(int j=1;j<=n;j++){
    			for(int k=j;k>=1;k--){
    				dp[i][j]+=dp[i-1][k];
    				dp[i][j]%=mod;
    			}
    		}
    	}
    	ll sum=0;
    	for(int j=1;j<=n;j++){
    		sum+=dp[2*m][j];
    		sum%=mod;
    	}
    	cout<<sum<<endl;
    	return 0;
    }  
    
  • 相关阅读:
    Oracle- 表的自增长创建
    C#- 写Windows服务
    基于redis分布式缓存实现(新浪微博案例)
    分布式集群系统下的高可用session解决方案
    Hibernate 缓存介绍
    MongoDB 安装(Window/Linux)
    MongoDB 优点
    MongoDB 介绍
    浅析数据一致性
    mysql常用函数汇总
  • 原文地址:https://www.cnblogs.com/w-w-t/p/12215257.html
Copyright © 2011-2022 走看看