HDU 1799 循环多少次? 解题心得

原题

Description

我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分。例如, 
如果代码中出现 
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有总共多少计算量。

Input

有T组case,T<=10000。每个case有两个整数m和n,0<m<=2000,0<n<=2000.

Output

对于每个case,输出一个值,表示总的计算量,也许这个数字很大,那么你只需要输出除1007留下的余数即可。

Sample Input

2
1 3
2 3

Sample Output

3
3

我的代码:

#include<iostream>
#include<cstdio>
using namespace std;

int ch[2500][2500];

int main()
{
    int i, j;
    for (i = 1; i <= 2000; i++)
    {
              ch[i][i] = 1;
              ch[i][1] = i % 1007;
    }

     for (i = 2; i <= 2000; i++)
        for (j = 2; j <= i; j++)
             ch[i][j] = (ch[i - 1][j] % 1007 + ch[i - 1][j - 1] % 1007) % 1007;

     int t;
     cin >> t;
     while (t--)
     {
         int m, n;
         scanf("%d%d", &m, &n);
         cout << ch[n][m] << endl;
     }
    return 0;
}

时间: 2024-10-12 12:55:13

HDU 1799 循环多少次? 解题心得的相关文章

HDU 1799 循环多少次?

/* 中文题意: 中文翻译: 题目大意:求循环的次数. 解题思路:如下: 难点详解:画表会发现和杨辉三角有点像,这就有了写下去的希望.但输出时m和n不一样,这样就要在调试中发现规律,才可输出正确的结果. 关键点:画表格,从中发现规律,进而解答这题. 解题人:lingnichong 解题时间:2014/08/01     00:08 解题感受:当时没写出来,后来会长说了一下,有了一些思路,就按这个思路写了下来.还是那个宗旨,题目看不懂可以,会写就行,写对了就行,不在乎你是什么方法.还有就是做题时要

HDU 1799 循环多少次?(组合数学)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1799 Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 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循环操作,且每

hdu 1799 循环多少次?

Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 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有总共多少计

HDU 1799 循环多少次?(DP+组合数学)

循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3984    Accepted Submission(s): 1513 Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次OP运算

HDU 4627 The Unsolvable Problem 解题心得

原题: Description There are many unsolvable problem in the world.It could be about one or about zero.But this time it is about bigger number. Given an integer n(2 <= n <= 10 9).We should find a pair of positive integer a, b so that a + b = n and [a, b

HDU 1276 士兵队列训练问题 解题心得

原题: Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数...,以后从头开始轮流进行一至二报数.一至三报数直到剩下的人数不超过三人为止. Input 本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000. Output 共有N行,分别对应输入的新兵人数,每行

HDU 2524 矩形A + B 解题心得

原题: Description 给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形,下图为高为2,宽为4的网格.  Input 第一行输入一个t, 表示有t组数据,然后每行输入n,m,分别表示网格的高和宽 ( n < 100 , m < 100). Output 每行输出网格中有多少个矩形. Sample Input 2 1 2 2 4 Sample Output 3 30 我的代码: #include<iostream> #include<cstdio>

HDU 1069 Monkey and Banana 解题心得

原题: Description 一组研究人员正在设计一项实验,以测试猴子的智商.他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子.如果猴子足够聪明,它应当能够通过合理的放置一些砖块建立一个塔,并爬上去吃他们最喜欢的香蕉. 研究人员有n种类型的砖块,每种类型的砖块都有无限个.第i块砖块的长宽高分别用xi,yi,zi来表示. 同时,由于砖块是可以旋转的,每个砖块的3条边可以组成6种不同的长宽高. 在构建塔时,当且仅当A砖块的长和宽都分别小于B砖块的长和宽时,A砖块才能放到B砖块的上面,因为必

第四章学习小结 串的模式匹配 解题心得体会

串的模式匹配 解题心得体会 关于串,模式匹配是其一个很重要的问题.针对这个问题,书上讲了两种模式匹配的算法,即BF算法和KMP算法,下面针对这两种算法的实现谈谈我的心得. 一.BF算法的探索 [错误代码1] #include<iostream> #include<string.h> using namespace std; typedef struct{ char ch[1000002]; int length; }SString; void Index_BF(SString S,