ABC335

发布时间 2024-01-11 17:32:11作者: V_Melville

T1:2023

模拟

代码实现
s = input()
print(s[:-1]+'4')

T2:Tetrahedral Number

模拟

代码实现
#include <bits/stdc++.h>

using namespace std;

int main() {
    int n;
    cin >> n;
    
    for (int x = 0; x <= n; ++x) {
        for (int y = 0; y <= n; ++y) {
            for (int z = 0; z <= n; ++z) {
                if (x+y+z > n) continue;
                cout << x << ' ' << y << ' ' << z << '\n';
            }
        }
    }
    
    return 0;
}

T3:Loong Tracking

可以用 vector 来维护龙的移动,但是插入 vector 的头部效率很慢,为了解决这个问题,可以考虑将 vector 的首尾颠倒,那么询问 \(2\) 的答案就是 vector 中的第 \(n-p\) 个点,这里的 \(n\) 是指 vector 的大小

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;
using P = pair<int, int>;

const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, 1, 0, -1};

int main() {
    int n, q;
    cin >> n >> q;
    
    vector<P> ps;
    rep(i, n) ps.emplace_back(i+1, 0);
    reverse(ps.begin(), ps.end());
    
    map<char, int> mp = {
        {'L', 0}, {'R', 2}, {'U', 1}, {'D', 3}
    };
    
    rep(qi, q) {
        int type;
        cin >> type;
        if (type == 1) {
            char c; cin >> c;
            int v = mp[c];
            auto [x, y] = ps.back();
            ps.emplace_back(x+dx[v], y+dy[v]);
        }
        else {
            int p; cin >> p;
            auto [x, y] = ps[ps.size()-p];
            cout << x << ' ' << y << '\n'; 
        }
    }
    
    return 0;
}