靈夢和魔理沙即將展開彈幕大戰,為了提高實力,靈夢打算突擊學習一些符卡。每張符卡有三個屬性:火力、時長和等級。求勝心切的靈夢希望在一次戰鬥中,使用的符卡的火力值總和不小於 \(k\) 。然而,由於一些特殊的原因,如果兩張符卡的時長之和是乙個質數,那麼它們便不能在一次戰鬥中同時使用。此外,如果符卡的等級超過了靈夢的等級,她也無法學習這張符卡。由於提公升等級是一件很困難的事情,靈夢想要知道,為了達到目標,自己所需的最低等級是多少。
第一行兩個整數 \(n, k\) ,表示可供學習的符卡數量,以及靈夢希望達到的火力總和。
接下來 \(n\) 行,每行三個整數 \(p_i, t_i, l_i\) 分別表示一張符卡的火力、時長和等級。
一行乙個整數,表示靈夢所需的最低等級。如果找不到滿足要求的一組符卡,輸出 \(−1\) 。
5 8
5 5 1
1 5 4
4 6 3
1 12 4
3 12 1
4
最小割。
首先二分一下等級,接下來所有不滿足等級條件的卡全部忽略。
然後建圖。若 \(t[x]\) 為奇數,則 \(s\) 向 \(x\) 連一條流量 \(p[x]\) 的邊。若 \(t[x]\) 為偶數,則 \(x\) 向 \(t\) 連一條流量 \(p[x]\) 的邊。若 \(t[x]\) 為奇數且 \(t[y]\) 為偶數且 \(t[x] + t[y]\) 為質數,則 \(x\) 往 \(y\) 連一條流量 \(inf\) 的邊。可以腦補出來, \(t\) 為奇數的點全在「左邊」, \(t\) 為偶數的點全在右邊,且僅在左右之間有邊(連著 \(s\) 和 \(t\) 的除外)。
為什麼這樣建圖呢?首先中間的 \(inf\) 邊是假設不合法的卡都能取,然後跑最小割來捨棄。而且我們知道奇數+奇數、偶數+偶數都等於偶數,不可能是質數,所以左邊內部和右邊內部不可能有邊,所以這樣建圖。
但是!\(2\) 是唯一的偶質數,所以我們需要特判掉 \(1\) 。因為選出的卡中至多只有一張 \(t=1\) 的卡,所以在符合等級限制中的卡中選乙個 \(t=1\) 且 \(p\) 最大的卡就好了,其它的全部忽略。
最後...
幻想鄉三連C 狂飆突進的幻想鄉
題解 不難發現,對於每一條從 s 到 t 的路徑,設其 x y 的和為 s x s y 其對答案的貢獻是 a cdot s x 1 a cdot s y 這是乙個關於 a 的一次函式。而所有的路徑就對應著許多 a in 0,1 直線,而不同 a 所對應的最短路長度恰好構成了這些直線的上凸殼,而求最短...
幻想鄉三連A 五顏六色的幻想鄉
非常直接地構造 由於答案與生成樹計數有關,所以一定要使用矩陣樹定理,但這樣就不能限制每種顏色的便使用的數量 我們構造 n 2 個關於 ans 的方程,列舉將紅色的邊拆成 x 條,將藍色的邊拆成 y 條,跑一遍矩陣樹定理,就得到 g sum limits sum limits ans cdot x i...
hiho 1145 幻想鄉的日常
幻想鄉一共有n處居所,編號從1到n。這些居所被n 1條邊連起來,形成了乙個樹形的結構。每處居所都居住著乙個小精靈。每天小精靈們都會選出乙個區間 l,r 居所編號在這個區間內的小精靈一起來完成一項任務。特別的,居所相鄰的 有邊相連的 兩個小精靈會自發的組成一隊,並且如果a和b相鄰b和c相鄰,那麼a和c...