浙大PAT甲級 1111

2021-07-22 14:42:50 字數 767 閱讀 4726

通過兩邊的dij最短路演算法。path陣列記錄最短路中每個結點的前驅結點,第一遍dij以路徑的距離為主,如果相等則判斷時間最短。第二遍dij以路徑所花時間為主,如果相等則判斷路徑的結點數最小。如果兩邊dij演算法的路徑相同則合併在一起輸出,否則分開輸出。

ac**:

#include#include#include#include#include#include#include#include#include#include#include#define ll long long

#define inf 999999999

using namespace std;

int a[500][500];

int b[500][500];

int dist[500];

int sj[500];

int path[500];

int mark[500];

int num[500];

int main()

/*for(int i=0;iv1;

v1.push_back(en);

tmp=en;

while(path[tmp]!=-1)

if(v==v1)

}else

printf("\n");

printf("time = %d: ",sj[en]);

printf("%d",v1[0]);

for(int i=1;i%d",v1[i]);}}

}

浙大pat甲級 1024

可用3個vector來進行處理,先將輸入的數字都壓入到第1第2個vector中,從i 0到k迴圈判斷是否為對稱數,如果不是對稱數則將其與倒轉數相加,並將得到的每一位數加入到第三個vector的頭部,並將新的第三個vector重新賦值給第一第二,直到該數為對稱數或i k結束迴圈。ac include ...

浙大PAT甲級 1039

一開始想到用map 但是會超時。由於題目中的名字由三個字母和乙個數字組成,因此有26 26 26 10種,因此可以用hash來做。使用setmm max max 26 26 26 10 5 同時輸入名字時也應改為char s 5 scanf來輸入。ac include include include...

浙大PAT甲級 1045

這個題考查dp,最長非遞減序列。dp i 表示以a i 為結尾的最長非遞減序列。初始化dp為1,狀態轉移方程為dp i max 1,dp j 1 j特別注意 沒有出現在最喜愛的序列中的數,其優先順序為0,在考慮最長非遞減序列時,應直接忽略0。ac include include include in...