牛客多校第八場

2022-06-03 06:45:12 字數 955 閱讀 5526

簽到題,**可真短。

題意:給n個數,對於每個連續子串行求區間內不同數字的個數的和。

做法:一開始列舉每個區間的右端點i,判斷每個數字在區間左端點為1~i這個範圍內對右端點i的貢獻,然後累加答案,然後超時了。

之後想到,每次變化範圍只會變乙個數字,只會改變乙個數字的貢獻,所以開了乙個sum記錄所有數字的貢獻就好了。

#includeusing

namespace

std;

const

int maxn=1e5+10

;#define ll long long

intmaxx[maxn];

intmain()

printf(

"%lld

",ans);

}

view code

題意:給個m(m為2的冪次方),構造m*m的矩陣,使每個矩陣的任意不同的兩行滿足:一 一對應列的元素相乘在相加,和為0;

思路:對於乙個為2*2的矩陣,構成4*4的矩陣,只需將2*2矩陣放在第一象限,第二和第三象限,第四象限反轉值,這樣可以保證,第一第二象限值對應相等,第三和第四互不相等,同時滿足,任意倆行相同個數等於不相同的個數。

#includeusing

namespace

std;

int a[5000][5000

];int

main()

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

}

view code

簽到題

#includeusing

namespace

std;

const

int maxn=1e5+10

;char

s[maxn];

intmain()}}

printf("%d

",ans);

}

view code

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...

2019牛客多校第八場題解 A

a 給你乙個n m的01矩陣,求出所有最大全1矩陣的數量,保證任意兩個矩陣不相互包含。考慮單調棧求最大矩形面積的做法。對於矩陣 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 我們先預處理h i j 為以該行為底的最大高度。那麼我們只要知道這個矩形最左邊的能夠到達的位...