Prob_Solve 板


LINE

題目網址:http://www.spoj.pl/problems/DIRVS/ 這題的點數是0.49 (奇怪,0.5以上的我都AC了,這題卻TLE) 大意是說, 從地圖的起點移動到終點,地圖上的每一格都有相對應的高度, 每移動一步的下一格高度只能是目前這格高度+1或-3的範圍內, 在任何一步,必須連線到起點或連線到終點,確定是可見的。 (不會有特別突兀的高度擋住視線,只要看得到其中兩點之中的一點就可以) 比如說, 高度 2 3 4 1 5 2可以看到4,但是2看不到5,因為以斜率計算在5的位置至少要6這麼高。 現在將問題拉到2D, 起點假設是(1, 5),當我走到(16, 3)的時候,如果視線被擋住就不能走。 我的問題是其中的一個環節, (1, 5)和(16, 3)畫一條連線的時候,要怎麼快速的計算這條線經過那幾個格子, 然後我再用經過的格子計算是否被擋住視線呢? 我TLE的第一做法是很笨的。 i跑1到16,j跑3到5,對於每個格子的 (i, j) 和 (i + 1, j + 1) 帶入直線方程式,兩個結果如果是異號,代表有直線通過, 同時也要判斷(i + 1, j)和(i, j + 1)。 可是地圖最大是200x200,這方法真的太慢, 第二做法是i跑1到16,將i帶入方程式得j。在j的附近判斷是否有直線通過。 還是太慢。 所以想請教是否有什麼奇特的演算法能快速求得直線經過的格子。 如果有AC的人能提點解題方法就再多謝不過了(目前我用有bound的DFS)。 Bleed --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.117.232
1F:推 ledia:有 x-y=k 和 (1,5)-(16,3) 兩條線, 應該每個 scan line 都能 11/22 22:10
2F:→ ledia:求出交點 ? 11/22 22:10
3F:→ ledia:應該說跨越的那個整點 11/22 22:10
4F:→ ledia:x=k 和 y=k 亦同 11/22 22:10
5F:推 seanwu:有bound的DFS? 所以每個格子可能走不只一次嗎? 11/23 00:48
6F:→ bleed1979:在每個格子標記了走到的次數,只能較低不能高。 11/23 05:05
7F:→ tkcn:有什麼理由不用 BFS 而用 DFS 嗎? 11/23 10:30
8F:推 tyu:有試過 Bresenham's line algorithm 嗎? 11/23 10:46
9F:→ bleed1979:感謝ty和tk,我先改BFS試試看,再不行就找演算法。 11/23 13:13
10F:→ bleed1979:在我send超過50次後,是該放棄了。無法理解題目定義的 11/24 13:40
11F:→ bleed1979:直接可看見和intersect的定義。削邊邊角角的是否要計算 11/24 13:41
12F:推 DJWS:每個格子都先計算好能不能看到起點或終點 11/26 17:28
13F:→ DJWS:然後把所有可以走的格子找出來,再用 BFS 應該就可以了? 11/26 17:29
14F:→ DJWS:看得到起點或終點,也就是中間格子的高度不會擋到視線。 11/26 17:33
15F:→ DJWS:把每個點離起點/終點的斜率都算出來,應該可以 DP ? 11/26 17:34
16F:→ DJWS:用 DP 求每一格的斜率最大值/最小值之類的... 11/26 17:36
17F:→ tkcn:BFS 每個點最多也只走一次,所以先算"視線"省不到時間 11/26 17:37
18F:→ DJWS:因為我發現地圖只有 200 x 200 所以我想關鍵應該不在 BFS 11/26 17:39
19F:→ DJWS:比較需要的是 有好的方法可以判斷視線會不會被擋住 11/26 17:40
20F:→ tkcn:同樓上結論 :) 11/26 17:41
21F:→ DJWS:例如 已經有 (x,y) 到 (0,0) 之間的最大斜率 11/26 17:42
22F:→ DJWS:就可以快速判斷出 (2x, 2y) 會不會被擋住視線...之類的東西 11/26 17:43
23F:→ DJWS:tkcn 抱歉...我要先去吃晚餐了 XD 11/26 17:43
24F:→ tkcn:嘗試寫這題,結果也是TLE :X 我是用BFS+蠻快速的視線檢查 11/27 00:46
25F:→ tkcn:所以我想,可能真的必須靠 DP 找出能走得格子再 BFS 了 11/27 00:47







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP