PAT刷題日誌 2020 1 16

2021-10-02 05:48:58 字數 877 閱讀 7097

第一題:1085 perfect sequence (25分)

教做人系列,二分查詢題;

給定乙個正整數數列,和正整數 p,設這個數列中的最大值是 m,最小值是 m,如果 m≤mp,則稱這個數列是完美數列。

現在給定引數 p 和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。

這個題怎麼做?很顯然能想到的就是先把數按從小到大排序,然後從頭和尾向中間掃瞄,也就是所謂的two pointers思想,就是第i個元素對應的第乙個大於等於v[i]*p的v[j],j-i+1就是滿足的元素數量。但是這個j必須通過二分查詢,因為其它方式所需要的時間是接受不了的。

其次還有乙個比較厲害的是這樣做,既然你找最大數量,那我就每次儲存一下截止上一次計算所產生的最大數量result,每次從v[i+result]處開始判斷到末尾,判斷v[i]是否小於等於v[i+result],如果是則計算出i對應的數量,並選擇是否更新result的值,這樣可以省很多計算步驟。

第二題:1044 shopping in mars (25分)

這個又是一樣的,有點類似於求連續子列和,但是又不一樣,這個我又是在牛客ac,pat有乙個測試點卡住。。。第二遍找出來為什麼吧。

第三題:1089 insert or merge (25分)

這個題以前做過,但是這次重做我寫的思路和以前一毛一樣,不同的是我用的string儲存的數!!!string只能儲存單位數!!導致測試點乙個都過不去,我差點懷疑如人生,然後牛客網就可以過得去!!!以後用string玩數字得注意點,只能儲存單位數!!!

還有這個最後乙個測試點沒過去,我還是忘記了之前犯下的錯,於是又犯了一遍,這個是不能通過簡單的統計前面有序數字的位數來判斷迭代了幾次,這個問題導致 了乙個測試點錯誤,所以這也為debug提供了一種思路,就是你的解題依據,很可能有特殊情況可以推翻!

PAT刷題日誌

調整刷題策略 集中精力刷 演算法筆記 第四章的題目,夯實基礎。基礎實在太差,第八章之後的題目壓根就不會,做題的時候就是抄一遍 理解一遍 根本不能算作刷題,而是被題刷。之前乙個知識點一道題的方法根本就是走馬觀花,蜻蜓點水,抄一遍 就覺得會了,第二天就忘乾淨了 兩個字來形容 浮躁 十多天的時間裡參加了倆...

PAT刷題日誌 2020 1 5

2020 1 5 今天結束了所有手頭的事情,想到報名了今年3月7日的pat甲級考試,趕緊重新開始了刷題。目前的狀態大概是基本的演算法,除了樹,圖類以及相關演算法不熟悉,其他基本上已經掌握了個大概 我計畫按照演算法筆記上機指南所提供的順序,從前到後從淺到深。由於之前我大概已經刷了25個左右的題,就直接...

PAT刷題日誌 2020 1 30

第一題 1052 linked list sorting 25分 這個比鍊錶反轉簡單很多,最後乙個測試點是隱藏的0個結點的情況,摸索一下就出來了。第二題 1097 deduplication on a linked list 25分 還是鍊錶,記得在遍歷vector的時候謹慎使用erase函式,因為...