Prob_Solve 板


LINE

※ 引述《lubrige (lubrige)》之銘言: : 題目: http://ppt.cc/Aogu : 給予整數 N, R, Q,求一最大的正整數 M,使得 : (1) 將 N 和 M 寫成十進位表示時,M 是 N 的 subsequence : (2) M 除 Q 會餘 R : 其中 1 <= N < 10^1000, 0 <= R < Q <= 1000 : 目前的做法是 : 定義狀態 f[i][j],表示從 N 的最高位開始,考慮過前 i 個數字是否選進 M,且 : 餘 j 的情況時 M 的最大長度 (暫不考慮 value 大小),其中若為走不到的狀態則填-1 : 轉移為 (d(k) 為 k 從最高位下來第 k 個數字, zero base) : / f[i - 1][j] : f[i][j] = max | : \ f[i - 1][j'] + 1, j = (10 * j' + d(i - 1)) % Q, : if f[i - 1][j'] != 0 or d(i - 1) != 0 : boundary condition: : 1. f[0][0] = 0 : 2. f[0][i] = -1, for 0 < i < Q 上面長度 f[i][j] 的計算是正確的,沒有問題 : 最大長度的表填完之後,再從 N 的最低位做回來,並且另外開一張表 g[i][j], : 記到 f[i][j] 這格所形成的最長 subsequence,最高位數字是多少。 有點看不太懂 "f[i][j] 這格所形成的最長 subsequence" 是指哪一段 sequence 根據你的遞迴式,腦補 g[i][j] 的意思是(?): 選擇 M 的第 f[i][j] 個數字 (zero base) 最大可行值是 g[i][j] 並且,這個值是從 d[i-1]~d[n-1] 選來的, 且 M 的前 i-1 個位模 Q 的餘數是 j : 對於不是 -1 的格子,取下面裏比較大的數字 (這部份用 buttom up 來說): : 1. g[i + 1][j], if f[i + 1][j] == f[i][j] : 2. d(i), if f[i + 1][j'] == f[i][j] + 1, j' = (10 * j + d(i)) % Q 在算出 g[i][j] 後,應該是要再從高位找下來? 那這邊的找法,應該是從 i=j=0 開始, 如果 g[i][j] 這格是 case 1. 就 i++; 看下一格就好 如果是 case 2., 輸出 g[i][j]; j=(j*10+g[i][j])%Q; i++; 不知道原 po 的做法是不是這樣? 如果是的話就要先判 case 2. 因為數字一樣時先取走一定比較好,反過來雖然之後還是能拿到一樣的數字 但可能會導至之後可以選的數字變小 例如 881 4 7 這個測資,算出 f[][], g[][] 應該是這樣 f 0 1 2 3 4 5 6 0 0 * * * * * * 1 0 1 * * * * * 2 * 1 * * 2 * * 3 * * * * 2 * * g 0 1 2 3 4 5 6 0 8 * * * * * * 1 8 8 * * * * * 2 * 1 * * X * * g[0][0] 的 8 是來自 g[1][0] 或 d[0] (f[1][8%7]==f[0][0]+1, case 2.) 都行 不過這裡要選 case 2. (i,j)=(0,0)=>(1,1)=>(2,4)=>(3,4) 8 8 X 選 case 1. 的話, (i,j)=(0,0)=>(1,0)=>(2,1)=>(3,4) X 8 1 : 另外因為這部份倒過來做,所以為了避免抓到不是從 f[length(N)][R] 填回來的數字, : 上面的計算還考慮是不是從 f[length(N)][R] 填回來的,如果不是的話一樣不考慮 : g[i + 1][j] 或 d(i),這部份再記一張來解決。 : 不過答案不對,想請問一下有沒有什麼沒有考慮到地方,先謝謝大家 0w0/ --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.194 ※ 編輯: seanwu 來自: 140.112.4.194 (03/17 18:26)
1F:推 lubrige:抱歉 g[i][j] 那段寫得不好 不過我們想的應該是同一件事 03/17 19:17
2F:→ lubrige:就是在 dag 上找字典序最大或最小那樣 03/17 19:18
3F:→ lubrige:然後兩個 case 都存在且平手的話也是抓 case 2 沒問題 03/17 19:19
4F:→ lubrige:最後再從最高位輸出回來 我覺得應該是哪邊寫爛了 03/17 19:19
5F:→ lubrige:不過一直看不太出來 QwQ 03/17 19:19
6F:→ seanwu:方便給source code嗎XD 我想看一下 03/17 19:24
7F:推 lubrige:f 的第 0 個 column 似乎是整排的 0? 雖然應該是不影響 03/17 19:25
8F:→ seanwu:嗯對,我標*的位置從g[|N|][R]走回來走不到的點 03/17 19:27
9F:推 lubrige:http://codepad.org/VwCMbCgU 對不起這樣麻煩 見笑了 QwQ 03/17 19:28
10F:→ seanwu:第73行的p[i][j][1]有可能是壞的 (如果case 2沒有成功) 03/17 20:02
11F:→ seanwu:要先檢查 p[i][j] 有沒有填過 (p[i][j][0]==rnd_cnt) 03/17 20:03
12F:→ seanwu:沒有的話,不用比p[i][j][1],p[i+1][j][1],直接做74行 03/17 20:04
13F:→ seanwu:if(p[i][j][0]!=rnd_cnt || p[i][j][1]<p[i + 1][j][1]) 03/17 20:06
14F:→ seanwu: (line 74) 03/17 20:06
15F:→ seanwu:p[i][j][0] = rnd_cnt; 03/17 20:06
16F:推 lubrige:嗯嗯 感謝幫忙 不過還沒有想透什麼情況下這句會出包 03/17 20:22
17F:→ lubrige:我直覺上令為 -1 應該可以避掉 case 2 的失敗 03/17 20:24
18F:→ lubrige:可是這樣看起來結果並不是這樣 03/17 20:24
19F:→ seanwu:我也不太清楚XD 不過我測 1101 1 6 你會印 11 這樣 03/17 20:30
20F:→ seanwu:可能要 trace 一下發生什麼事 03/17 20:31
21F:推 lubrige:啊啊 似乎是因為我把 back tracking 的 pointer 也放在 03/17 20:50
22F:→ lubrige:line 74 裏面 這樣在 case 2 失敗 而且 i + 1 到 L 03/17 20:51
23F:→ lubrige:之間都沒有選數字的話 會因為同為 -1 使 p[i][j][3] 03/17 20:52
24F:→ lubrige:沒有被正確的 assign 到 最後在印答案的時候餘數就亂跳 03/17 20:53
25F:→ lubrige:實際上應該是要 re 的 因為 p[i][j][3] 在這種情況下 03/17 20:55
26F:→ lubrige:都會是 -1 XDD 03/17 20:55
27F:推 lubrige:這筆測資太重要了 非常感謝 0 w0b 03/17 21:18







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燈, 水草

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

TOP