2019牛客暑期多校訓練營(第八場

2021-09-26 04:49:11 字數 1464 閱讀 7837

現場ac  :a,b,c,g

rank:185題號a

bcde

fghi

jkl狀態

οοο.

..ο.

....

a:2維單調棧

從上到下 每行建乙個單調棧,維護的是1向上擴充套件最遠的高度。

得到每個高度所向左向右擴充套件的最遠距離,即每個點拓展(先向上到頂)的最大全1子矩陣,。

求出這個個數ans,

再減去同樣高度的,和可向下拓展的   res

就是結果

#include#includeusing namespace std;

typedef long long ll;

const int m = 3e3+7;

char mp[m][m];

ll sum[m][m];

ll up[m][m];

ll s[m];

int main()

int ans=0,res=0;

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

p--;

}s[++p]=j;

} }printf("%d\n",ans-res);

return 0;}/*

5 500100

10101

11111

11111

11111

*/

b:期望線性性

算每個點的貢獻是多少。

首先第乙個點肯定對(1-n)所有區間都有貢獻

然後後面的點肯定是對(l+1,n)這個區間有貢獻,l是上乙個與它相同的數的位置。

因為之前的區間的貢獻由之前的點算過了,這裡再算就重複了

算l-r  第k個點的區間個數 的方法:  (r-l+1-k+1)*k;

#include#includeusing namespace std;

typedef long long ll;

const int m = 5e5+7;

ll a[m];

ll mp[m];

int main()

printf("%lld\n",ans);

return 0;

}

c:構造矩形

弄,出4*4再分形演算法一下  就對了。。

不太懂a

a aa -a

但我們當時過的是直接從前往後構造的。。

#includeusing namespace std;

#define ll long long

const int maxn=1050;

int a[11][maxn][maxn];

int k[11];

int main()

else

}} printf("%d\n",cnt);

return 0;

}

2019牛客暑期多校訓練營(第八場)

practice link solvedab cdef ghij k4 11 o ooa.all one matrices 點這裡 b.beauty values 點這裡 c.cdma 構造 題意 構造由 1,1組成的m m矩陣,使得任意兩個不同 這裡指的是數字有不同的地方 的行對應位置乘積和為0 ...

2019牛客暑期多校訓練營(第八場

solved by rdc 84min 2 做法 題意構造矩陣,使得任意兩行點積為 0 做法樣例具有很強的暗示性,我們可以用 k 階矩陣,構造 k 1 階矩陣。題意三維空間,插入點,查詢與某個點曼哈頓距離最小點。比賽中做法 做法2.0 做法 upsolved 問題的轉化 注意到標號為 x 的點,在每...

2019牛客暑期多校訓練營(第八場)補題

a題 題意 求所有全為1的矩陣且每個子矩陣都不會被其他矩陣完全包含的子矩陣的個數。分析 最近遇到的全1子矩陣的題有點多額.可是還是不怎麼會做。但基本都用了單調棧.設h i j 表示第i行以j點為底點的最高連續的1的個數,可以用單調棧求使j點以h i j 為高度的矩形的左右邊界 懸線法也可以 然後,統...