hdu1799(用递推公式求组合的个数)

2023-10-29

题目意思:

我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分。例如,
如果代码中出现
for(i=1;i<=n;i++) OP ;
那么做了n次OP运算,如果代码中出现
fori=1;i<=n; i++)
  for(j=i+1;j<=n; j++) OP;
那么做了n*(n-1)/2 次OP 操作。
现在给你已知有m层for循环操作,且每次for中变量的起始值是上一个变量的起始值+1(第一个变量的起始值是1),终止值都是一个输入的n,问最后OP有总共多少计算量。

http://acm.hdu.edu.cn/showproblem.php?pid=1799


题目分析:

注意观察到,可以发现循环的值是;C(n,m)=n!/(m!*(n-m)!),因为n值过大,不可以直接用公式

组合数学的递推公式:C(n,m)=C(n,m-1)+C(n-1,m-1)


AC代码:


/**
 *全排列问题,C(n,m)=n!/(m!*(n-m)!)
 *但是考虑到n的值过大,不能用这个方法
 *可以用组合公式C(n,m)=C(n-1,m)+C(n-1,m-1)
 *C(n,1)=n; C(n,n)=1; C(n,0)=1;
 *这样就可以用DP了
 */
#include<iostream>
#include<algorithm>
using namespace std;
int dp[2001][2001];
int main()
{
    for(int i=0;i<=2000;i++){
        dp[i][1]=i%1007;//C(n,1)=n;
        dp[i][0]=dp[i][i]=1;//C(n,0)=C(n,n)=1;
    }
    for(int i=2;i<=2000;i++){
        for(int j=1;j<=i;j++){
            dp[i][j]=(dp[i-1][j]+dp[i-1][j-1])%1007;
        }
    }
    int t,n,m;
    cin>>t;
    while(t--){
        cin>>m>>n;
        cout<<dp[n][m]<<endl;
    }
    return 0;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hdu1799(用递推公式求组合的个数) 的相关文章

随机推荐

  • kind & kubernetes 集群内如何通过 helm 部署定制化 Prometheus-Operator?

    文章目录 1 Prometheus 简介 2 Prometheus 优势 3 Prometheus 架构图 4 Prometheus Operator 简介 5 Prometheus Operator 架构图 6 环境准备 7 Kind 部
  • 优雅演进:探索低代码与全栈的完美结合

    前情提要 本章节是番外篇的低代码平台的相关知识 接下来我们即将进入一个全新的空间 对代码有一个全新的视角 以下的内容一定会让你对低代码平台有一个颠覆性的认识哦 以下内容干货满满 跟上步伐吧 作者介绍 作者 热爱编程不起眼的小人物 作者的Gi
  • sbt配置国内镜像

    操作环境 win10 从官网下载sbt的windows安装包 安装成功后 进入安装目录的 conf 文件夹 编辑sbtconfig txt 增加下面两行代码 Dsbt global base C Sbt sbt Dsbt repositor
  • 智能安全 - 学习资源

    Security Data Science Learning Resources
  • 【Spring源码系列】Bean生命周期-实例化前

    这里写目录标题 前言 一 实例化前 InstantiationAwareBeanPostProcessor介绍 InstantiationAwareBeanPostProcessor实例化前作用 InstantiationAwareBean
  • iphonex黑屏开不了机_手机死机开不了机怎么办

    大多数手机用户在使用手机过程中或多或少都遇到过死机的问题 如同电脑的操作系统也会出现死机一样 那么 当手机死机开不了机怎么办 下面介绍一下手机死机后开不了机解决办法 手机死机开不了机怎么办 苹果手机的死机解决方法 步骤1 按住你手机 开机键
  • 初探STM32F4(6)--系统时钟配置

    时钟配置 概述 时钟系统框图 时钟系统初始化代码架构分析 概述 经过前文对GPIO USART外设的初步学习 发现有两个基本知识需要补充学习 一个是系统时钟的相关配置 另一个是中断事件的相关配置 本文先学习系统时钟 阅读完本文 要能回答以下
  • C++ 防 陷阱2 重复包含头文件

    multiple definition of 错误 1 为了避免重复包含头文件 建议在声明每个都文件时采用 头文件卫士 采用google建议H 具体形式如下 ifndef PROJECT PATH FILE H define PROJECT
  • 十五)Stable Diffusion使用教程:其他

    A still life scene with the theme of small and delicate jewelry crystal clear gemstones Product positioning is conspicuo
  • ARM Linux Oops使用小结

    内核Oops小结 出现Oops消息的大部分错误时因为对NULL指针取值或者因为用了其他不正确的指针值 Oops如何产生的解释如下 由于处理器使用的地址几乎都是虚拟地址 这些地址通过一个被称为 页表 的结构被映射为物理地址 当引入一个非法指针
  • 【opencv4.3.0教程】01之opencv介绍与配置(win10+VS2015+OpenCV4.3.0)

    目录 一 前言 二 OpenCV介绍 1 介绍 2 OpenCV版本简介 3 OpenCV4 3 0下载 三 OpenCV安装与配置 1 安装 2 环境变量配置 四 配置VS2015 1 包含目录与库目录 2 链接器配置 五 测试及效果 一
  • Ajax vs Willem II,Feyenoord on top after beating Ajax 2-1

    Feyenoord on top after beating Ajax 2 1 Soccer Updated 2005 08 29 11 07 AMSTERDAM Netherlands Dirk Kuijt and Salomon Kal
  • 【概率论与数理统计】猴博士 笔记 p3-4 事件的概率、事件的独立性

    事件的概率 引入 画图 假设方块面积为1 那么P A 的数值就是点落在A上的概率 我们可以通过画图求出很多概率 如 P A B 0 25 P B A 0 23 P A B 0 58 一些概念 例1 解 0 3 画个图就行 例2 解 5 12
  • Windows平台下安装与配置MySQL ,配置环境变量,详细图解,

    1 安装检查 下载之前要看一下Windows版本 如果是专业版我们在安装之前需要多一步检查操作 如果是专业版我们需要在计算机管理中检查管理员属性中是否添加网络服务的属性 红框部分 计算机管理 gt 本地用户和组 gt 组 gt 双击Admi
  • C++复数运算

    C 复数运算探究 题目说明 抽象数据类型 ADT 的定义与实现 复数a bi a为实部 b为虚部 请用C或C 语言定义和实现复数抽象数据类型 要求能够输入两个实数作为实部和虚部 用于初始化 创建 一个复数 对任意的两个复数 能够按照复数运算
  • TypeC 基础

    type C接口形式 PD最大支持20V 5A 100W功率 通过CC线来协商Power供给 由于Type C的扩展功能 SBU1 SBU2 大部分配件诸如耳机 视频接口 debug接口等都可以实现兼容设计 在USB2 0端口 USB根据输
  • C++学习之路-构造函数的初始化列表

    构造函数 初始化列表 一 何为初始化列表 二 初始化列表的本质 三 初始化列表的优势 四 初始化列表中列表顺序问题 五 初始化列表与默认参数的配合使用 六 初始化列表的注意之处 七 构造函数的声明和实现分离时 初始化列表需写在实现里 八 子
  • 回归与分类区别

    回归与分类的根本区别在于输出空间是否为一个度量空间 我们不难看到 回归问题与分类问题本质上都是要建立映射关系 对于回归问题 其输出空间B是一个度量空间 即所谓 定量 也就是说 回归问题的输出空间定义了一个度量 去衡量输出值与真实值之间的 误
  • AGX Xavier使用记录

    整理了遇到的一些问题 Jetson AGX Xavier上查看版本 格格 gloria 博客园 Nvidia agx xavier TX2 无法查看opencv版本问题 Cc CSDN博客 Project cv bridge specifi
  • hdu1799(用递推公式求组合的个数)

    题目意思 我们知道 在编程中 我们时常需要考虑到时间复杂度 特别是对于循环的部分 例如 如果代码中出现 for i 1 i lt n i OP 那么做了n次OP运算 如果代码中出现 fori 1 i lt n i for j i 1 j l