ACM訓練日記7.7

一、訓練賽情況

  1. A. Heating(AC)
    題意:
    給你a和b,讓你把b拆成a個數,這a個數之和要等於b,且這a個數的每個平方加起來的和必須是最小。
    思路:
    貪心思想,通過對樣例的分析,又自己造了幾組數據測試,發現平均放就可以了,然後餘出來的數分成若干個1,加在之前放的數上。一般這種貪心的題目我都是從數據分析入手。

  2. B. Obtain Two Zeroes(AC)
    題意:
    t組樣例,給出a,b,有兩種操作
    ①:a = a - x, b = b - 2 * x
    ②:a = a - 2 * x, b = b - x
    注意:x可以爲任意值,每一次操作x的值可以不唯一
    問最終能否將a和b都變爲0
    思路:
    就是一個數學題,需要列方程組。
    設每次x都爲1,設a=a-1&b=b-2有m次,a=a-2&b=b-1有n次,問題即轉化爲關於m和n的方程組a=m+2n,b=2m+n。

  3. C. Infinite Fence
    題意:
    現有10^100塊木板需要塗漆,第x塊如果是x是a的倍數,則塗一種顏色,是b的倍數,則塗另一種顏色。如果既是a又是b的倍數,那麼兩種顏色都可以塗;如果連續有k塊板的顏色是一樣的,則輸出REBEL,否則輸出OBEY。問是否能避免被處死。
    思路:
    用到了數論的知識
    我們先假設r是小的,b是大的。那麼最長連續區間肯定是r的倍數染的色。b的染色情況爲b,2b,3b…kb。r可以出現的位置肯定在兩個b的倍數之間,那麼r可以出現的區間長度肯定是b−1。我們考慮最壞的情況那r在一個區間出現大的位置肯定要儘可能的早設這個位置爲t。那麼滿足式子k1*
    b+t=k2*r。
    由 exgcd可得 ax+by=c 當且僅當 gcd(a,b)∣c有解。c 最小爲gcd(a,b)。即t最小爲 gcd(r,b) 。則最多連續的木板數爲((b−1)−gcd(r,b))/r+1。把這個數和k比較就能得到答案。

  4. D. A Game with Traps
    題意:
    m個士兵敏捷值爲ai,有k個陷阱,每個陷阱有l,r,d三個屬性,l代表陷阱的位置,r是可以使陷阱失效的位置,士兵敏捷值不小於d的纔可以經過l,現在你和m個士兵位於座標軸0點,boss位於n+1點,每次單獨移動和帶士兵移動一格(左右)花費的時間爲1,經過即可以拆除陷阱不花費時間。求在時間t內最多能帶多少個士兵到boss點。
    思路:
    二分,將所有的陷阱區間對左端點進行排序,然後二分計算如何將花費時間在範圍內最大化。核心選擇:b[i].d<=mid||b[i].r<=mx這樣一來對於低於他的直接跳過(不改變mx),如果有兩個陷阱 [ 1 10 5 ] [ 5 7 100 ],是否存在直接拆除第一個陷阱而直接忽略第二個陷阱而影響結果呢?最優解三種情況1、全體小於5這時,需要跨過兩個,由於重複導致只需拆除第一個。2、大於5,直接忽略第一個陷阱,拆除第二個陷阱。3、大於100,都跨過過沒有任何影響。

  5. E. Tournament
    題意:
    有n個人進行比賽,每次比賽兩個人中勝者晉級,繼續進行下一輪比賽,直到最後決定冠軍。n個人每個人有排名,比賽排名高的一定獲勝,但可以收買排名高的人,讓其輸掉比賽,你想讓其中一人獲勝你可以安排比賽,求最少的花費使你需要的那個人成爲冠軍。
    思路:
    還是貪心問題。 設讓s號成爲冠軍,則需要考慮收買部分比 s 強的人。所有人中最強的人一定需要被收買,因爲他與其他任何人比都會晉級。所以不如把他安排在決賽,讓他打倒更多比s強的人(那樣s就可以安排更弱的對手了),總共能打倒2^k-1 -1個人,暫且認爲他淘汰了最大的2^k-1-1個人。半決賽,與s對戰的人,則一定是前2 ^ k-1中最大的人(暫且不考慮收買的問題),因爲其他人是無法晉級到半決賽的,理由同決賽,其實能做到還有被最強的打倒的那2^k-1-1個人也是可以做到的。所以綜合考慮這些人中,收買費用最小的人,安排他作爲半決賽對手即可。同理可以求出其他輪次需要收買的人。
    F. Colored Tree
    題意:
    給你一棵n個節點的樹,每個節點都有一個顏色。這棵樹的權值定義爲,任意兩個相同顏色的點之間的路徑長度之和。但是,這棵樹的每個點的顏色是不確定的,你只知道節點iii的顏色屬於某一個區間[li,ri],於是這棵樹總共就||1≤i≤n(ri−li+1)種可能。你需要求這麼多種可能情況下的樹的權值和。

二、賽後總結

今天的比賽難度要比昨天高一些,幾乎每個題都需要一定的算法知識,只出了兩個題,不過今天比較好的一點就是沒有出現小錯誤,沒有罰時。第一個題還好,比較熟悉的貪心,到了第二道題,就是個數學題,我這個數學渣渣做了好久纔出來。其實第三道題看完題解後感覺也是能出的,當時比賽離正確答案就差一點點了,還是自己思維不行。後續補題也是出現了麻煩…F題根本看不懂,一臉懵逼。不是目前我這個水平能解決的…
PS:發現了一個小規律,題目中規定的時間限制和內存限制比較小的題目往往就是前面的題目,也就比較簡單…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章