HDU -2524 矩形A + B

找规律题,这种题目比较巧妙,要仔细观察找出规律

1. 假设只有一行,一共有n列,那么由一个小矩形构成的矩形个数为n, 由两个小矩形构成的矩形个数为 n - 1个 .... 由 n 个小矩形构成的矩形个数为1个,所以所有的矩形个数就是

n + (n - 1) + (n - 2) + ...+ 2 + 1 = n * (n + 1) / 2

2. 同理假设只有一列, 可以构成的矩形数目也是 n * (n + 1) / 2

所以, 总的矩形个数,就是行构成的矩形总数 * 列构成的矩形总数

代码如下

 1 #include <stdio.h>
 2
 3 int main()
 4 {
 5     int n, m, N;
 6     scanf("%d", &N);
 7     while (N--)
 8     {
 9         scanf("%d%d", &n, &m);
10         int t = n * (n + 1) / 2 * m * (m + 1) / 2;
11         printf("%d\n", t);
12     }
13
14     return 0;
15 }
时间: 2024-10-29 19:06:28

HDU -2524 矩形A + B的相关文章

hdu 2524 矩形 A+B

http://acm.hdu.edu.cn/showproblem.php?pid=2524 提示: 当只有一行的时候,矩形的个数是m+(m-1)+-+1=m*(m-1)/2; 所以当有n行的时候就是n个m行所以就是m*(m-1)/2*n*(n-1)/2; #include <iostream> using namespace std; int main() { int t,n,m; cin>>t; while(t--) { cin>>m>>n; cout&

HDOJ(HDU) 2524 矩形A + B(推导公式、)

Problem 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 此方格其实就是求其中所有格子数,如果按宽度来算的话,1,2,3,-m,种情况,对每一种情况,有(1+2

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 5251 矩形面积(二维凸包旋转卡壳最小矩形覆盖问题) --2015百度之星题目

B - 矩形面积 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description 小度熊有一个桌面,小度熊剪了很多矩形放在桌面上,小度熊想知道能把这些矩形包围起来的面积最小的矩形的面积是多少. Input 第一行一个正整数 T,代表测试数据组数(),接下来 T 组测试数据. 每组测试数据占若干行,第一行一个正整数 ,代表矩形的数量.接下来 N 行,每行 8

hdu 5251 矩形面积(百度之星初赛1)(计算几何)

题意:n*4个点,求覆盖所有点的最小矩形面积: 思路:凸包+旋转卡壳,uva10173几乎原题,暂时没写出来,贴一下斌神的码,待补: #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map

hdu 3265 矩形剪块面积并

http://acm.hust.edu.cn/vjudge/problem/10769 给n张海报,在每张海报上剪掉一个矩形,求面积并 把剪块的海报分成四个矩形,就是普通的求面积并问题了 #include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #include <a

hdoj 2524 矩形A + B【递推】

矩形A + B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5187    Accepted Submission(s): 4034 Problem Description 给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形,下图为高为2,宽为4的网格. Input 第一行输入一个t, 表示有t组数据,然后每行输入n,m,

Largest Rectangle in a Histogram (poj 2559 &amp;&amp; hdu 1506 矩形系列 迭代法)

Language: Default Largest Rectangle in a Histogram Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15608   Accepted: 5040 Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectan

hdu 4419 矩形面积并

#include <iostream> #include<string.h> #include<cstdio> #include<cmath> #include<algorithm> #include<map> using namespace std; typedef __int64 LL; const int mmax = 20010; map<char,int>q; struct Rect { LL x1,x2; LL