PAT刷題(二 排序)

2021-10-22 03:16:25 字數 2237 閱讀 3373

大學期間專案做了不少,而在演算法題方面還是個小白。藉著考研機會,把pat甲級刷一遍,同時記錄一下心得。主要參考的是柳神的題解,略過了不會考或考的可能性很小的題。

設定結構體儲存成績,分別排序計算排名就行啦。

設定乙個exist陣列,用於快速定位特定id結構體的下標。

通過設定乙個全域性變數flag,減少cmp()函式的重寫次數。(好久沒寫忘了這個技巧,結果傻傻寫了四遍)

要注意平均成績是四捨五入的。(雖然沒有四捨五入也過了,但今後也要注意)

第一次寫的時候,錯誤地在sort排序前設定了exist的值(實際應該在排序後再設定),導致最後尋找id的對應下標失敗。

原題鏈結

題解先區域性排序,後整體排序。

多練練stl

最後乙個測試點過不了,一查發現是id的原因。題目說明id是13位的數字,最後輸出時一定要補齊字首0.

原題鏈結

題解做了前面幾題就感覺挺簡單的,注意一下輸出id補齊字首0就行。

原題鏈結

題解這是道過去沒做出來的題,其實不用想得過於複雜,在按照財富值排序結束後直接依據年齡判斷是否輸出就能ac。柳神的解法對於這道題來說其實複雜化了,但還是非常值得學習。下面貼一下我ac的**。

使用陣列儲存每個年齡段前100的富人。(本題可不用考慮)

之前沒做出來是因為思考太複雜,雖然通過了樣例但肯定沒有考慮到所有情況。其實這道題不需要想太多也能解出來。

#include

#include

#include

using

namespace std;

struct wealthwea[

100010];

bool

cmp(wealth a, wealth b)

intmain()

if(cnt==0)

printf

("none\n");

}return0;

}

原題鏈結

題解想到給結構體加上乙個"type"型別,cmp函式優先根據type來判斷前後關係,就很容易了。柳神開了四個陣列分別儲存四種型別,也是一種新思路吧。

#include

#include

#include

using

namespace std;

int n, l, h, i, cnt=0;

struct stustu[

100010];

bool

cmp(stu a, stu b)

intmain()

else

if(stu[i]

.virtue>=h&&stu[i]

.talent>=h) stu[i]

.type =1;

else

if(stu[i]

.virtue>=h&&stu[i]

.talent.type =2;

else

if(stu[i]

.virtue.talent.virtue>=stu[i]

.talent) stu[i]

.type =3;

else stu[i]

.type =4;

cnt++;}

sort

(stu, stu+n, cmp)

;printf

("%d\n"

, cnt)

;for

(i=0

; i)return0;

}

原題鏈結

題解耐下性子寫其實不難,就是要注意幾種邊界情況。

最後乙個測試點包含了一種特殊情況:當某人第一次編譯失敗,第二次編譯通過該題且得分為0分,最後總分也是0分,他的成績也應輸出。

原題鏈結

題解這道題雖然分值高,但有了前面題目練習並把思路捋順並不難,也剛好鍛鍊了使用vector的能力。不過這題需要細心,我提交了三次才過(t__t)。在牛客網上有一樣的題,可以看到自己不通過的樣例資料~

注意輸出要求,id要從小到大排列。

原題鏈結

[牛客網鏈結]

題解剛做完1080,這道題真的挺簡單哈哈哈~好像也沒什麼坑。

原題鏈結

題解我覺得應該歸為字串處理題。。。思路很清晰,在最後查詢時要利用好查詢是按照時間遞增這一條件,否則會出現超時。

原題鏈結題解

排序型別先刷到這啦,剩下的要等複試後再刷了~

剩下的排序題:1098、1101、1113、1125、1146、1153

刷題筆記 二 排序

1 氣泡排序 將最大值放到末尾,一直縮小範圍到第一位 2 排序演算法的穩定性是指經過排序之後,能使值相同的資料保持原順序中的相對位置不變 解析 穩定性,就是指,不亂排序,很有規矩,能按照排序的演算法執行,相異的資料排序正確,相同的資料之間的前後關係也能不會錯位3 常見的內部排序有 並非所有排序都必須...

刷題1 排序1

學python有一段時間了,刷題試試。題 給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的乙個字母異位詞。1.s anagram t nagaram 輸出true 2.s rat t car 輸出false 輸出true需要滿足的條件 1.字串的個數相等 2.元素一樣 故而我的想法是...

刷題(3) 排序(1)

注意 n指資料規模 k指 桶 的個數 in place指占用常數記憶體,不占用額外記憶體 out place指占用額外記憶體 冒泡,插入,歸併排序都是保證穩定性的,其他都不是 現代作業系統很少使用堆排序,因為它無法利用區域性性原理進行快取,也就是陣列元素很少和相鄰的元素進行比較和交換。快速排序是最快...