Problem
給予兩個公車行駛路線,每台公車的速度都相同,分別從起始位置出發,請問第一個碰撞位置為何?
Sample Input
|
|
Sample Output
|
|
Solution
抓路線長度的最小公倍數,一定能在這段時間內找到碰撞位置,否則不存在碰撞地點。
|
|
給予兩個公車行駛路線,每台公車的速度都相同,分別從起始位置出發,請問第一個碰撞位置為何?
|
|
|
|
抓路線長度的最小公倍數,一定能在這段時間內找到碰撞位置,否則不存在碰撞地點。
|
|
請問在網格中,若頂點設置在網格邊上,構成平行四邊形的面積介於 $[l, r]$,最多的方法數和面積分別為多少。
|
|
|
|
由於是平行四邊形,假設矩形被劃分的兩個對稱三角形的底高 $a, b, c, d$,且 $a, b, c, d > 0$。
得到平行四邊形面積為
$$\begin{align*} \text{Area} &= (a + c)(b + d) - 2 \times 0.5 \times a b - 2 \times 0.5 \times c d \\ 			&= ad + bc \end{align*}$$最後找到構成方法數為 ways of area = #(a, b, c, d) sat. ad + bc = Area。分別統計兩數相乘為 $x$ 的方法數 $W_x$,可以構成多項式 $W_1 x + W_2 x^2 + \cdots W_n x^n$,多項式相乘後,得到的係數就是所有的方法數。套用 FFT 的卷積計算即可。
|
|
|
|
給予飛機在平流層飛行資訊,在每一種高度下維持飛行的耗油量成線性關係,以及每一段飛行旅程上的平流層的風速為何,藉由線性內插得到在某高度下的飛行速度,忽略在轉換高度時的耗油量,問從起點到終點的最少耗油量為何 (無條件進位)。
|
|
|
|
單源最短路徑,只是每一點要使用 $20$ 個狀態維護抵達那一層時在哪一種高度下飛行。必須窮舉轉移到下一層的所有高度,因為有可能飛行慢而增加耗油時間。
|
|
每一字串 $S$,可視為一串操作,依序讀入一個字元 $C$,可以選擇把字元 $C$ 插入字串首或尾,請問字典順序最大為何?
類似 ZJ. 一串數字 之類的貪心方式,優先考慮最大字元在哪一個位置,抓取之後拆分兩串分開貪心合併,每一次由後往前找到第一個最大字典順序字元 $T$,$T$ 移到最前方,此時會將字串分成前半 $A$ 和後半 $B$,然而後半 $B$ 要排在 $T$ 字元之後,勢必只能按照順序丟入隊尾。因此 $\textit{MAXEXPR}(F) = T + \textit{MAXEXPR}(A) + B$。
給定一個 $N \times N$ 方格,每一行或列都是嚴格遞增,現在給定數個行、數個列的排列情況,請問缺漏的那一行或列的序列為何?
明顯地每一個數字都恰好出現偶數次,按照大小順序印出奇數次數字即可。
給同學都有一位摯友,給定 $N$ 個人的好友資訊,現在要求盡可能多的人圍成一圈,並且每一個人其中一側是他們自己的摯友,請問圈最多幾個人。
明顯地,若不看方向性,每一個連通圖至多一個環。若一個連通圖式一個環,保證無法與其他方案合併在一起,因此用 $\mathcal{O}(N^2)$ 優先排除是環的解,在其中找最大圈即可。
接著考慮有觸手的水母圖,當水母大小恰好由兩個點構成時才會有解,因為三個點以上不符合題目要求的環。最後找到經過兩端點的最長觸手,這些點可以自我滿足,把所有最長觸手合併在一起可以構成一組特殊解。兩種方案取最大。
|
|
|
|
|
|
一年一度的 GCJ 資格賽又開打了,這次的題目類型挺開放的,也就是有很多不同的解法可以通過。也許是因為都用了奇怪的方法解決。全寫完 Rank 400 名以內。
打完比賽完全沒心情寫水泥數學的作業證明。不!其實是不會寫。
睡覺前數羊,從一個基數 $N$ 開始,數 $N$, $2N$, $3N$, …, $?N$,直到 10 個位數都出現過,請問最後一個數的數 $?N$ 為何。
除了 $N = 0$ 的特殊情況外,直接模擬即可。最重要的是它不只有看個位數字,把每一位全看的狀況下,要湊滿 0-9 所有 digits 都出現過就不是難事。
現在 $N$ 個煎餅位於堆上,並且有分成兩個正反面狀態,每一次可以把煎餅從堆頂開始連續得拿出,並反轉序列放回堆中,同時把煎餅正反反轉,請問從一個開始序列轉移到全部皆為正面的操作次數最少為何?
一開始的策略是亂貪心一番,甚至題目看錯都能亂過小測資。必要任務一定是先把堆底那片煎餅翻成正的,這時一定堆頂為反,進行一次反轉讓堆底便成正的,為了讓堆頂為反,貪心策略盡可能讓堆頂一連續全部變成反。不斷地模擬此步驟即可。
產生一個數字 $X$,$X$ 長度恰為 $N$,必須首尾皆為 1,只能由 0/1 構成。請產生數字 $X$,滿足在二進制、三進制 … 到十進制下皆為合成數。
這題莫名其妙指定 $N = 16, \; 32$,特殊的 $N$ 使得找到 $J$ 個 $X$ 並不難,更由於 $J$ 不大,各種解法都可以完成。從以往得概念,假設有一個數字 $A = 123123$,那麼保證不進位的情況下,找得到一組 $A = 123 \times 1001$,因此指定 $A = 1????1$,湊滿 $X = AA \cdots A$,不管在哪個進制下,勢必被 $A$ 整除。
詭異的數學碎形考古,給一個長度為 $K$ 的起始字串 $X$,$X$ 只由 $G$ 和 $L$ 構成。碎形迭代 $C$ 次,產生長度為 $K^C$ 的字串。現在雇用 $S$ 個學生,每個學生只能檢查一個位子,只要確定那一個位子有 $G$,那麼原始字串保證有 $G$。在限定學生數量下,請問要怎麼安排學生們的檢查工作。
由於長度為 $K$ 的起始字串有 $2^K$ 種,實際上只要剃除 $LL \cdots L$ 的字串。為了要在最少檢查位置下處理,必然要一個位置能否有 $G$,就能檢查原始字串的數個位置是否有 $G$。
窮舉只有 1 個 $G$ 個字串 $GLL...L$、$LGL...L$、… 等 $K$ 個,追蹤迭代 $C$ 次後,$K^C$ 長度下,每一個字串 $G$ 的出現位置。當 $C = 2$,可以讓位置 1, 2 的 $G$ 可以同時被檢查,同理位置 3, 4 的 $G$ 可以同時被檢查。當 $C = 3$ 時,位置 1, 2, 3 的 $G$ 可以同時被檢查。根據觀察,至少要 $\textit{ceil}(K/C)$ 個學生就能滿足需求。
第 $i$ 個學生要檢查的位置為 $1 + \sum_{0 \le j < C} (C(i-1)+(C-1-j))K^j$。
|
|
|
|
|
|
|
|
兩個人均分一個簡單凸多邊形的蛋糕,蛋糕高度為 2。第一個人 $A$ 選擇一個頂點 $u$,第二個人 $B$ 選擇另一個頂點 $v$,兩點連線後,將蛋糕分成兩塊,最大那一塊會被 $A$ 拿走,小的那一塊會被 $B$ 拿走,請問在各自最佳策略下,盡可能拿到最大塊面積的結果為何?
|
|
|
|
首先,在最佳策略下,當 $u$ 已經固定,接下來選擇頂點 $v$,$B$ 的決定必然要使最小塊最大化,而對於 $A$ 而言,選擇 $B$ 已經使最小塊最大化的所有方法中,使得最大塊最大化。
明顯地兩塊面積近似一半,由於是凸多邊形,可以根據掃描線的方式推動頂點 $v$,使得 $\overline{uv}$ 切分的面積近似一半,對於簡單多邊形面積計算由行列式計算,但行列式計算時的變數呈現環狀,先把首尾變數提出,維護中行列式中間一大段的計算,最後補足首尾變數來計算面積。
|
|
ACM 辦公室在銀河的各處,辦公室編號 $1$ 到 $N$,辦公室 $i$ 和辦公室 $j$ 之間的移動費用隨著時間 $t$ 成線性關係,假設移動不消耗時間,請決定移動時間 $t$,從辦公室 $1$ 移動到辦公室 $N$ 請問最少花費為何。
給定時間必須在一天以內完成,意即 $0 \le t \le 24 \times 60$。
|
|
|
|
明顯地,每一條邊花費都呈現線性關係,假設一張圖只有一條邊,依序加入新的邊進去,時間 $t$ 對應的路徑花費呈現凹性,因此三分搜尋時間 $t$,做一次 Dijkstra $\mathcal{O}(V \log E)$。由於需要精準度到小數五位,估計要到至少三分 50 次,總時間複雜度 $\mathcal{O}(100 V \log E)$。
|
|
有 $N$ 道關卡,每一道關卡需要消耗能量 $E_i$ 才能通過,每一個關卡有能量商店,只能進行一次交易,一旦交易成功,不管先前的剩餘能量為何,直接消耗 $C_j$ 元補能量到 $S_j$,請問至少花費多少錢才能闖完所有關卡。
|
|
|
|
明顯地,維護一個最小堆,每一個元素紀錄 <在哪一關買商店, 累計多少花費, 購買時有多少能量>
,隨著掃描線移動,依序出隊那些無法抵達的元素,並且隊首花費就是到這一關的最少花費 $C$,再依序嘗試在新的商店購買能量,累計花費後入隊。
時間複雜度 $\mathcal{O}(N \log M)$
|
|
馬戲團河馬過門,單一隻河馬過門需要時間 $T_a$,兩隻河馬疊在一起且滿足總高度小於 $H$,需要花費 $T_b$ 的時間。
不管任何順序過門,請問最少時間為何?
|
|
|
|
明顯地,最矮的那隻盡量跟最高的那隻配在一起過門,反之考慮分開過門,看哪一種好就選擇哪一種。
|
|
有 $N$ 個罐子,其中有一個罐子放置彈珠時,每一個彈珠重量會是其他罐子的 1.1 倍,也就是說其中有一個魔法罐子,在魔法罐子中的彈珠都會特別重。現在限制每一個罐子放置彈珠的數量,請問有多少放置彈珠方案,可以找到魔法罐子。
|
|
|
|
從題目描述中理解到,要找到魔法罐子最簡單的策略就是每一個罐子都擁有不同數量的彈珠,由於每一個罐子限制彈珠數量不一致,做起來就稍微複雜。
假設先依照可仿製彈珠數量多寡排序,將放置少量的彈珠優先放置在前面,依序討論放入新的罐子又與之前放置不同個數的彈珠的方法數。
定義 dp[i][j]
為前 $i$ 個罐子,其中有一罐放置最多的彈珠 $j$ 個。由於已經由小到大排序好,放入新的罐子,分成兩種情況考慮,其中一種是比 $i$ 個罐子放置更多的彈珠,不然就是放置較少的彈珠數量,數學組合一下即可。時間複雜度 $\mathcal{O}(N M^2)$
|
|