大學期間專案做了不少,而在演算法題方面還是個小白。藉著考研機會,把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指占用額外記憶體 冒泡,插入,歸併排序都是保證穩定性的,其他都不是 現代作業系統很少使用堆排序,因為它無法利用區域性性原理進行快取,也就是陣列元素很少和相鄰的元素進行比較和交換。快速排序是最快...