Codeforces Beta Round #2

來源:互聯網
上載者:User

轉載hhang大牛的blog。。。A – Winner

這個比較簡單 ,Pass,簡單迭代

B. The least round way

1000*1000的方陣,每個格子有一個非負整數,現在要從左上走到右下,每次只能向下或者向右走。目標是使得所有走的格子裡的數的乘積裡,末尾0的個數最少,要求輸出最有解和走法。

不用怎麼想也知道基本是個dp了,可以發現其實只有2和5的因子是有用的,但是如果狀態同時記錄2和5的因子個數的話,就不好表示了。其實方法很簡單,對2個5分別做一次,第一次讓2盡量少,第二次讓5盡量少,兩個裡面取個最小的就是答案了,應該不難證明。dp過程就比較普通了,記錄下路徑,最後輸出即可,不再贅述。

當然,本題是有一個比較大的trick的,就是如果其中有一個數字為0,那麼最後的乘積可以為0,也就是答案至少可以是1。因此,只要先記錄下方陣中有沒有0,然後dp的時候強制不走0,最後輸出走0和不走0的最優解即可。賽後我還測了一下,資料走沒有一定要走0的資料,比較弱。

 

C. Commentator problem

二維平面有3個圓,現在要求一個點,這個點看3個圓的視角一樣大,其中點看圓的視角就是點和圓的兩條切線之間的夾角。有多個點滿足條件的話,輸出使得視角較大的那個點。

首先考慮到兩個圓的視角相同的點會滿足什麼性質。假設兩個圓的半徑分別是r1和r2,點到兩個圓的距離分別是d1和d2,那麼一定滿足d1/r1 = d2/r2,即d1/d2 = r1/r2,到兩定點距離比為定值的點的軌跡。通過google(-_-),我發現,當r1=r2時,軌跡是一條直線,否則軌跡是一個圓。於是剩下的問題就是苦力幾何了,求出軌跡的圓和直線等,然後求出3個東西的公用交點即可

 

收益匪淺!對比較複雜的過程就是要熟!這樣子才能有創新!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.