2024 Aug

ydzr00000發表於2024-08-10

ABC366

[Problem A] Election 2

\(N\) 個人投票選舉,兩位候選人 Takahashi 與 Aoki 分別獲得 \(T\) 票與 \(A\) 票,請問此時能否確定誰將贏得選舉?

\(0\leq T,A,T+A\leq N\leq 99\),且 \(N\) 為奇數。


\(M = \dfrac{N+1}{2}\),則判斷 \(T,A\) 是否有一個大於等於 \(M\) 即可。

[Problem B] Vertical Writing

給定 \(N\) 個字串 \(S_i\),所有字串用 * 補齊到最長長度,你需要將現在形成的字元矩陣順時針旋轉 \(90\degree\),並刪掉旋轉後字元矩陣每一行末尾連續的 *,請問旋轉結果?

\(N, |S_i|\leq 100\)


直接求出最長長度,然後下標從 \(N\)\(1\) 掃字串判斷這一位填什麼就可以了。

最後用 popback 去一下 *

[Problem C] Balls and Bag Query

給定一個袋子,維護 \(Q\) 個操作,分為如下三種:

  • 1 x,表示往袋子中加入一個編號為 \(x\) 的球。
  • 2 x,表示從袋子中丟掉一個編號為 \(x\) 的球,保證有這麼一個球。
  • 3,表示詢問袋中的球的編號種類數量。

\(Q\leq 2\times 10^5, 1\leq x\leq 10^6\)


經典題,set 維護答案,直接開個變數也可以,map 維護某個球的數量,直接開個桶也可以,畢竟值域不大。

時間複雜度為 \(\mathcal{O}(Q)\)\(\mathcal{O}(Q\log_2 Q)\)


[Problem D] Cuboid Sum Query

給定一個三維陣列 \(A_{i,j,k}(1\leq i,j,k\leq N)\),給定 \(Q\) 個詢問,每次詢問給出 \((lx,rx,ly,ry,lz,rz)\),求所有滿足 \(lx\leq x\leq rx, ly\leq y\leq ry, lz\leq z\leq rz\)\(A_{x,y,z}\) 的和。

\(N\leq 100, Q\leq 2\times 10^5, A_{i,j,k}\leq 999\)


經典三維字首和 + 三維差分。

Show 一下我的程式碼:

sum[i][j][k]=sum[i-1][j][k]+sum[i][j-1][k]+sum[i][j][k-1]-sum[i-1][j-1][k]-sum[i-1][j][k-1]-sum[i][j-1][k-1]+sum[i-1][j-1][k-1]+a[i][j][k];
int ans=sum[rx][ry][rz]-sum[lx-1][ry][rz]-sum[rx][ly-1][rz]-sum[rx][ry][lz-1]+sum[lx-1][ly-1][rz]+sum[lx-1][ry][lz-1]+sum[rx][ly-1][lz-1]-sum[lx-1][ly-1][lz-1];

Haha,一發過。

[Problem E] Manhattan Multifocal Ellipse

給定平面上 \(n\) 個點 \((x_i,y_i)\),求有多少個點 \((x,y)\) 滿足該點距給定 \(n\) 個點的曼哈頓距離和不超過 \(D\)

\(n\leq 2\times 10^5, -10^6\leq x_i,y_i\leq 10^6\)


直接列舉當 \(x=i,y=i\) 時在對應座標軸上距 \(n\) 個點的距離,然後開個桶存一下,最後答案就是 \(\sum_{0\leq i\leq D} bx_i \sum_{0\leq j\leq D-i} by_j\),字首和最佳化即可。

時間複雜度為 \(\mathcal{O}(n\log_2 n + V)\)

[Problem F] Maximum Composition

給定 \(n\) 個一次函式 \(f_i(x) = a_ix + b_i\),求一個長度為 \(k\) 的正整數序列 \(p\),且 \(p\) 中元素兩兩不同,使得 \(f_{p_1}(f_{p_2}(\cdots f_{p_k}(1)\cdots))\) 最大。

\(k\leq n\leq 2\times 10^5, k\leq 10, 1\leq a_i,b_i\leq 50\)


首先不可能按照 \(1\sim n\) 的順序轉移,這樣不能保證兩兩不同。

能否找到一種順序呢?答案是可以,我們用貪心可以證明:

\[a_i(a_j + b_j) + b_i > a_j(a_i + b_i) + b_j \]

相當於是:

\[a_ib_j + b_i > a_jb_i + b_j \]

也即:

\[(a_i - 1)b_j > (a_j-1)b_i \]

也就是說你先採用的變換滿足 \((a_j-1)b_i\) 儘量小,排序後 DP 即可。

時間複雜度為 \(\mathcal{O}(n\log_2 n + nk)\)

[Problem G] XOR Neighbors

給定一張無重邊無自環的 \(n\) 個點 \(m\) 條邊無向圖,求是否存在一組點權 \(x_i\),滿足對每一個點都有:該點的所有鄰居(不含自己)的點權的異或為 \(0\)

\(n\leq 60\),你的構造需要滿足 \(1\leq x_i < 2^{60}\)


如果不要求 \(x_i > 0\) 則可以用 \(0/1\) 解來構造合法答案,問題是不能取 \(0\)

但是我們發現,最多 \(60\) 個元,但是我們可以有 \(60\) 組方程組,首先按位考慮,我們可以對每一位都欽定某一個元,該元在該位上的值強制為 \(1\),然後解方程組。

處理很簡單,把與這個點 \(u\) 相鄰的點 \(v\) 的方程組中,這個點 \(u\) 的係數改為 \(0\),然後要求答案為 \(1\)

這個可以用高斯消元求出,如果某一次求出方程組無解則必定無解,否則因為每一個元都被欽定某個位為 \(1\),此時顯然滿足點許可權制。

時間複雜度為 \(n\) 輪高斯消元,時間複雜度為 \(\mathcal{O}(n^3 + \frac{n^4}{\omega})\),前面的搞出方程組,後面是求解,然後你還會發現 \(\omega > n\)

相關文章