practice link
solvedab
cdef
ghij
k4/11øo
ooa. all-one matrices
點這裡》_<
b. beauty values
點這裡》_<
c. cdma(構造)
題意:構造由-1,1組成的m*m矩陣,使得任意兩個不同(這裡指的是數字有不同的地方)的行對應位置乘積和為0
思路:首先 m=2 時的答案是已經知道了的,考慮用 m 構造出 2m 的解:
不妨設方陣 a 為 m 的解,那麼下面這個方陣則是 2m 的乙個解:
[a a]
[a -a]
通過這種方法去構造我們就能得到正解
code(比賽的時候直接打表交了)
#include #includeview codeusing
namespace
std;
const
int maxn = 2000
;int
h[maxn][maxn];
intmain()
}cnt = cnt<<1
; }
for (int i = 1; i <= g; i++)
if(i!=g)
printf("\n
");}
}
g. gemstones
題意:
思路:棧的應用
從左到右依次把字元加入棧中,如果某個時刻棧頂的三個字元相同,則將其彈出棧頂並把答案加 1,最後輸 出一下答案即可
開始的時候我是想把重複字串的個數儲存起來,當個數為3的時候就彈棧,但沒考慮到三個相同元素必須相連才能彈棧,最後想說的是,很多時候用陣列去模擬棧加個top標識反而比呼叫stack要好用些,寫起來也方便
code
#include #includeview code#include
using
namespace
std;
const
int maxn = 1e5+5
;int
ans, flag;
inta[maxn];
char
str[maxn], s[maxn];
intmain()
printf("%d
", ans);
}
其實可以寫的更簡潔一點,都不需要開兩個陣列,把str每個元素掃瞄完後對應的那個位置就沒有用,因此可以反覆利用,最後判斷下條件就可以了,只不過那樣寫會稍微難懂那麼一點點
2019牛客暑期多校訓練營(第八場
現場ac a,b,c,g rank 185題號a bcde fghi jkl狀態 a 2維單調棧 從上到下 每行建乙個單調棧,維護的是1向上擴充套件最遠的高度。得到每個高度所向左向右擴充套件的最遠距離,即每個點拓展 先向上到頂 的最大全1子矩陣,求出這個個數ans,再減去同樣高度的,和可向下拓展的 ...
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 為高度的矩形的左右邊界 懸線法也可以 然後,統...