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;
}