矩陣化一維

2022-05-17 22:36:43 字數 1831 閱讀 6864

矩陣化一維

字首和思想:

for(ri i=1;i<=n;i++)

for(ri j=1;j<=m;j++)

view code

應用:題目:

小 f 很喜歡數學,但是到了高中以後數學總是考不好。

有一天,他在數學課上發起了呆;他想起了過去的一年。一年前,當他初識演算法競賽的 時候,覺得整個世界都煥然一新。這世界上怎麼會有這麼多奇妙的東西?曾經自己覺得難以 解決的問題,被乙個又乙個演算法輕鬆解決。

小 f 當時暗自覺得,與自己的幼稚相比起來,還有好多要學習的呢。

一年過去了,想想都還有點恍惚。

他至今還能記得,某天晚上聽著入陣曲,激動地睡不著覺,寫題寫到雞鳴時分都興奮不 已。也許,這就是熱血吧。

也就是在那個時候,小 f 學會了矩陣乘法。讓兩個矩陣乘幾次就能算出斐波那契數列的 第

10^10

100項,真是奇妙無比呢。

不過,小 f 現在可不想手算矩陣乘法——他覺得好麻煩。取而代之的,是乙個簡單的小 問題。他寫寫畫畫,畫出了乙個 n \times mn×m 的矩陣,每個格仔裡都有乙個不超過 kk 的正整數。

小 f 想問問你,這個矩陣裡有多少個不同的子矩形中的數字之和是 kk 的倍數? 如果把乙個子矩形用它的左上角和右下角描述為 (x_1,y_1,x_2,y_2)(x

1​ ,y

1​ ,x

2​ ,y

2​ ),其中x_1 \le x_2,y_1 \le y_2x

1​ ≤x

2​ ,y

1​ ≤y

2​ ; 那麼,我們認為兩個子矩形是不同的,當且僅當他們以 (x_1,y_1,x_2,y_2)(x

1​ ,y

1​ ,x

2​ ,y

2​ ) 表示時不同;也就是 說,只要兩個矩形以 (x_1,y_1,x_2,y_2)(x

1​ ,y

1​ ,x

2​ ,y

2​ ) 表示時相同,就認為這兩個矩形是同乙個矩形,你應該 在你的答案裡只算一次。

輸入格式

從標準輸入中讀入資料。

輸入第一行,包含三個正整數 n,m,kn,m,k。

輸入接下來 nn 行,每行包含 mm 個正整數,第 ii 行第 jj 列表示矩陣中第 ii 行第 jj 列 中所填的正整數 a_a

i,j​ 。

輸出格式

輸出到標準輸出中。

輸入一行乙個非負整數,表示你的答案。

輸入輸出樣例

輸入 #1複製

2321

2121

2輸出 #1複製

6

view code

**

#include using

namespace

std;

const

int m = 10005

;const

int n = 100005

;#define ri register int

intn,m,mod;

long

long ans,arr[520][520],num[1000001],a[520

];int

main()

for(ri i=0;i)

for(ri j=i+1;j<=n;j++)

for(ri k=1;k<=m;k++)

}printf(

"%lld\n

",ans);

}

view code

6

矩陣歸一化

歸一化化定義 我是這樣認為的,歸一化化就是要把你需要處理的資料經過處理後 通過某種演算法 限制在你需要的一定範圍內。首先歸一化是為了後面資料處理的方便,其次是保正程式執行時收斂加快。在matlab裡面,用於歸一化的方法共有三中,1 premnmx postmnmx tramnmx 2 prestd ...

二維hash矩陣(一)

鏈結 思路 把a b矩陣 雜湊為數字 存到set 怎樣hash 先把每行字首 hash 掉用函式可以 求出區間hash值 include using namespace std typedef unsigned long long ll const ll n 1010 ll m,n,a,b,q ll...

一 n維蛇形矩陣構建

一 基礎版的蛇形方陣,如下圖所示 思路 我們先構建乙個n n的矩陣dp 列表 然後用0填充,初始值 value 1,然後value 1更新值,將value填入到每乙個位置。對於上圖所示,我們發現元素在每乙個圈都是以順時針列印,那麼可以將每乙個圈設定為乙個迴圈。對於乙個外圈,可以看到它是從左到右,從上...