2016-06-01 17:33:30

题目链接: 矩阵乘法2 (Codevs No.3147)

题目大意:

  给定两个大小相同的正方形矩阵A,B.多次询问,每次求乘后矩阵的一个子矩阵所有元素的和.

解法:

  首先想到暴力.

    预处理N^3,询问模拟扫,这常数简直瞬间爆炸啊

  当然是可以优化的.

    列出子矩阵的元素表达式,就会发现有一些元素//矩阵乘法2 (Codevs No.3147)
//矩阵乘法
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=2010;
int map1[maxn][maxn];
int map2[maxn][maxn];
long long ans;
int N,M;
int a,b,c,d;
int main()
{
    scanf("%d %d",&N,&M);
    for(int i=1;i<=N;i++)
    {
        for(int j=1;j<=N;j++)
        {
            scanf("%d",&map1[i][j]);
            map1[i][j]+=map1[i-1][j];
        }
    }
    for(int i=1;i<=N;i++)
    {
        for(int j=1;j<=N;j++)
        {
            scanf("%d",&map2[i][j]);
            map2[i][j]+=map2[i][j-1];
        }
    }
    for(int i=1;i<=M;i++)
    {
        ans=0;
        scanf("%d %d %d %d",&a,&b,&c,&d);
        for(int i=1;i<=N;i++)
        {
            int sumxmap2=map2[i][max(b,d)]-map2[i][min(b,d)-1];
            int sumymap1=map1[max(a,c)][i]-map1[min(a,c)-1][i];
            ans+=(long long)sumxmap2*sumymap1;
        }
        printf("%lld\n",ans);
    }
    return 0;
}的乘积可以做乘法分配律

    所以直接放弃求出子矩阵的确切值,按照分配律的特点组合数据.

    我们对A(乘法的时候乘行)进行列前缀和,对B(乘法的时候乘列)进行行前缀和

    最后所有元素的和就可以表示成sigma((A[i][Dbound]-A[i][Ubound-1])*(B[i][Rbound]-B[i][Lbound-1]));

    (Ubound,Dbound,Lbound,Rbound表示小矩阵的上下左右)

 //矩阵乘法2 (Codevs No.3147)
//矩阵乘法
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=;
int map1[maxn][maxn];
int map2[maxn][maxn];
long long ans;
int N,M;
int a,b,c,d;
int main()
{
scanf("%d %d",&N,&M);
for(int i=;i<=N;i++)
{
for(int j=;j<=N;j++)
{
scanf("%d",&map1[i][j]);
map1[i][j]+=map1[i-][j];
}
}
for(int i=;i<=N;i++)
{
for(int j=;j<=N;j++)
{
scanf("%d",&map2[i][j]);
map2[i][j]+=map2[i][j-];
}
}
for(int i=;i<=M;i++)
{
ans=;
scanf("%d %d %d %d",&a,&b,&c,&d);
for(int i=;i<=N;i++)
{
int sumxmap2=map2[i][max(b,d)]-map2[i][min(b,d)-];
int sumymap1=map1[max(a,c)][i]-map1[min(a,c)-][i];
ans+=(long long)sumxmap2*sumymap1;
}
printf("%lld\n",ans);
}
return ;
}

Codevs No.3147 矩阵乘法2的更多相关文章

  1. Codevs No.1287 矩阵乘法

    2016-06-01 16:53:23 题目链接: 矩阵乘法 (Codevs No.1287) 题目大意: 给你两个可乘矩阵a,b,求a*b 解法: 定义....... //矩阵乘法 (Codevs ...

  2. 矩阵乘法快速幂 codevs 1250 Fibonacci数列

    codevs 1250 Fibonacci数列  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 定义:f0=f1=1 ...

  3. [codevs 1482]路线统计(矩阵乘法)

    题目:http://codevs.cn/problem/1482/ 分析:很像“经过K条边的最短路径条数”.但有所不同,那就是不是边数固定,而是路径总长度固定.看似不能用矩阵乘法了……但注意到每条边的 ...

  4. 矩阵乘法 codevs 1287 矩阵乘法

    1287 矩阵乘法  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold       题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象 ...

  5. Codevs 1287 矩阵乘法&&Noi.cn 09:矩阵乘法(矩阵乘法练手题)

    1287 矩阵乘法  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 小明最近在为线性代数而头疼, ...

  6. codevs 3332 数列 (矩阵乘法)

    /* 裸地矩阵乘法 矩阵很好想的 1 1 0 0 0 1 1 0 0 */ #include<iostream> #include<cstring> #include<c ...

  7. CODEVS 1287 矩阵乘法

    1287 矩阵乘法  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊) ...

  8. codevs矩阵乘法系列

    T1:矩阵乘法板子题,练手. #include <map> #include <set> #include <cmath> #include <ctime&g ...

  9. Codevs 1305 Freda的道路(矩阵乘法 DP优化)

    1305 Freda的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description Freda要到Rainbow的城堡去玩了.我们可以认 ...

随机推荐

  1. 深入探索 Java 热部署

    在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作.对于某些大型的应用来 ...

  2. 233. Number of Digit One

    题目: Given an integer n, count the total number of digit 1 appearing in all non-negative integers les ...

  3. Android Handler之Message传递参数

    最近发现Message,发送消息可以传递参数,这个思路很好,所以写了一个例子,点击屏幕,给Activity发送一个消息,传递两个参数,并把这个activity销毁掉! 程序打开界面: 点击屏幕,销毁a ...

  4. cas单点登出

    由于项目需求要实现单点登出需要在网上找了N久终于实现单点登出. 使用cas-server-core-3.3.3.jar(CAS Server 3.3.3) 使用cas-client-core-3.1. ...

  5. Catalan数推导(转载)

    Raney引理: 设整数序列A = {Ai, i=1, 2, …, N},且部分和Sk=A1+…+Ak,序列中所有的数字的和SN=1,在A的N个循环表示中,有且仅有一个序列B,满足B的任意部分和Si均 ...

  6. HDU 1695 (莫比乌斯反演) GCD

    题意: 从区间[1, b]和[1, d]中分别选一个x, y,使得gcd(x, y) = k, 求满足条件的xy的对数(不区分xy的顺序) 分析: 虽然之前写过一个莫比乌斯反演的总结,可遇到这道题还是 ...

  7. codevs 3123 高精度练习之超大整数乘法

    fft. #include<iostream> #include<cstdio> #include<cstring> #include<complex> ...

  8. [反汇编练习] 160个CrackMe之010

    [反汇编练习] 160个CrackMe之010. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  9. [cocos2d-x·解Bug]关于cocos2d-x游戏在android锁屏状态下播放Bgm的解决方法

    最近<宠物联萌>在三星App上发布遇到一个问题:如果用户在锁定屏幕时解锁解到一半时取消解锁,这时用cocos2d-x开发的游戏就会出现游戏Bgm会恢复播放,但手机屏幕仍然是锁屏状态的Bug ...

  10. <摘录>TS,PS,PES包格式

    PES是打包过的ES,已经插入PTS和DTS,一般是一个pes包为一帧图像 PES包格式: PES再打包成TS流或PS流,往往一个PES会分存到多个ts包中, start_code: 0x00 00 ...