第247章 對拍、Day1第三題

沒錯,剛纔的猜想是憑直覺和少量筆算搞出來的。

要想驗證自己的猜想,除了數學證明,最實用的方式就是對拍。

所謂對拍程序,通俗的說法,就是數據比較器。

方法很簡單。

將窮舉暴力搜索版本的代碼,編譯成可執行文件a;

將運用了猜想,優化後的代碼編譯成b;

然後編寫一個隨機數據生成器,命名爲rand;

接下來,就可以製作對拍程序了。

代碼的主體是個有限次的循環。

循環體內部,核心部分是幾個 system()函數。

先調用“./rand“生成隨機數據,存入s.in,再分別調用a、b,讀取s.in,輸出a.out 和b.out兩個文本文件。

最後調用“diff a.out b.out“,進行比較。

如果發現兩個文本文件不一致,則說明優化後的程序有問題,於是提示錯誤信息以及出錯原因。

這就是對拍,號稱最強的調試辦法,比GDB之類的調試工具好用多了。

江寒寫完對拍之後,設了一個60000次的循環,花了2分多鐘跑完一遍。

結果沒有輸出任何錯誤信息,這表示自己的猜想是完全成立的。

下一步,就該把優化後的代碼擴展到高精度了。

這一步對很多選手來說,都是個難點,很容易大意之下,寫漏一些條件。

比如位數的最大值處理得不好,或者犯下其他的小失誤,就會導致運算出bug。

倒也不一定完全不能運行,只是碰到特殊數據時,可能會得出不正確的輸出。

運氣好的時候,也能正常得分,運氣差一點,可能就會丟分了。

高精度運算的基本原理,是模擬手工列豎式計算,其中要考慮數位對齊和進位、借位處理。

這種代碼在網上有的是,但運算效率上,那些比較常見的代碼,就有點不敢恭維了。

江寒在刷《NOIP寶典》的時候,自己研究出來了一種高精度算法,可以說是不傳之秘,比網上能找到的示範代碼,要精簡和巧妙很多。

在這道題裡,江寒要做的就是模擬手算高精度乘除法。

如果不打高精度,那麼最多僅能滿足40%的數據要求。

這道題滿分100,能看懂題目,並寫出暴力搜索算法,就能20分。

能發現規律,寫出快速排序,就能得到40分。

對於實力有限,有自知之明的選手,做到這裡就可以收手了。

只有那些對自己足夠自信,且能熟練編寫代碼進行高精度運算的人,纔會繼續改造算法,以衝擊高分。

高精度的乘法好寫,除法就稍微有點難度了。

這裡又有兩種選擇,一個是寫高精除高精,滿足100%的輸入數據要求。

要麼就退而求其次,被除數爲高精度,除數爲單精度,這樣也可以滿足至少60%的輸入數據要求。

寫對高精除以單精,能得60分,寫出高精除以高精,纔有機會得到滿分。

但高精除以高精,是相當複雜的,一旦寫錯、寫漏了條件,說不定反而得不償失,連60分都得不到。

所以,是保證到手60分,還是冒着浪費時間的風險,衝擊一下滿分?

對於其他人來說,這當然是個艱難的抉擇,但對於江寒來說,根本無需糾結。

反正時間也有的是,當然是選擇後者了。

江寒花了大約半個小時,寫出了雙高精除法的版本,並調試通過。

然後設計了幾組極限數值,代入進去運算,結果與筆算結果完全一致。

邊界條件沒問題,這個程序出問題的機率就相當低了。

倒也不是不能用系統作弊。

做出爆搜程序後,可以通過20%的校驗點,系統就提示了一次獲得“學以致用”積分。

運用了猜想,改爲快速排序後,系統再次提示,獲得了“學以致用”積分。

改成高精度後,系統也有獲得更多積分的提示。

這說明,江寒對程序做出的每次改進,都能使其通過更多的校驗點。

但系統的幫助也只能到這裡了,只能據此判斷出,每個步驟中的程序,都是可以得分的,卻無法判斷出是否能得到滿分。

江寒只能依靠自己豐富的編程經驗,儘可能保證程序無BUG。

搞定了前兩道題後,時間已經過去了1個半小時。

剩下的兩個小時,全部交給最難的第三題。

題目是《開車旅行》。

題目概述:將N個城市編號爲1~N,編號小的城市在編號較大的城市之西。

各個城市海拔都不一樣,城市i的海拔爲Hi,城市i與j之間的距離d【i,j】爲兩城市海拔之差的絕對值。

