第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秒的運算時間。

第5章 三個系統準備就緒第11章 像我這麼專一第261章 曉之以理,動之以錢第17章 男朋友挺好第18章 就是普通同學第350章 男生不準進去的地方第331章 揹着媽媽偷吃第284章 江寒的操作第150章 全+1!第318章 飛機點餐攻略第250章 幸虧有雙保險第306章 就剩這麼幾個了第148章 到底什麼意思?第243章 比賽心得和騙分教程第154章 腦力提升的副作用第21章 《琵琶行》公開第378章 用詞精準第86章 蘇婉瑩的預測第187章 牀下的小畫冊第163章 萬能逼近定理第306章 就剩這麼幾個了第337章 拐着彎地誇自己?第280章 這就成了“學者”了?第374章 手工打造LED顯示器第172章 誰是誰的小糖人?第201章 組內學習競賽第5章 三個系統準備就緒第125章 我有一個同桌第196章 背黑鍋我來第130章 大佬和小蘿莉第77章 多少次回眸第221章 超級大腦,人傑地靈第258章 學霸的畫風,都是這麼清奇的嗎?第393章 男人不能沒有事業第41章 要是不帥不酷呢?第375章 沒有操作系統怎麼辦?第137章 聽鬆小院,好地方?第141章 金裝四大才子第65章 論文過審第146章 給你個眼神自己領會第346章 密室第50章 可能整大發了第424章 又一個冠軍到手第24章 投稿AMC第398章 商用級手寫識別算法第391章 一切交給時間第22章 名偵探婉瑩第30章 立人設第375章 沒有操作系統怎麼辦?第188章 金風玉露一相逢第189章 查房第296章 攪動風雲第420章 強化學習的威力第243章 比賽心得和騙分教程第110章 敲竹槓第136章 打造算術邏輯單元第131章 夏雨菲的小秘密第165章 看誰先慫第138章 避蚊胺,登山第6章 三個系統倒有四種資源?第13章 “感知機”和“M-P模型”第321章 星戰銀行,黑卡飛刀第176章 現學現賣第345章 意外連連第84章 磁陣第359章 大佬,怪蜀黍?第294章 峰迴路轉,轉了又轉第219章 點到爲止第83章 髮卡第202章 輸得明明白白第29章 王璐有點自閉第159章 想怎麼看,就怎麼看?第312章 阱中有坑,坑裡有釘第336章 女孩的心思你別猜第183章 成功的路上沒有僥倖第250章 幸虧有雙保險第24章 投稿AMC第378章 用詞精準第219章 點到爲止第98章 全能UP主第255章 調整超參數,以及防止過擬合第331章 揹着媽媽偷吃第26章 週一凡的震驚第145章 陳萱的邀請第263章 一切都在算計中第370章 四軸飛行器第401章 有種奇遇叫頓悟第121章 還有誰會對自己這麼好?第299章 膽大妄爲,實力恐怖第341章 決戰楓林火山第310章 唯一的破綻第359章 大佬,怪蜀黍?第248章 需要對答案嗎?第46章 月考開始第287章 夢裡不知身是客第128章 被傳染了怎麼辦?第168章 本能反應第377章 打造自己的科技品牌第407章 科幻片,恐怖片?第325章 說好的理想男神呢?
第5章 三個系統準備就緒第11章 像我這麼專一第261章 曉之以理,動之以錢第17章 男朋友挺好第18章 就是普通同學第350章 男生不準進去的地方第331章 揹着媽媽偷吃第284章 江寒的操作第150章 全+1!第318章 飛機點餐攻略第250章 幸虧有雙保險第306章 就剩這麼幾個了第148章 到底什麼意思?第243章 比賽心得和騙分教程第154章 腦力提升的副作用第21章 《琵琶行》公開第378章 用詞精準第86章 蘇婉瑩的預測第187章 牀下的小畫冊第163章 萬能逼近定理第306章 就剩這麼幾個了第337章 拐着彎地誇自己?第280章 這就成了“學者”了?第374章 手工打造LED顯示器第172章 誰是誰的小糖人?第201章 組內學習競賽第5章 三個系統準備就緒第125章 我有一個同桌第196章 背黑鍋我來第130章 大佬和小蘿莉第77章 多少次回眸第221章 超級大腦,人傑地靈第258章 學霸的畫風,都是這麼清奇的嗎?第393章 男人不能沒有事業第41章 要是不帥不酷呢?第375章 沒有操作系統怎麼辦?第137章 聽鬆小院,好地方?第141章 金裝四大才子第65章 論文過審第146章 給你個眼神自己領會第346章 密室第50章 可能整大發了第424章 又一個冠軍到手第24章 投稿AMC第398章 商用級手寫識別算法第391章 一切交給時間第22章 名偵探婉瑩第30章 立人設第375章 沒有操作系統怎麼辦?第188章 金風玉露一相逢第189章 查房第296章 攪動風雲第420章 強化學習的威力第243章 比賽心得和騙分教程第110章 敲竹槓第136章 打造算術邏輯單元第131章 夏雨菲的小秘密第165章 看誰先慫第138章 避蚊胺,登山第6章 三個系統倒有四種資源?第13章 “感知機”和“M-P模型”第321章 星戰銀行,黑卡飛刀第176章 現學現賣第345章 意外連連第84章 磁陣第359章 大佬,怪蜀黍?第294章 峰迴路轉,轉了又轉第219章 點到爲止第83章 髮卡第202章 輸得明明白白第29章 王璐有點自閉第159章 想怎麼看,就怎麼看?第312章 阱中有坑,坑裡有釘第336章 女孩的心思你別猜第183章 成功的路上沒有僥倖第250章 幸虧有雙保險第24章 投稿AMC第378章 用詞精準第219章 點到爲止第98章 全能UP主第255章 調整超參數,以及防止過擬合第331章 揹着媽媽偷吃第26章 週一凡的震驚第145章 陳萱的邀請第263章 一切都在算計中第370章 四軸飛行器第401章 有種奇遇叫頓悟第121章 還有誰會對自己這麼好?第299章 膽大妄爲,實力恐怖第341章 決戰楓林火山第310章 唯一的破綻第359章 大佬,怪蜀黍?第248章 需要對答案嗎?第46章 月考開始第287章 夢裡不知身是客第128章 被傳染了怎麼辦?第168章 本能反應第377章 打造自己的科技品牌第407章 科幻片,恐怖片?第325章 說好的理想男神呢?