第五届太原理工大学程序设计竞赛新生赛(同步赛) ——子矩阵和

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

Gold Rong 有两个下标从 1 开始的数组 A,BA,BA,B,长度分别为 nnn 和 mmm。

Hammer 用它们生成了一个大小为 n×mn\times mn×m 的矩阵 CCC,满足 Cij=Ai∗BjC_{ij} = A_i * B_jCij​=Ai​∗Bj​。(可以参考样例 1 )

Gold Rong 想考察 Hammer 对矩阵掌握的情况,一连抛出了 qqq 个询问,询问某个子矩阵的和。

输入描述:

第一行两个正整数 nnn 和 mmm (1≤n,m≤103)(1\le n,m\le10^3)(1≤n,m≤103) 。

第二行 nnn 个整数,代表数组 A (1≤Ai≤104)A\,(1\le A_i\le 10^4)A(1≤Ai​≤104) 。

第三行 mmm 个整数,代表数组 B (1≤Bj≤104)B\,( 1 \le B_j\le 10^4)B(1≤Bj​≤104) 。

第四行一个正整数 qqq ,代表有 qqq 次询问(1≤q≤103)( 1\le q\le 10^3)(1≤q≤103)。

接下来 qqq 行每行四个正整数 x1,y1,x2,y2 (1≤x1≤x2≤n,1≤y1≤y2≤m)x_1,y_1,x_2,y_2 \,(1\le x_1\le x_2\le n,1\le y_1\le y_2\le m)x1​,y1​,x2​,y2​(1≤x1​≤x2​≤n,1≤y1​≤y2​≤m) ,表示要询问一个左上角坐标为 (x1,y1)(x_1,y_1)(x1​,y1​) 右下角坐标为 (x2,y2)(x_2,y_2)(x2​,y2​) 的子矩阵的和。

输出描述:

输出共 qqq 行,每行一个整数代表子矩阵的和。

示例1

输入

复制3 2 3 2 1 2 4 2 1 1 2 2 2 1 3 1

3 2
3 2 1
2 4
2
1 1 2 2
2 1 3 1

输出

复制30 6

30
6

说明

 

样例 1 中, Hammer 生成的矩阵如下图。

Gold Rong 的第一个询问是以 (1,1) 为左上角,以 (2,2) 为右下角的子矩阵,其和为 30,如下图。

Gold Rong 的第二个询问是以 (2,1) 为左上角,以 (3,1) 为右下角的子矩阵,其和为 6,如下图。

示例2

输入

复制1 2 1 1 3 2 1 1 1 1 1 1 1 2

1 2
1
1 3
2
1 1 1 1
1 1 1 2

输出

复制1 4

1
4

备注:

提示:答案可能较大,请选择合适的数据类型储存。
#include<stdio.h>
int main(){
    long long int a,b,c,d,e,f,h,g,x1,x2,y1,y2;
    long long int z[10000],x[10000];
    scanf("%lld %lld",&a,&b);
    int y[a][b];
    for(c=0;c<a;c++){
        scanf("%lld",&z[c]);
    }
    for(c=0;c<b;c++){
        scanf("%lld",&x[c]);
    }
    for(c=0;c<b;c++){
        for(d=0;d<a;d++){
            y[d][c]=z[d]*x[c];
        }
    }
    scanf("%lld",&e);
    for(c=0;c<e;c++){
        g=0;
        scanf("%lld %lld %lld %lld",&x1,&x2,&y1,&y2);
        for(d=x1-1;d<y1;d++){
            for(f=x2-1;f<y2;f++){
                g=g+y[d][f];
            }
        }
        printf("%lld\n",g);
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值