試水訓練 6

A題:POJ 3277

給你n 個建築物,在一維的數軸上表示出來,ab表示座標範圍,h表示高度,問他們的正投影面積和是多少,就是去除重複的部分,當時認爲拍一下順序就可以了,但是後來發現沒那麼簡單,後來又想了一種比較簡單清晰的做法,就是把數軸上每一個單位都搜一遍,同時看看這一個單位距離時的有建築物覆蓋時最高的那個高度,然後求面積就好,但是數據量太大了,需要用線段樹離散化處理……



B題:POJ 3278

一條數軸,給定n,k;然後從n走到k,有兩種走法,一種是x->(x+1),或者x->(x-1)  ,另一種是x->2*x , 問最少幾步,以前看過這個題沒敢做,要麼DP,要麼貪心,要麼搜索!

爲什麼沒敢做呢,沒明白當時的轉移狀態,x-2*x而不能從2×x到x,後來仔細一想,這不就是BFS嘛,從x能到x-1,x+1,2*x,先不要急着往其他位置轉移,因爲這是當前最短的距離,當前是k步,那麼下一步是第k+1步,只能從少的往多的地方轉移,不能從多的步數往少的步數轉移……     明白了這一點,BFS就出來了……

注意,數組下標越界問題,還有N>K的例子,這是兩個小坑!


C題:開關燈問題POJ 3279

給定,m*n的矩陣,有0,1兩種狀態,每次可以講一個狀態翻轉到另一個狀態,同時,上下左右的狀態也跟着變化,問最少多少步能將狀態全部轉化成0,同時以矩陣的形式輸出,每位上的數字表示該位翻轉過多少次,當然被動翻轉的不算!

方法是枚舉第一行,然後不斷更新最優解就好了,要用到位運算……


D題 CodeForces 18C

給以張包含n個數字的紙條,問有多少種方式,將紙條建成兩段,使得每段上的和相同!

大水題啊,當時看到沒人做以爲自己讀錯題了,鬱悶,簡單枚舉就好了,注意數組不要越界!


E題 CodeForces 18A

給三個點的座標,座標都是integer, 問是否是直角三角形或者是amolst 直角三角形,所謂amolst是一定一個點一個單位的距離,並且座標仍然是整數,使得這三點成爲直角三角形;   用到兩個知識點,叉積判斷三點是否共線,向量的點積判斷是否是直角!


F題:

這個小題把自己卡了一下,就是說一條數軸上分成n段,第k段的座標範圍是[(k - 1)m, (k - 1)m + l],

然後某人從0開始跳躍,每次跳d格,然後在那裏能停下,不能停在這n段包括邊界上; 那麼就停在空隙裏唄……

注意數據範圍:

 ndml (1 ≤ n, d, m, l ≤ 106, l < m)  

當時沒仔細研究數據範圍,以爲n不大,直接就枚舉跳躍距離並且判斷是否某一段內,並且當前段也不斷往後更新……  當然超時……    後來一直沒明白哪裏超時,後來仔細一看才知道我枚舉的是點的左座標,一共有最多n段,但是每段有範圍不知道,實際上座標範圍很大的,貌似超int了,得用long long^……   後來改用枚舉段數,最多n段就好了,同時判斷是不是在某段的間隙,用到整除……   當前座標x/m*m……      

注意此題有兩個坑,就是有時候這些線段之間沒有空隙……   或者有空隙但是跳躍着沒有跳躍到空隙裏面,怎麼辦呢?   數軸是無現長的,他可以超越這n段啊……


G題 CodeForces 18E

給一個矩陣,每個都有顏色,改變最少的顏色使其滿足這樣的要求,相鄰的不能是同種顏色,每一行或者每一列最多用兩種不同的顏色……

如何操作這些矩陣使其滿足要求呢,把滿足要求的的矩陣寫出來,按照字典順序……  注意一共有26種顏色,用26個小寫字母表示出來了……

貌似是DP,但是一直不會做 網上唯一找到的解題報告是小日本的:http://d.hatena.ne.jp/kusano_prog/20100618/1276884992  


發佈了76 篇原創文章 · 獲贊 9 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章