原创 pat 1017 Queueing at Bank(23分)

實質上是一個有截止時間的多任務調度問題,多個窗口,多個顧客,一個等待隊列,截止時間爲17點,算平均等待時間。思路是進行模擬,以i來模擬時間一秒一秒,每一秒都遍歷所有窗口,若有窗口空閒且有顧客在等待,就服務。差一個點沒過,不知是何種情況。需

原创 pat 1040 Longest Symmetric String

題意要求最長迴文串,遍歷一遍,找到迴文串最中間的那個字母(BAB中的A或ABBA中的第一個B),再以該字母爲中心,往左右拓展,若能相等,則相加。就算樣例可以過,也要測試一下其它簡單的情況,如AAA, BB。 要注意的數據點有: aaa  

原创 pat 1041 Be Unique

太簡單的水題了,直接標記即可。 AC代碼: #include<stdio.h> int a[100005]; int c[100005]={0}; int main() { int n; //freopen("C:\\Document

原创 pat 1044 Shopping in Mars(16分)

嚴重超時。只過了第1,4個點,得12分,以後再說。  後來換了思路,還是隻得了16分,只有第2點錯誤,第4點超時,想不出不過的case。 //23:46 16分 #include<stdio.h> const int NUM=1000

原创 pat 1021 Deepest Root

題目是要判斷圖是否都連接構成樹,求使樹高最大的所有的根,實際上求圖上兩點間最大距離。我的思路是依次取各點進行DFS,記下各點可達的最大深度,再在其中取最大值,若各點的最大深度等於該值,該點爲所求。若最大深度不等於n-1,則不是一棵樹,再用

原创 pat 1037 Magic Coupon

簡單題,先將兩數列從小到大排序,再遍歷個數少的數列,使得 短數列:[----]               [++++] 對    應:|    |               |         | 長數列:[---------][++

原创 pat1016 Phone Bills

題目不難,但輸入輸出數據多,格式多,需要些許思維和注意。花費了非常多時間,也算有些收穫。首先,卡在輸入輸出上,string類型只能用cin,不能用scanf,printf ,若要用printf,只能用printf("%s",str.c_s

原创 pat 1030 Travel Plan

雖然是30分題,其實是簡單題,只怪自己不清晰,想到什麼dijskra和bellmanford的去了,浪費了不少時間。後來直接用DFS解決。 //1030 23:00 #include<stdio.h> const int NUM=505;

原创 pat 1039 Course List for Student(23分)

簡單題,定義一個map<string, vector<int> >即可。將對應學生的選課進行排序,但最後一點總是超時,換成scanf和printf,還是超。以後再看吧。 代碼: //1039 20:28-21:12 #include<io

原创 pat 1025 PAT Ranking

簡單題,只是一開始用vector<student> rank[NUM]用得不太熟,鞏固了一下sort的compare函數寫法。得抓緊時間做題了,以後博客先略寫,有空再來補充。 #include<iostream> #include<ve

原创 pat 1035 Password

估計是pat裏最水的水題了,只要將對應的字母更換即可。 AC代碼: //1035 15:50 - 16:16 #include<stdio.h> #include<string.h> const int MAXN=1005; struct

原创 pat 1031 Hello World for U

簡單摸擬題,找出最大的n1即可。 AC代碼: 簡單模擬 //1031 0:10-0:37 #include<stdio.h> #include<string.h> int main() { int n1,n2; ch

原创 pat 1033 To Fill or Not to Fill(值得重點回顧)

有點難度的貪心題,貪心策略有點繞,得靜下心來分析,同時得增強自己的代碼能力。實質是汽車加油問題。 貪心策略:假設現在自己處於A站,要考慮的是A站要不要加油,加多少油的問題。找到下一個要加油的站B(距離A站cmax*davg範圍內的最便宜的

原创 pat 1034 Head of a Gang

題意是要求總共有幾個集合,每個集合權重最大的是哪個,以及每個集合中結點個數。一開始老想用並查集來做,發現實現起來很困難。參考網上代碼,發現可以用DFS遍歷,數出每個分支的結點個數。其中map的迭代器的使用得注意。還有,若一個gang中同時

原创 pat 1032 Sharing

找兩條鏈表的公共結點,先遍歷其中一條,並且一一做訪問標記,再遍歷第二條,一旦訪問過就輸出結點值。結點值一開始一直用string來保存,用了map,太麻煩,最後一點超時了。參考網上程序,改用int型來保存,順利ac。有時需要的是思路的轉換。