AGC047簡要題解


AGC047A Integer Product

給定 \(n\) 個浮點數 \(a_i\) ,問有多少組數對 \((i,\ j)\) 滿足 \(a_i\cdot a_j\) 是整數

  • \(n\leq2\times10^5\)
  • \(a_i\) 小數點后只有不超過 \(9\) 位數

\(a_i\) 的小數點前部分可以丟掉,將小數點后部分看成 \(\frac k{2^a\times5^b}\) 的形式,其中 \(k\) 是整數, \(a,\ b\) 要盡量小

然后即求滿足 \(a_i+a_j\ge0,\ b_i+b_j\ge0\) 的數對個數,值域很小暴力即可


AGC047B First Second

給定 \(n\) 個串 \(S_i\) ,定義對串 \(T\) 的一次變換為刪掉 \(T\) 的第一個或第二個字符,問有多少個二元組 \((i,\ j)\) 滿足能夠通過對 \(S_i\) 進行若干次變換使得其等於 \(S_j\)

  • \(n\leq2\times10^5\)
  • \(\displaystyle\sum|S_i|\leq10^6\)

\(S_i\) 能夠進行若干次變換使得其等於 \(S_j\) ,當且僅當 \(S_j\)\(S_i\) 的后綴,或 \(S_j\) 去掉第一個字符后是 \(S_i\) 的后綴、且 \(S_j\) 的第一個字符在 \(S_i\) 的前 \(|S_i|-|S_j|+1\) 個字符中出現過

把所有串倒着插入 trie 中搞一搞即可


AGC047C Product Modulo

我沒有多項式基礎

留坑待填


AGC047D Twin Binary Trees

有兩棵點數同為 \(n\) 的滿二叉樹,第一棵樹的第 \(i\) 個葉節點向第二棵樹的第 \(A_i\) 個節點連了一條特殊邊

在所有邊構成的圖上,一個環是合法的,當且僅當它是簡單環,並且恰好經過兩條特殊邊

定義一個合法環的權值為它所經過的所有點的編號的乘積

求所有簡單環的權值之和 \(\bmod10^9+7\)

\(n<2^{18}\)

做法一:

枚舉特殊邊 \((u,\ v)\) ,設環經過的另一個特殊邊為 \((u_0,\ v_0)\) ,其中 \(u,\ u_0\) 在第一棵樹上, \(v,\ v_0\) 在另一棵

接着枚舉 \((u,\ u_0)\)\((v,\ v_0)\)它們在各自樹中的 lca

大概套個二維數點就得到了一個時間 \(O(n\log^3 n)\)優秀做法

大概搞一個線段樹合並就可以優化到 \(O(n\log^2 n)\)

做法二:

枚舉 \((u,\ u_0)\) 的 lca \(w\)

枚舉 \(w\) 左子樹中的所有葉子節點 \(i\) ,其中 \(i\) 在另一棵樹上的對應點為 \(j\) ,將 \(j\) 的所有祖先 \(p\) 累加 \(i\)\(p\) 的最短路徑上的節點的乘積

枚舉 \(w\) 右子樹中的所有葉子節點 \(i\) ,其中 \(i\) 在另一棵樹上的對應點為 \(j\) ,枚舉 \(j\) 的所有祖先 \(p\) ,用 \(i\)\(p\) 的最短路徑與 \(p\) 的兄弟的信息統計對答案造成的貢獻

大概就做到了時間 \(O(n\log^2n)\) ,空間線性


AGC047E Product Simulation

有一個序列 \(a_0,\ a_1,\ \cdots,\ a_n\) ,初始時 \(a_0=A,\ a_1=B;\ a_2=a_3=\cdots=a_n=0\)

你可以執行至多 \(q\) 次操作,每次操作有兩種:

  1. \(+\ i\ j\ k\) :令 \(a_k=a_i+a_j\)
  2. \(<\ i\ j\ k\) :令 \(a_k=[a_i<a_j]\)

你需要構造一種操作序列使得,無論 \(A,\ B\) 是任何非負整數,執行完所有操作后 \(a_2=A\cdot B\)

  • \(n,\ q=2\times10^5\)
  • \(A,\ B\in[0,\ 10^9]\)

假設 \(A,\ B\) 中至少有一個非零

則通過 \(A<A+A+B+B\) 就能構造出元素 \(1\)

通過 \(1\) 自加就能得到所有 \(2\) 的冪次

考慮將 \(A,\ B\) 表示為二進制數

\(bit\) 降序考慮,考慮等式 \(f_{bit}=[cur+2^{bit}<A+1]\) ,若 \(f_i=1\) 就將 \(cur\) 加上 \(2^{bit}\) ,即可求出 \(A\) 的所有二進制位;同理可求得 \(B\) 二進制下每一位 \(g_{bit}\)

現在即求 \(\displaystyle\sum_{i,\ j}f_ig_j2^{i+j}\)

枚舉 \(i,\ j\)\(2^{i+j}\) 部分已經預處理了,現在只用處理兩個 \(01\) 變量 \(x,\ y\) 的與操作,實際上就是 \(1<x+y\)

總操作數 \(O(\log^2A)\)

可以發現 \(A=B=0\) 時不用特判


AGC047F Rooks

留坑待填


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM