題意:
構造出乙個由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...