tsinsen A1333 矩陣乘法(梁 盾)

2022-05-03 09:42:07 字數 1889 閱讀 3874

a1333. 矩陣乘法(梁 盾)

時間限制:2.0s   記憶體限制:256.0mb  

總提交次數:515ac次數:211平均分:54.14

將本題分享到:

檢視未格式化的試題

提交試題討論

試題**

2012中國國家集訓隊命題答辯

問題描述

給你乙個n*n的矩陣,不用算矩陣乘法,但是每次詢問乙個子矩形的第k小數。

輸入格式

第一行兩個數n,q,表示矩陣大小和詢問組數;

接下來n行n列一共n*n個數,表示這個矩陣;

再接下來q行每行5個數描述乙個詢問:x1,y1,x2,y2,k表示找到以(x1,y1)為左上角、以(x2,y2)為右下角的子矩形中的第k小數。

輸出格式

對於每組詢問輸出第k小的數。

樣例輸入

2 22 1

3 41 2 1 2 1

1 1 2 2 3

樣例輸出13

資料規模和約定

矩陣中數字是109以內的非負整數;

20%的資料:n<=100,q<=1000;

40%的資料:n<=300,q<=10000;

60%的資料:n<=400,q<=30000;

100%的資料:n<=500,q<=60000。

poj2104 k-th的二維拓展,開個二維樹狀陣列即可!

#include#include

using

namespace

std;

inline

intread()

while(ch>='

0'&&ch<='9')

return x*f;

}const

int n=505,z=3.5e5+5

;const

int inf=2e9;

struct

nodep[z],p1[z],p2[z];

intn,m,tot,bit[n][n],ans[z];

intmx,mn;

inline

int lowbit(int

x)inline

void update(int x,int y,int

v) }

}inline

int query(int x,int

y) }

return

res;

}void solve(int l,int r,int x,int

y)

int mid=x+y>>1,i,t1(0),t2(0),tt(0

);

for(i=l;i<=r;i++)

else

}else

else}}

for(i=1;i<=t1;i++) if(!p1[i].opt) update(p1[i].x1,p1[i].y1,-1

);

for(i=1;i<=t1;i++) p[l+i-1]=p1[i];

for(i=1;i<=t2;i++) p[l+t1+i-1]=p2[i];

solve(l,l+t1-1

,x,mid);

solve(l+t1,r,mid+1

,y);

}int

main()

}for(int i=1;i<=m;i++)

solve(

1,tot,mn,mx);

for(int i=1;i<=m;i++) printf("

%d\n

",ans[i]);

return0;

}

矩陣乘矩陣

7 15 矩陣a乘以b 15分 給定兩個矩陣a和b,要求你計算它們的乘積矩陣ab。需要注意的是,只有規模匹配的矩陣才可以相乘。即若a有r a 行 c a 列,b有r b 行 c b 列,則只有c a 與r b 相等時,兩個矩陣才能相乘。輸入格式 輸入先後給出兩個矩陣a和b。對於每個矩陣,首先在一行中...

tensorflow點乘與矩陣乘

若 w 為 m 1 的矩陣,x 為 m n 的矩陣,那麼通過點乘結果就會得到乙個 mn 的矩陣。若 w 為 m n 的矩陣,x 為 m n 的矩陣,那麼通過點乘結果就會得到乙個 mn 的矩陣。w的列數只能為 1 或與x的列數相等 即n w的行數與x的行數相等 才能進行乘法運算。若 w 為 m p 的...

最優矩陣鏈乘

問題描述 乙個n m矩陣由n行m列共n m個數排列而成。兩個矩陣a和b可以相乘當且僅當a的列數等於b的行數。乙個n m的矩陣乘以乙個m p的矩陣等於乙個n p的矩陣,運算量為nmp。矩陣乘法滿足結合律,a b c可以表示成 a b c或者是a b c 兩者的運算量卻不同。例如當a 2 3 b 3 4...