[HNOI 2001]矩阵乘积
Description


Input

Output

Sample Input
1 2
3 4 2 3
1 1 3
1 4 5
2 2 1
3 1 2 1 2 2
2 1 1
3 1 2
3 2 4 1 2 2
1 3 3
2 1 1
2 2 2
Sample Output
12
题解
直接做$O(n^3)$是肯定过不了的
由于只要求最后的$(x,y)$的值,
那么对于第一个矩阵我们只要管第$x$行,
第三个矩阵只要管$y$列,
由于满足数的乘法的分配率,我们可以边输入边处理。
这道题比较麻烦的应该在输入上...
我用了另外的三个变量记录上一次输入的$i$,$j$,$a$的值,就方便判断了。
#include<set>
#include<map>
#include<cmath>
#include<ctime>
#include<queue>
#include<stack>
#include<cstdio>
#include<string>
#include<vector>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define LL long long
#define RE register
#define IL inline
using namespace std;
const int N=; int x,y,n,m,o,p;
int a[N+],b[N+];
int i,j,c,li,lj,lc; int main()
{
scanf("%d%d%d%d%d%d",&x,&y,&n,&m,&o,&p);
scanf("%d%d%d",&i,&j,&c);
while (true)
{
if (i==x) a[j]=c;
li=i,lj=j,lc=c;
scanf("%d%d%d",&i,&j,&c);
if (i<li||i==li&&j<=lj) break;
}
while (true)
{
b[j]+=a[i]*c;
li=i,lj=j,lc=c;
scanf("%d%d%d",&i,&j,&c);
if (i<li||i==li&&j<=lj) break;
}
memcpy(a,b,sizeof(a));
memset(b,,sizeof(b));
while(true)
{
if (j==y) b[y]+=a[i]*c;
li=i,lj=j,lc=c;
scanf("%d%d%d",&i,&j,&c);
if (i<li||i==li&&j<=lj) break;
}
printf("%d\n",b[y]);
return ;
}
[HNOI 2001]矩阵乘积的更多相关文章
- 卷积、矩阵乘积、高斯模糊滤波(降噪)、空域计算(2D卷积计算)、频域计算(FFT)的理解
矩阵乘积:对应行列对应元素相乘的和组成新的矩阵 两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义.如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵 并将此乘积记为: ...
- hdu 5068 线段树维护矩阵乘积
http://acm.hdu.edu.cn/showproblem.php?pid=5068 题意给的略不清晰 m个询问:从i层去j层的方法数(求连段乘积)或者修改从x层y门和x+1层z门的状态反转( ...
- 2014 HDU多校弟五场J题 【矩阵乘积】
题意很简单,就是两个大矩阵相乘,然后求乘积. 用 Strassen算法 的话,当N的规模达到100左右就会StackOverFlow了 况且输入的数据范围可达到800,如果变量还不用全局变量的话连内存 ...
- ZOJ - 2671 Cryptography(线段树+求区间矩阵乘积)
题意:已知n个矩阵(下标从1开始),求下标x~y区间矩阵的乘积.最多m次询问,n ( 1 <= n <= 30,000) and m ( 1 <= m <= 30,000). ...
- [HNOI2001]矩阵乘积
题目描述 输入输出格式 输入格式: 第1行为:x y (第1行为两个正整数:x,y分别表示输出结果所在的行和列) 第2行为:m n o p(第2行给出的正整数表明A为m×n矩阵,B为n×o矩阵,C为o ...
- HDU 4920 矩阵乘积 优化
Matrix multiplication Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/ ...
- 【HNOI】矩阵染色 数论
[题目描述]一个2*i的矩阵,一共有m种颜色,相邻两个格子颜色不能相同,m种颜色不必都用上,f[i]表示这个答案,求Σf[i]*(2*i)^m (1<=i<=n)%p. [数据范围] 20 ...
- HihoCode-1675-稀疏矩阵乘积
上来先一顿暴力,结果70分就超时了. 然后意识到稀疏矩阵,有很多0,如果c[i][j] != 0,那么一定存在至少一个k满足a[i][k] != 0 && b[k][j] != 0; ...
- 动态规划(奇异状态):HNOI 2001 产品加工
产品加工 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加 ...
随机推荐
- Leetcode 15——3Sum
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...
- python 堆排序
堆排序就是把堆顶的最大数取出, 将剩余的堆继续调整为最大堆,具体过程在第二块有介绍,以递归实现 剩余部分调整为最大堆后,再次将堆顶的最大数取出,再将剩余部分调整为最大堆,这个过程持续到剩余数只有一个时 ...
- decltype操作符
关于decltype操作符的说明: 1.在C++中,decltype作为操作符,用于查询表达式的数据类型.decltype在C++11标准制定时引入,主要是为泛型编程而设计,以解决泛型编程中,由于有些 ...
- sqlserver之排序规则和ETL不支持sqlserverdatetime2的问题
sqlserver的排序规则大概分为Windows 排序规则和 SQL Server 排序规则.数据在安装的时候,默认不设置会默认为SQL_Latin1_General_CP1_CI_AI.数据库在创 ...
- linux作为服务器,利用top命令查看服务进程的耗用情况
top命令查看进程服务如下: 其中shift+m可以按照内存的消耗进行排序,shift+p是按照cpu的消耗进程,排序,其中对cpu的消耗是一定时间,谁占用的时间越长消耗越大, 还有按空格键,会刷新一 ...
- NoSQL简介
相信大家也多多少少了解过一些数据库,最常用的当属MySQL了,当然也这是关系型数据库的代表了 常见的关系型数据库有:MySQL.SQLServer.Oracle 而数据库也有另一个流派-----NoS ...
- java的<<左移,>>右移,>>>无符号右移
>>右移 右移,道在二进制中,假设用一个32位的Int表示一个64,那么高位就都是0,所以当我们把整个二进制数右移,如0100000 >> 2 = 0001000,可以看到右移 ...
- ios开发常识(1)开发语言和参考资料
学iphone开发用的语言是object-c,object-c和c++,java还是有很大区别,如果你坚持学习iphone开发的话可以不学c++,java,直接学习这个语言,先入为主,可能觉得这个语言 ...
- OAuth2.0学习(1-11)新浪开放平台微博认证-使用OAuth2.0调用微博的开放API
使用OAuth2.0调用API 使用OAuth2.0调用API接口有两种方式: 1. 直接使用参数,传递参数名为 access_token URL 1 https://api.weibo.com/2/ ...
- [八省联考2018] 劈配 mentor
Description 一年一度的综艺节目<中国新代码>又开始了.Zayid 从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了. Input 轻车熟路的Zay ...