現場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 為高度的矩形的左右邊界 懸線法也可以 然後,統...