牛客多校第八場 C CDMA 線性代數 沃爾什矩陣

2022-07-31 01:48:14 字數 1285 閱讀 8892

題意:

構造出乙個由1和-1組成的$2^k*2^k$的矩陣,使得矩陣任意兩列內積為0

題解:數學知識,沃爾什矩陣。沃爾什矩陣的特性被cdma(分碼多重進接)採用,使得編碼成為無線訊號的頻段和振幅之外的第三維,提高了無線通道利用率。

構造沃爾什矩陣只需倍增構造,以第i個矩陣的第k行重複兩遍,作為第i+1個矩陣的第2k行,取正一遍,取反一遍,作為第i+1個矩陣的第2k+1行。

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define inf 0x3f3f3f3f

#define maxn 100000+50

#define maxm 30000

#define ll long long

#define per(i,n,m) for(int i=n;i>=m;--i)

#define rep(i,n,m) for(int i=n;i<=m;++i)

#define mod 1000000000 + 7

#define mian main

#define mem(a, b) memset(a, b, sizeof a)#ifndef online_judge

#define dbg(x) cout << #x << "=" << x << endl;

#else

#define dbg(x)

#endif

inline

intread()

while (ch >= '

0' && ch <= '9'

)

return x *f;

}inline ll readll()

while (ch >= '

0' && ch <= '9'

)

return x *f;

}int a[15][2000][2000

];void

init()

if (j & 1

)

}else}}

}}int

main()

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

for (int j = 1; j <= n; ++j)

}}

牛客多校第八場

簽到題,可真短。題意 給n個數,對於每個連續子串行求區間內不同數字的個數的和。做法 一開始列舉每個區間的右端點i,判斷每個數字在區間左端點為1 i這個範圍內對右端點i的貢獻,然後累加答案,然後超時了。之後想到,每次變化範圍只會變乙個數字,只會改變乙個數字的貢獻,所以開了乙個sum記錄所有數字的貢獻就...

2019牛客多校第八場

求所有極大全一矩陣的個數。created by keane on 2019 8 10.include using namespace std typedef long long ll const int n 3050 int a n n int n,m char s n 每個1向下延伸 int dw...

2019 牛客 多校賽 第八場

乙個區間的貢獻為這個區間的不同數字的個數,求所有子區間的貢獻和 反向思考,計算乙個數字在子區間 現的次數,當區間的左端點在這個數字上一次出現位置和當前位置之間,並且右端點在當前位置之後,這個數字都產生了貢獻,所以當前位置的數字的貢獻就是左端點數量 右端點數量,然後遍歷一遍。include defin...