原创 ccf csp認證 201912-4 區塊鏈

思路:一道模擬題,參考了大佬們的代碼,目前嘗試了bfs直接暴力,(把當前要擴展的鏈放到搜到的點上),80分,會超內存。 可以改成在詢問時處理所有請求,並生成結果隊列,能用引用的地方儘量用引用(不然很容易超時)。 還有對於題意,我剛

原创 PAT甲級 1092 To Buy or Not to Buy (20 分)(模擬)

題目鏈接:https://pintia.cn/problem-sets/994805342720868352/problems/994805374509498368 思路:直接用數組記錄出現次數判斷即可。 代碼: #include

原创 pat甲級 1119 Pre- and Post-order Traversals (30 分) (二叉樹的後序和先序遍歷求中序遍歷)

題目鏈接:傳送門 思路:這個題是通過二叉樹的先序遍歷和後序遍歷推中序,但是先序和後序是無法唯一確定一顆二叉樹的,爲什麼呢?首先設兩個序列爲pre[n] , 和 post[n] , 先序的第一個節點pre[0]和後序最後一個節pos

原创 PAT甲級 1050 String Subtraction (20 分)(模擬)

題目鏈接: https://pintia.cn/problem-sets/994805342720868352/problems/994805429018673152 思路:記錄一下s2中出現過的字符即可。 代碼: #inclu

原创 pat甲級 1033 To Fill or Not to Fill (25 分) (思維 貪心)

題目鏈接:傳送門 思路:本來想dp,然後得了11分,因爲沒有考慮在前一個加油站可以加滿油的情況。 下來說貪心解法:首先每個位置取最小的油價保存,然後在計算時分兩種情況,設當前位置爲t。 (1)前方有價格更低的加油站p,直接選取這

原创 pat甲級 1067 Sort with Swap(0, i) (25 分) (思維)

題目鏈接:傳送門 思路:自己的瞎搞的假算法得了8分。。(這裏就不貼了),然後看了題解,對於序列中的數字a[i],必定有數佔用了他原來的位置,存在一條佔用鏈:如:i 佔用 j的位置,j佔用k的位置,k佔用i的位置。(佔用鏈一定是一個

原创 pat甲級 1102 Invert a Binary Tree (25 分)(二叉樹遍歷)

題目鏈接:傳送門 思路:忘了invert是反轉的意思,然會寫了代碼對不上樣例。。這個題直接用結構體存儲二叉樹,中序直接dfs,層序直接bfs即可。 代碼: #include <bits/stdc++.h> using names

原创 P2184 貪婪大陸(線段樹 or 樹狀數組)

題目鏈接:傳送門 思路:一開始一直想使用線段樹保存染色信息。。然而發現這種做法非常困難,,然後看了題解,使用樹狀數組或者線段樹維護在位置x的區間起點數量前綴和suma[n]和區間終點數量的前綴和sumb[n]即可 , 比如一段區間

原创 PAT甲級 1068. Find More Coins(揹包dp)

題目鏈接:傳送門 思路:用01揹包的模板可以直接判斷是否有可行解,然後是記錄字典序最小的答案序列,需要以貪心的思想先排序,以從大到小的順序選取物品,這樣保證輸出的結果最前面的物品最小。還有就是要用二維數組進行路徑記錄。 代碼: #

原创 pat甲級 1062 Talent and Virtue (25 分) (模擬)

題目鏈接:傳送門 思路:按照題意直接排序即可。 代碼: #include <bits/stdc++.h> using namespace std; struct node { string name; int vg , t

原创 pat甲級 1016 Phone Bills (25 分) (字符串處理,模擬)

題目鏈接:傳送門 思路:我的思路是把一天內所有時間點的花費記錄在數組中,如果通話起止時間是在同一天,直接減就可以了,如果不是同一天有兩種情況,只相隔一天的把第一天和第二天的費用相加即可,相隔兩天以上需要算中間完整的24小時的費用。

原创 PAT甲級 1002 A+B for Polynomials (25 分) (模擬)

題目鏈接:傳送門 思路:之間每一項對應相加即可,注意如果係數是零就不用輸出這一項了。 代碼: #include <bits/stdc++.h> using namespace std; const int maxn = 10

原创 pat甲級 1038 Recover the Smallest Number (30 分)

題目鏈接:傳送門 思路:讓任意兩個子串所構成的串字典序最小即可,比價條件是a + b < b + a,測試數據可能水了,用錯誤的排序方法也能滿分,兩種代碼都貼在下面。 代碼: (正解) #include <bits/stdc++.

原创 PAT甲級 1039 Course List for Student (25分)

題目鏈接:傳送門 思路:因爲姓名字符串只有4位,可以使用26 * 26 * 26 * 10個vector來存儲不同學生的選課信息,但是隻用map是可以卡過去的,加上cin.tie(0)和cout.tie(0)。 代碼:(卡過的。。

原创 PAT甲級 1091 Acute Stroke (30 分) (bfs)

題目鏈接:傳送門 思路:題目是找出大小大於t的1的聯通塊,然後求這些塊大小的和。 所以直接bfs模擬即可。(讀題讀了好久。。) 代碼: #include <bits/stdc++.h> using namespace std;