# 108 區賽 --- ## 1. 沒存下來 --- ## 2. 沒存下來 --- ## 3. 沒存下來 --- ## 4. 太簡單不想寫 --- ## 5. ```cpp= #include <bits/stdc++.h> using namespace std; struct coor{ int x; int y; }; int main () { char letter[5][12] = {{'0','0','0','0','0','0','0','0','0','0','0','0'}, {'0','Q','W','E','R','T','Y','U','I','O','P','0'}, {'0','A','S','D','F','G','H','J','K','L','0','0'}, {'0','Z','X','C','V','B','N','M','0','0','0','0'}, {'0','0','0','0','0','0','0','0','0','0','0','0'}}; string s; while (cin >> s) { coor start = {1,1}; bool c = false; for (int i = s.length()-3; i < s.length()-1; i++) { if (s[i] != 'e') { cout << -1 << endl; c = true; break; } } if (c) continue; for (int i = 0; i < s.length()-1-1; i++) { switch (s[i]) { case 'r' : if (start.x+1 > 11|| letter[start.y][start.x+1] == '0') break; start = {start.x+1,start.y}; break; case 'l' : if (start.x-1 < 0 || letter[start.y][start.x-1] == '0') break; start = {start.x-1,start.y}; break; case 'u' : if (start.y-1 < 0 || letter[start.y-1][start.x] == '0') break; start = {start.x, start.y-1}; break; case 'd' : if (start.y+1 > 4 || letter[start.y+1][start.x] == '0') break; start = {start.x, start.y+1}; break; case 'e' : cout << letter[start.y][start.x]; } } cout << endl; } } ``` --- ## 6. ```cpp= #include <bits/stdc++.h> using namespace std; int dp[50]; long long m, n; long long fs(int n) { if (dp[n] != -1) return dp[n]; dp[n] = dp[n-1] + dp[n-2]; return dp[n]; } int main () { memset(dp,-1,sizeof(dp)); dp[0] = 0; dp[1] = 1; int v; cin >> v; while (v--) { cin >> m >> n; for(int i = 1; i <= m; i++) { n = fs(n); } cout << n << endl; } } ``` --- ## 7. ```cpp= #include <bits/stdc++.h> using namespace std; vector<int> conect[100]; int n, center; int dis[100]; int main () { memset(dis,0,sizeof(dis)); int par, ch, ans = 0; cin >> n; for (int i = 1; i < n; i++) { cin >> par >> ch; conect[par].push_back(ch); conect[ch].push_back(par); } cin >> center; queue<int> num; num.push(center); while(!num.empty()) { int now_n = num.front(); num.pop(); for(int i = 0; i < conect[now_n].size(); i++) { int x = find(conect[conect[now_n][i]].begin(),conect[conect[now_n][i]].end(),now_n) - conect[conect[now_n][i]].begin(); conect[conect[now_n][i]].erase(conect[conect[now_n][i]].begin()+x); dis[conect[now_n][i]] = dis[now_n] + 1; num.push(conect[now_n][i]); } } int sum = 0, po; for (int i = 0; i < n; i++) { if (dis[i] > sum) { sum = dis[i]; po = i; } } cout << sum << " " << po << endl; } ``` --- ## 8. 正在寫 --- ## 9. 求助 --- ## 10. 求助 ---