1. 程式人生 > >馬上就要被樓下超過了思維題專場(一)的題目思路

馬上就要被樓下超過了思維題專場(一)的題目思路

1.比賽連結

2.題解

A.最大子矩陣和

題目連結

思路

強行列舉行,在將第i行到第j行的每一列加起來,看成一個數,最後就變成了求(j-i+1)個連續數的序列的最大子段和。然後再按照求最大子段和的方法記錄一下列舉過程中的最大值就可以求了,目測了一下複雜度有點,,,大約O(n^3)?

資料量不大,似乎可以求。。。

B.Bash遊戲 V4

題目連結

思路

這題做過的呀 每次只能取上一個人的2倍,打個表找一下規律可以發現是斐波那契數列,然後就可以解決了。。。

C.2條不相交的路徑

題目連結

思路

度娘了一下似乎是tarjan演算法求強連通分量 不會 告辭

D.揹包問題 V2 

題目連結

思路

查了一下題解發現是一個二進位制優化的多重揹包,優化的方式類似於要在揹包裡面要放n個蘋果,可以將n個蘋果分成幾個2的次方1,2,4,8,m^2然後n可以由這些來組合

這樣 把Cn拆成 Cn=1+2+4+8+...+(Cn-sum)。 

sum表示前面的數字之和,例如 按照規律加到第m個數,發現已經大於Cn,那麼sum就表示從 1+2+4+8+.....+ 2^(m-2)

大概思路理解了感覺自己並不能寫出來。。。揹包理解的還是不好。。

E.駱駝與香蕉

題目連結

思路

首先假設N無窮大,在最優解的情況下,最後的長度為K的距離一定只走一次,這樣問題就轉化成了向N-K個點運送K個香蕉,可以知道在N-4/3K處可以剛好最優的向N-K點運送K個香蕉,這裡新增的K/3的路要走3遍,總所需要的香蕉數為2K個,同理,下一段K/5的路要走5遍,多消耗K個香蕉,依次類推,這道題目轉化為 分解N=K+K/3+K/5+.....+K/(2N-1)+m  (這裡前面的計算要保留實數)

最後需要的香蕉數ANS=N*K+m*(2N+1)最終結果向上取整,精度不知道會不會有問題。

F.距離之和最小 V2

題目連結

思路

由於XYZ三個座標互不影響,所以只需要分別求出使得距離絕對值之和最小的XYZ值,即可得到結果,把所有點的XYZ值分別排序之後,用後一半的座標減去前一半的座標即可,如果點為奇數個 那麼中間那個點不算。

G.01組成的N的倍數

題目連結

思路

似乎是廣搜+深搜。。。不太會QAQ

H.距離之和最小 V3

題目連結

思路

一個權值為Wi的點就視為Wi個這樣的點,然後從小到大排序用後一半減去前一半的座標,如果為奇數箇中間的點不計算。

I.KGold

題目連結

思路

原題題意可以轉化成求N條截距為Mi(均為正)斜率為Si(均為正)的直線的前10000個交點

結合了一下題解的思路 就是二分查詢一下前10000個交點所需要的X值,然後用一個優先佇列儲存求出交點,複雜度O(n^2)但是好像由於很多樣例都會直接跳過,所以能過?

J.選擇子序列

題目連結

思路

這道題。。一言難盡。。。為數不多的看了題解才明白題意的題。。。不過看了一下覺得真的好巧妙啊。。。ORZ

附上覺得寫得比較明白的題解