置頂

我的 VPython 教學文件 (HackMD 版本)

VPython 教學文件目錄 安裝及測試 基本語法 等速度直線運動 自由落下 終端速度 水平抛射 使用For迴圈計算水平抛射資料 斜向抛射 圓周運動 簡諧運動 單擺 木塊彈簧系統分離 重力及簡諧 行星運動 相疊木塊 雙重簡諧運動 一維彈性碰撞 ...

熱門文章

2025年3月10日 星期一

ZeroJudge 解題筆記:f442. 老鷹抓小雞 Eagle

作者:王一哲
日期:2025年3月10日



ZeroJudge 題目連結:f442. 老鷹抓小雞 Eagle

解題想法


我將交換小雞、老鷹編號的部分拆開來寫,這樣會比較容易看懂。

Python 程式碼


使用時間約為 27 ms,記憶體約為 3.8 MB,通過測試。
import sys

for line in sys.stdin:
    n = int(line)  # 小雞數量
    arr = list(map(int, input().split()))  # 小雞編號
    e = int(input())  # 老鷹編號
    q = int(input())  # 遊戲回合
    tar = list(map(int, input().split()))  # 每回合抓到的小雞編號
    for t in tar:  # 從 tar 依序讀取編號
        i = arr.index(t)  # t 在 arr 中的索引值
        c = t  # 暫存下一回合老鷹編號
        arr[i] = e  # 更新 arr
        e = c  # 更新 e
    print(*arr)  # 印出答案


C++ 程式碼


使用時間約為 3 ms,記憶體約為 360 kB,通過測試。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int n;  // 小雞數量
    while(cin >> n) {
        vector<int> arr (n);  // 小雞編號
        for(int i=0; i<n; i++) cin >> arr[i];
        int e, q, t; cin >> e >> q;  // 老鷹編號,遊戲回合,每回合抓到的小雞編號
        for(int i=0; i<q; i++) {  // 執行 q 次
            cin >> t;  // 讀取抓到的小雞編號
            int j = find(arr.begin(), arr.end(), t) - arr.begin();  // t 在 arr 中的索引值
            int c = t;  // 暫存下一回合老鷹編號
            arr[j] = e;  // 更新 arr
            e = c;  // 更新 e
        }
        for(int i=0; i<n; i++) cout << arr[i] << " \n"[i == n-1];  // 印出答案
    }
}


沒有留言:

張貼留言