前往
大廳
主題

2024/01/07 APCS實作題心得

懶洋洋的豪豬 | 2024-01-07 17:37:07 | 巴幣 0 | 人氣 181

【前言】
距離上次考APCS快一年了,之前報名CPE的時候順便報名這次的檢定,在五級分之前我大概有空就會一直報吧,是說12月中我才發現是期末考的前一天;w;
到考試場地時看到幾位學生在讀課本,我才想起來高中生將要迎來學測,你們要加油rrr

【主文】
一開始我預想對四題的時間分配是
第一、二題:30分鐘
第三題:60分鐘
第四題:60分鐘
但寫完後實際分配情況是:
第一題:15分鐘
第二題:25分鐘
第三題:50分鐘
第四題:60分鐘
前兩題花費時間比我想像的久,第三題也是寫得很慢,第四題有一些時間是盯著螢幕想解法。

題目說明與我的解題思路
第一題:
給定n位角色數值(攻擊力防禦力),找出其綜合能力(攻擊力^2+防禦力^2)第二名的角色數值。
我的想法:
把數值存到vector<pair<int,int>>裡,寫lambda降冪排序後輸出v[1]的數值。
第二題:
有一個m*n大小的蜂巢,其中每隔房間都是六角形,每個房間都有一個字母代表該房間的類型(可重複),攝影機一開始在左下角的房間中,輸入一些數字0~6代表接下來攝影機的移動方向,輸出每次移動到的房間類型以及類型數量。
我的想法:
建立二維陣列後照著移動方向操作,0~6對應的移動方向觀察題目給的圖片後能發現是上下左右以及左上、右下,照著步驟模擬一次並記錄過程,儲存到unordered_set中記錄類型數量。


第三題:
有一邏輯線路,分三層:輸入層、邏輯閘層、輸出層,要求根據題目給的電路、輸入數值、連接關係等資訊輸出從輸入到輸出經過最長路線上邏輯閘的數量(題目要求的是延遲,經過越多延遲越高),以及輸出層的結果。
我的想法:
輸入時我儲存點和點之間的連接關係,透過DFS取得最大延遲,輸出層結果則是透過拓樸排序來確保越前面的閘能先被計算。
第四題:
有一個長度n的陣列(1<=n<=100),每個數值的絕對值<1000,每次行動可將兩個相鄰的數值合併(相加),花費成本為兩者差距的絕對值(abs(a-b)),求合併到剩一個數值的最小花費成本。
我的想法:
一開始我想用動態規劃,後來去廁所回來後發現好像行不太通(也可能單純我笨),後來用二分搜+暴力能過範例測試資料,在剩10分鐘左右時寫完,但用範例測資過不了,修修改改後終於在結束前20秒繳交出去並通過範例測資,不過我想用這方法好像n太大時也會超時(我有用剪枝但感覺幫助不大)。

註:剛去ZJ上看有人提供區間DP的思路,看來這題沒了

【結尾】
這次的第三題如果是一年前的我肯定是解不出來的,拓樸排序我是在升大二暑假有接觸到,還好沒忘光,整體來講我覺得有比之前進步了,希望成績出來能有個四級吧,不過我還是會以五級分努力的.w.b
有錯誤請務必糾正,感謝~

2024/01/23更新:
最後成績是255分四級,看來還不夠細心,沒記配分所以不確定是錯哪題。

創作回應

春魚宮可
好強你還有花時間去考
2024-01-08 01:05:45
懶洋洋的豪豬
發現逼近期末時已經無法取消只好硬著頭皮上了
2024-01-08 01:09:46
Andy
請問已經是大學生了,還可以去考APCS?
2024-01-10 09:28:00
懶洋洋的豪豬
可以,我高中時候有幾次是優先開放給高中報名,應該是他們預計報名的人太多的話會優先開放給高中生,但其他年齡或不是學生也能報名,這次在等進入考場時旁邊有幾位像國小國中生。
2024-01-10 09:31:15
Andy
了解,謝謝你的回覆
2024-01-11 09:47:22

更多創作