也就是說d【i,j】=-Hi-Hj-。

A、B二人輪流開車,從A開始,每日輪換。

選擇一個城市S爲起點,一直向東,最多行駛X公里,就結束。

A、B駕駛風格不同,B總是沿着前進方向,選擇最近的城市作爲目的地,A總是沿着前進方向,選擇第二近的城市作爲目的地。

PS:如果兩個城市距離相同,則海拔低的視爲較近。

如果其中任何一人,無法按照自己的原則選出目的地,或者到達目的地會使公里總數超過X,就結束旅行。

輸入文件中包含如下內容:城市N的數目,城市1~N的海拔高度,X0,M組Si和Xi。

輸出文件中,要求回答兩個問題。

1、對於給定的X=X0,從哪一個城市出發,A開車行駛的路程與B開車行駛的路程比值最小?

2、對於任意給定的X=Xi和出發城市Si,A、B開車行駛的路程總數是多少?

說實話,這道題的難點,主要在於題目的表述比較複雜。

一般人光看懂題目,就至少需要15分鐘……

江寒也足足花了5分鐘,才搞清楚題目的意思。

但如果讓他評價這道題的難度……

勉強3星吧。

這個題目的簡單之處在於,哪怕用最笨拙的辦法,寫個暴力搜索程序,都能保底70分。

可以說是白給。

但如果想拿滿分,難度直接飆升到天際。

畢竟題目中規定:對於100%的數據,有1≤N≤100,000,1≤M≤10,000;

-1,000,000,000≤Hi≤1,000,000,000;

0≤X0≤1,000,000,000;

1≤Si≤N;

0≤Xi≤1,000,000,000。

其中,數據保證 Hi互不相同。

江寒很想吐槽,海拔的上限是10億,這麼高的地方,肯定不在地球上吧?

而海拔的下限-10億,這已經LOW穿地心了喂!

好吧,又是一個“艱難”的選擇,到底是穩定拿70分,還是冒着巨大的風險,衝擊更高的分數?

這道題的關鍵仍然是數據預處理。

預處理得好,直接難度減半。

關於預處理,有很多可行的辦法,離散化+鏈表、雙向鏈表、平衡樹……

甚至STL的set都可以。

但不能用複雜度爲O(n^2)的算法,那樣很容易在校驗時,時間超限。

畢竟根據規定,每個校驗點只有1秒的運算時間。

