我要點名一款十字線上 PVP 遊戲 - 1951

PrimalAspid發表於2024-04-08

\(1900-12=1888\)。怎麼 rating 還是這麼好笑。

感覺每回打 cf 都要破防是怎麼回事?被詐騙不還是因為菜?交 \(12\) 發不知道自己是怎麼想的。然後 E 也不難,但是太晚了打不動了。

下次交程式碼之前能不能拜託先把 hack 測一下?佔了將近一半的 RE 哪個不是因為沒開 long long

A

01 字串,初始全是 0,每次把兩個不相鄰的 0 變成 1,問能不能變成指定的 \(s\)

不行當且僅當 1 數量為奇或只有兩個 1 且它們相鄰。

B

\(n\) 頭奶牛打架,每頭都有自己的戰力 \(a_i\)(各不相同),打架勝出者一定是戰力更高者。打架順序是先 1 跟 2 打,然後贏家跟 3 打,然後贏家跟 4 打,直到 \(n\)。然後 Bessie 是第 \(k\) 頭奶牛,她能跟一隻奶牛交換位置,並想最大化自己打贏的場數。

要麼跟 1 換,要麼跟第一個大於她的換。

C

買東西。第 \(i\) 天價格 \(a_i\),每天最多買 \(m\) 個,每買一個東西,之後的天裡價格都加一(當天不變),問買 \(k\) 個最少花費。

這個題主要看思考方向,方向對了就秒殺。

注意到在任意購買方案基礎上在某天新增一個,總花費變化量是(這天原本價格)+(之前的天買的總數)+(之後的天買的總數)。於是你驚訝地發現排列順序不影響答案,並且直接貪心就是對的。

D

賣東西。你可以建立至多 \(\red{60}\) 個攤位賣這個東西並對每個攤位設定一個價格,愛麗絲身上有 \(n\) 塊錢。她會依次光臨這些攤位:在一個攤位購買這個東西直到買不起再前往下一個買買買(什麼敗家波特)。你想讓她恰好買 \(k\) 個東西,構造一個設價格方法。(\(n,k\leq\red{10^{18}}\)

不會出題可以不出。看到標紅的兩個數字了嗎?哦我的上帝啊,\(2^{60}\approx10^{18}\) 嘛對不對?於是我像一隻愚蠢的土撥鼠一樣想了好久二進位制並被 \(n=8,k=3\) 整破防了。然後我又覺得這個是保證對數級複雜度上界的,我真像那鄰居家的蠢驢約翰太太一樣,想了好久怎麼貪心,怎麼保證每次規模至少減小一半並被 \(n=16,k=5\) 整破防了。後來寫了一個暴力 DP 並輸出 pre,我真想用我兩隻腳上的靴子狠狠地分別踢我和出題人的屁股!

首先 \(n<k\) 無解,\(n=k\) 有解,然後 \(k>\lceil n/2\rceil\) 無解,這是因為即使價格設到 \(2\)\(n,k\)\(2:1\) 的比例減小,\(k\) 依舊無法 \(\leq\lceil n/2\rceil\),另一方面沒有比 \(2:1\) 更小的比例使達到 \(n=k\),又最小情況 \(4,3\) 無解,證畢。這些都很顯然,我拿到題就想到了,但是更顯然的部分是對於 \(k\leq\lceil n/2\rceil\),令價格 \(p_1=n-k+1\),則一次購買後 \(n\to k-1,k\to k-1\),再令 \(p_2=1\) 就好了。🙂

想不到主要是因為先入為主地認為價格至少要少於 \(n\) 一半才優,不然 \(\red{60}\) 不夠,誰知道這麼詐騙呢?

E

將一個字串分成若干子串使均無迴文或報告無解。

怎麼又是 constructive algorithms。你們 Veitnam 人均建築師嗎?被 D 騙麻了以及被自己氣麻了就沒仔細想了,其實講道理是做得出來的。

首先全一樣無解,原本就不是迴文無解。找到第一個位置 \(t\) 使 \([1,t]\) 不是迴文(則 \([1,t]\) 一定形如 \(\texttt{a...ab}\),令 \(\texttt{@ = a...a}\)),如果 \([t+1,n]\) 也不是迴文的話就結束了。否則,由於原串是迴文,一定有 \(t\leq\lceil n/2\rceil\)。更進一步,由於原串和 \([t+1,n]\) 都是迴文,所以整個串一定形如 \(\texttt{@b@b@...b@b@}\)(這個好像是個經典迴文結論,關於迴文套迴文且另一邊不是迴文,但是我給忘記了)。然後如果 \(\texttt{@}\) 長為 \(1\)\(\texttt{abababa}\))或者 \(\texttt{b}\) 數量為 \(1\)\(\texttt{aaabaaa}\))的情況無解,其他隨便從中間某個 \(\texttt{@}\) 中間切一刀就好了,全都有解。

但是問題是三種無解情況我全都一眼發現了,但是我認為這個分割會遞迴下去然後整蒙了。結論是思考需要 bfs。

F

給出排列 \(p\),構造排列 \(q\) 使 \(q\)\(q\circ p\) 的逆序對數之和為 \(k\)

怎麼又是 constructive algorithms。你們 Veitnam 人均建築師嗎?

具體怎麼構造懶得寫了,感覺描述起來很複雜,主要是 mark 一下這個性質:

  • \((i,j)\)\(p,q,q\circ p\) 上作為逆序對一定共計出現 \(0\)\(2\) 次。易證。

然後就構造 \(q\) 使恰好有【用 \(k\)\(p\) 的逆序數算一算就知道的一個常數】對在 \(p\) 上順序的逆序對就好了。

GHI

沒看了。

相關文章