矩陣化一維
字首和思想:
for(ri i=1;i<=n;i++)view codefor(ri j=1;j<=m;j++)
應用:題目:
小 f 很喜歡數學,但是到了高中以後數學總是考不好。view code有一天,他在數學課上發起了呆;他想起了過去的一年。一年前,當他初識演算法競賽的 時候,覺得整個世界都煥然一新。這世界上怎麼會有這麼多奇妙的東西?曾經自己覺得難以 解決的問題,被乙個又乙個演算法輕鬆解決。
小 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
**
#include usingview codenamespace
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);
}
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填入到每乙個位置。對於上圖所示,我們發現元素在每乙個圈都是以順時針列印,那麼可以將每乙個圈設定為乙個迴圈。對於乙個外圈,可以看到它是從左到右,從上...