nyoj-矩形的个数

找规律!!!!!别忘了处理溢出!!!!!

假设矩形有1行,行有n种可能,列有n+n-1+……+1种可能

假设矩形有2行,行有n-1种可能,列有n+n-1+……+1种可能

……

假设矩形有n行,行有1种可能,列有n+n-1+……+1种可能

总共a*(a+1)*b*(b+1)/4种可能

int main()
{
    int a,b;
    while(cin >> a >> b)
     cout <<(long long) a*(a+1)*b*(b+1)/4<< endl;
     return 0;
}

原先枚举超时的代码,复杂度O(a*b)

 int r,c;
    long long sum = 0;
    while(scanf("%d%d",&r,&c)!=EOF)
    {
              sum = 0;
              for(int i = 1; i <= r; i++)
                for(int  j = 1; j <= c; j++)
                   sum += (r - i + 1)*(c - j + 1);
               printf("%I64d",sum);
               }
      return 0;
时间: 2024-10-10 01:28:58

nyoj-矩形的个数的相关文章

nyoj 206——矩形的个数——————【dp或公式】

矩形的个数 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个矩形. 给出A,B,计算可以从中找到多少个矩形. 输入 本题有多组输入数据(<10000),你必须处理到EOF为止 输入2个整数A,B(1<=A,B<=1000) 输出 输出找到的矩形数.  样例输入 1 2 3 2 样例输出 3 18 dp: #incl

矩形的个数

描述 在一个3*2的矩形中,可以找到6个1*1和4个2*1和3个1*2的矩形和2个2*2和2个3*1和1个3*2的矩形,总共18个矩形. 给出A,B,计算可以从中找到多少个矩形. 输入 本题有多组输入数据(<10000),你必须处理到EOF为止 输入2个整数A,B(1<=A,B<=2000) 输出 输出找到的矩形数. 样例输入 1 2 2 3 样例输出 3 18 #include <iostream> #include <cstring> #include <

NYOJ206 矩形的个数 【数学】

矩形的个数 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个矩形. 给出A,B,计算可以从中找到多少个矩形. 输入 本题有多组输入数据(<10000),你必须处理到EOF为止 输入2个整数A,B(1<=A,B<=1000) 输出 输出找到的矩形数.  样例输入 1 2 3 2 样例输出 3 18 /* **设有a行

(南阳理工 acm)题目206 矩形的个数

矩形的个数 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个矩形. 给出A,B,计算可以从中找到多少个矩形. 输入 本题有多组输入数据(<10000),你必须处理到EOF为止 输入2个整数A,B(1<=A,B<=1000) 输出 输出找到的矩形数.  样例输入 1 2 3 2 样例输出 3 18 #include&

NYOJ - 矩形嵌套(经典dp)

矩形嵌套时间限制:3000 ms | 内存限制:65535 KB 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度).例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中.你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内. 输入第一行是一个正正数N(0<N<10),表示测试数据组数,每组测试数据的第一行是一

NYOJ 206 矩形的个数

#include<stdio.h>int main(){ long long m,n,t; while(~scanf("%lld%lld",&m,&n)) { t=m*(m+1)/2*n*(n+1)/2; printf("%lld\n",t); }}

NYOJ 完全平方数的个数

完全平方数的个数 时间限制:6500 ms  |  内存限制:65535 KB 难度:2 描述 给定整数区间[A,B]问其中有多少个完全平方数. 输入 多组数据,包含两个正整数A,B 1<=A<=B<=2000000000. 输出 每组数据输出一行包含一个整数,表示闭区间[A,B]中包含的完全平方数的个数. 样例输入 1 1 1 2 3 10 3 3 样例输出 1 1 2 0 #include<cstdio> #include<cstdlib> #include&

NYOJ 31 5个数求最值

描述 设计一个从5个整数中取最小数和最大数的程序 输入 输入只有一组测试数据,为五个不大于1万的正整数 输出 输出两个数,第一个为这五个数中的最小值,第二个为这五个数中的最大值,两个数字以空格格开. 样例输入 1 2 3 4 5 样例输出 1 5 #include <iostream> #include <climits> using namespace std; int main() { int m; int max=INT_MIN; int min = INT_MAX; for

nyoj 100-1的个数 (因为只统计1的个数,连栈都不需要了)

100-1的个数 内存限制:64MB 时间限制:3000ms 特判: No 通过数:33 提交数:42 难度:1 题目描述: 小南刚学了二进制,他想知道一个数的二进制表示中有多少个1,你能帮他写一个程序来完成这个任务吗? 输入描述: 第一行输入一个整数N,表示测试数据的组数(1<N<1000) 每组测试数据只有一行,是一个整数M(0=<M<=10000) 输出描述: 每组测试输出占一行,输出M的二进制表示中1的个数 样例输入: 复制 3 4 6 7 样例输出: 1 2 3 C/C+

NYOJ 16 矩形嵌套

矩形嵌套 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度).例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中.你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内. 输入 第一行是一个正正数N(0<N<10),表示测试数据组数,每组测