第163章 萬能逼近定理第80章 碰碰船和真人CS第141章 金裝四大才子第108章 情趣第342章 蛇皮走位,初現鋒芒第59章 上乾貨第145章 陳萱的邀請第420章 強化學習的威力第74章 88年的草莓第228章 恐怖如斯第219章 點到爲止第182章 罪證都沒銷燬乾淨第381章 以理服人,大江科技第218章 爲人實在,夠給面子第401章 有種奇遇叫頓悟第59章 上乾貨第109章 不擅長的事情第176章 現學現賣第350章 男生不準進去的地方第361章 有點像“年輕”時的自己第262章 貴有貴的道理第234章 恐高症第131章 夏雨菲的小秘密第376章 很像一臺成熟的計算機了第86章 蘇婉瑩的預測第276章 丟1分和拿滿分,哪個更難?第394章 超參數全自動搜索第323章 麻雀還是蚊子?第68章 舉報了、舉報了第169章 最後0.5公分第212章 他和夏總到底什麼關係?第105章 寶藏男孩第164章 不會被下藥吧?第216章 有些事,再多的錢也沒得談第221章 超級大腦,人傑地靈第60章 費曼學習法第109章 不擅長的事情第10章 給老江打個電話第204章 是男人就餵飽她第136章 打造算術邏輯單元第188章 金風玉露一相逢第92章 《激光雕刻機》第406章 不可思議的學習效率第285章 “彈性碰撞”第376章 很像一臺成熟的計算機了第286章 破解壞蘋果第36章 家宴第411章 不可不防,防不勝防第71章 憑什麼是江寒?第403章 家產億萬,平平無奇第17章 男朋友挺好第323章 麻雀還是蚊子?第385章 超大規模集成神經網絡第392章 深度卷積神經網絡第95章 再花5000也值第137章 聽鬆小院,好地方?第107章 附加條件第316章 順藤摸瓜第255章 調整超參數,以及防止過擬合第130章 大佬和小蘿莉第322章 愚者注視着你第262章 貴有貴的道理第330章 小孔成像和PNP問題第318章 飛機點餐攻略第400章 不可逾越的高山第283章 給靈感充點值第64章 渣男第147章 有點深奧啊第321章 星戰銀行,黑卡飛刀第5章 三個系統準備就緒第154章 腦力提升的副作用第394章 超參數全自動搜索第220章 英俊瀟灑,踏雪無痕第426章 坦白從寬,回家過節。第301章 人間喜劇,喜聞樂見第407章 科幻片,恐怖片?第142章 哪捨得叫你疊被鋪牀?第37章 烤肉第201章 組內學習競賽第333章 不怕教壞了乖女兒?第255章 調整超參數,以及防止過擬合第124章 招兵買馬第110章 敲竹槓第23章 震驚商城,開啓!第427章 詭異的附加關卡第105章 寶藏男孩第164章 不會被下藥吧?第51章 任務分析第290章 其實已經有點過時了第313章 “僱傭兵”與“香餌”第286章 破解壞蘋果第321章 星戰銀行,黑卡飛刀第116章 要節制一點了第323章 麻雀還是蚊子?第104章 鮮花與牛糞第187章 牀下的小畫冊第326章 “戰神一號”的弱點第294章 峰迴路轉,轉了又轉第15章 夏雨菲的羨慕第238章 競爭對手?
第163章 萬能逼近定理第80章 碰碰船和真人CS第141章 金裝四大才子第108章 情趣第342章 蛇皮走位,初現鋒芒第59章 上乾貨第145章 陳萱的邀請第420章 強化學習的威力第74章 88年的草莓第228章 恐怖如斯第219章 點到爲止第182章 罪證都沒銷燬乾淨第381章 以理服人,大江科技第218章 爲人實在,夠給面子第401章 有種奇遇叫頓悟第59章 上乾貨第109章 不擅長的事情第176章 現學現賣第350章 男生不準進去的地方第361章 有點像“年輕”時的自己第262章 貴有貴的道理第234章 恐高症第131章 夏雨菲的小秘密第376章 很像一臺成熟的計算機了第86章 蘇婉瑩的預測第276章 丟1分和拿滿分,哪個更難?第394章 超參數全自動搜索第323章 麻雀還是蚊子?第68章 舉報了、舉報了第169章 最後0.5公分第212章 他和夏總到底什麼關係?第105章 寶藏男孩第164章 不會被下藥吧?第216章 有些事,再多的錢也沒得談第221章 超級大腦,人傑地靈第60章 費曼學習法第109章 不擅長的事情第10章 給老江打個電話第204章 是男人就餵飽她第136章 打造算術邏輯單元第188章 金風玉露一相逢第92章 《激光雕刻機》第406章 不可思議的學習效率第285章 “彈性碰撞”第376章 很像一臺成熟的計算機了第286章 破解壞蘋果第36章 家宴第411章 不可不防,防不勝防第71章 憑什麼是江寒?第403章 家產億萬,平平無奇第17章 男朋友挺好第323章 麻雀還是蚊子?第385章 超大規模集成神經網絡第392章 深度卷積神經網絡第95章 再花5000也值第137章 聽鬆小院,好地方?第107章 附加條件第316章 順藤摸瓜第255章 調整超參數,以及防止過擬合第130章 大佬和小蘿莉第322章 愚者注視着你第262章 貴有貴的道理第330章 小孔成像和PNP問題第318章 飛機點餐攻略第400章 不可逾越的高山第283章 給靈感充點值第64章 渣男第147章 有點深奧啊第321章 星戰銀行,黑卡飛刀第5章 三個系統準備就緒第154章 腦力提升的副作用第394章 超參數全自動搜索第220章 英俊瀟灑,踏雪無痕第426章 坦白從寬,回家過節。第301章 人間喜劇,喜聞樂見第407章 科幻片,恐怖片?第142章 哪捨得叫你疊被鋪牀?第37章 烤肉第201章 組內學習競賽第333章 不怕教壞了乖女兒?第255章 調整超參數,以及防止過擬合第124章 招兵買馬第110章 敲竹槓第23章 震驚商城,開啓!第427章 詭異的附加關卡第105章 寶藏男孩第164章 不會被下藥吧?第51章 任務分析第290章 其實已經有點過時了第313章 “僱傭兵”與“香餌”第286章 破解壞蘋果第321章 星戰銀行,黑卡飛刀第116章 要節制一點了第323章 麻雀還是蚊子?第104章 鮮花與牛糞第187章 牀下的小畫冊第326章 “戰神一號”的弱點第294章 峰迴路轉,轉了又轉第15章 夏雨菲的羨慕第238章 競爭對手?