天天看點

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

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

A. String

做法 比賽時預處理哪些子串是最小表示,然後 BFS 最短路。複雜度不是很合理,本地測試了下 300 組長度為 200 的 010101.... 串,嚴重 TLE,題目中資料範圍的描述可能存在不嚴謹之處。

B. Irreducible Polynomial

題意 判斷一個多項式能否分解成若幹個實系多項式。

做法 實系數多項式因式分解定理。多項式的非是根一定是共轭負數。

  • 比賽時想了半天,發現這個東西不會做啊。
  • RDC: 我們先求出所有根,再把這些根劃分成很多個集合。
  • F0_0H: 大膽猜結論,雖然猜的沒一個對的。

C. Governing sand

做法 按高度分類,從小到大枚舉最大高度,比目前枚舉的高度 h 要高的,一定删,比它小的,如果删前 ? 小的。

E.Find the median

solved by F0_0H 194min -1

題意 每次插入\([l[i], r[i]]\),詢問中位數

做法

  • 很奇怪,資料為什麼要這麼搞,很容易讓人想歪或者認為這是個強制線上題
  • 離散化後權值線段樹上二分即可,比賽時因為沒考慮好邊界條件,智障了很久...

F.Energy stones

upsolved

題意 吃能量

做法 比賽中對着一個假做法自閉了很久,一直堅信其優美性和正确性

正解:

  • 查詢離線,依次計算每個石頭對答案的貢獻
  • \(set\)維護包含目前石頭的區間的\(ti\)
  • 每次插入删除至多修改三個區間差,用樹狀數組維護即可
  • 這種套路上次是在維護樹上聯通塊大小上

I. Chessboard

很精彩的一道題!

做法

  • 設 \(A_i\) 為第 \(i\) 行全為 1,其它位置全為 0 的方陣。
  • 設 \(B_j\) 為第 \(j\) 列全為 1,其它位置全為 0 的方陣。
  • 一個 \(k\) 行 \(k\) 列,任取 \(k\) 個元素,每個元素不同行不同列的方陣,一定可以由 \(\{A_1,A_2,....,B_1,B_2.....\}\) 的生成的線性空間中。也就是 \(\sum_{i=1}^{k}a_iA_i+\sum_{j=1}^{k}b_jB_k\)
  • 于是有 \(\sum_{i=1}^{k}a_i+\sum_{j=1}^{k}b_j \leq n\)
  • 但很可惜,如上線性空間的基中隻有 \(2k-1\) 個向量,是以表出方式不唯一。
  • 對于不同的表出方式,令 \(d=min_{i=1}^{k} a_i\) 做變換 \(a_i:=a_i-d\), \(b_i:=b_i+d\),于是我們識破了本質相同的矩陣的不同表出方式。
  • 對于一個确定的 \(k\),答案為 \(\sum_{i=1}^{k}a_i+\sum_{j=1}^{k}b_j \leq n(存在 a_i=0)\)
  • 枚舉 \(k\),用 \(\sum_{i=1}^{k}a_i + \sum_{j=1}^{k}b_j\leq n, (a_i,b_j\geq0)\) 的解數,減去 \(\sum_{i=1}^{k}a_i + \sum_{j=1}^{k}b_j\leq n, (b_j\geq0, a_i\geq1)\) 的解數。即可,複雜度 \(O(n)\)

複盤

  • 比賽時第一眼的想法:任選 \(k\) 個元素,之和相等,等價于任意子矩陣對角之和相等。建立線性方程組,第一行第一列的是主元,其它是自由元。
  • 然後就沒有然後了。
  • 把矩陣中的元素當成變量,不失為一種合理的想法,但隻有這個想法,就是視野狹窄了。
  • 題解中的做法,把行和列當成了變量。
  • 從行和列的角度考慮一個矩陣,這是常見的思路。

轉載于:https://www.cnblogs.com/FST-stay-night/p/11322585.html