第一次踏上 ICPC 的舞台
多少有些緊張,讓我的表現沒有正常的水準
當下 pM 我竟然用 Dijkstra 解,而不是 BFS
然後直接在 pF 燒雞四小時
結果賽後回去寫 pF 發現簡單到靠杯
一直懷疑自己到底為什麼當時沒想到
後來在宿舍裡靜下心慢慢寫成功寫出 6 題,一整個超難過
算了,還是繼續刷題,希望明年能夠拿牌吧
計畫在這一年把 cses 刷完,然後開始拿 codeforce 刷考古練手
另外我覺得衣服明明顏色就很好看,但上面印台中市政府經濟發展局整個就遜掉了
還有那個袋子到底有誰會用到,還超難收的,差評
絕對不會忘記第一名的新加坡隊伍有拔頭髮怪人頭髮越少戰力越強
附上題組連結 點我前往 codeforce
pA 程式碼#
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define INF LONG_LONG_MAX/1000
#define WA() cin.tie(0)->sync_with_stdio(0)
#define all(x) (x).begin(), (x).end()
#define int long long
#define PII pair<int, int>
signed main() { WA();
int a, b, c;
cin >> a >> b >> c;
if (a > b) swap(a, b);
if (b > c) swap(b, c);
if (a > b) swap(a, b);
if (c-a >= 10) cout << "check again\n";
else cout << "final " << b << '\n';
}
pB 程式碼#
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define INF LONG_LONG_MAX/1000
#define WA() cin.tie(0)->sync_with_stdio(0)
#define all(x) (x).begin(), (x).end()
#define int long long
#define PII pair<int, int>
signed main() { WA();
int n, m, l;
double x, y; cin >> n >> m >> l >> x >> y;
vector<tuple<int, int, int>> event(n); // position, type, id
for (auto &[s, id, t] : event) {
cin >> s >> t;
t = min(l, t);
id = -1;
}
for (int i = 0; i < m; i++) {
int p; cin >> p;
event.pb({p, 1, i});
}
sort(all(event));
vector<double> ans(m);
double mn = INF;
for (auto &[a, type, b] : event) {
if (~type) ans[b] = min(mn, (l-a)/y);
else mn = min(mn, (double)(b-a)/x+(double)(l-b)/y);
}
for (auto &i : ans) cout << fixed << setprecision(14) << i << '\n';
}
pE 程式碼#
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define INF LONG_LONG_MAX/1000
#define WA() cin.tie(0)->sync_with_stdio(0)
#define all(x) (x).begin(), (x).end()
#define int long long
#define PII pair<int, int>
signed main() { WA();
int t; for (cin >> t; t--;) {
string s, a, b; int n, m; cin >> s >> n >> m;
a = b = s; n--, m--;
while (n--) next_permutation(all(a));
while (m--) next_permutation(all(b));
int ca, cb; ca = cb = 0;
for (auto &i : a) for (auto &j : b) if (i == j) cb++;
for (int i = 0; i < s.size(); i++) if (a[i] == b[i]) ca++;
cout << ca << 'A' << cb-ca << "B\n";
}
}
pF 程式碼#
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define INF LONG_LONG_MAX/1000
#define WA() cin.tie(0)->sync_with_stdio(0)
#define all(x) (x).begin(), (x).end()
#define int long long
#define PII pair<int, int>
signed main() { WA();
int n; cin >> n;
vector<int> v(n), pre(n+1), suf(n+1);
for (auto &i : v) cin >> i;
for (int i = 1; i <= n; i++) pre[i] = __gcd(pre[i-1], v[i-1]);
for (int i = 1; i <= n; i++) suf[i] = __gcd(suf[i-1], v[n-i]);
int ans = 0;
for (int i = 1; i < n; i++) ans += min(pre[i], suf[n-i+1]);
cout << ans << '\n';
}
pK 程式碼#
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define INF LONG_LONG_MAX/1000
#define WA() cin.tie(0)->sync_with_stdio(0)
#define all(x) (x).begin(), (x).end()
#define int long long
#define PII pair<int, int>
int mx[] = {0, 1, 1, 1, 0, -1, -1, -1}, my[] = {1, 1, 0, -1, -1, -1, 0, 1};
signed main() { WA();
int n, m, k; cin >> n >> m >> k;
vector<vector<char>> v(n, vector<char>(m));
vector<int> cnt(10000001);
for (auto &i : v) for (auto &j : i) cin >> j;
for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) {
if (!isdigit(v[i][j])) continue;
cnt[v[i][j]-'0']++;
for (int dir = 0; dir < 8; dir++) {
char last = '_';
int nx = i, ny = j, now = 0, buf = 1, cur = v[i][j]-'0';
while (1) {
nx += mx[dir], ny += my[dir];
if (nx < 0 || nx >= n || ny < 0 || ny >= m) break;
if (isdigit(v[nx][ny])) {
cur = cur*10+v[nx][ny]-'0';
if (now+buf*cur > 1000000) break;
cnt[now+buf*cur]++;
}
else {
if (last == '+' || last == '*') break;
if (v[nx][ny] == '+') now += cur*buf, cur = 0, buf = 1;
if (v[nx][ny] == '*') buf *= cur, cur = 0;
}
last = v[nx][ny];
}
}
}
for (int i; k--;) cin >> i, cout << cnt[i] << '\n';
}
pM 程式碼#
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define INF LONG_LONG_MAX/1000
#define WA() cin.tie(0)->sync_with_stdio(0)
#define all(x) (x).begin(), (x).end()
#define int long long
#define PII pair<int, int>
signed main() { WA();
int n, m, k; cin >> n >> m >> k;
vector<int> v(n+1);
vector<vector<int>> g(n+1);
for (int i = 1; i <= n; i++) cin >> v[i];
while (m--) {
int a, b; cin >> a >> b;
g[a].pb(b);
g[b].pb(a);
}
queue<PII> q; vector<int> ans(k+1), vis(n+1);
q.push({1, 0}); int cnt = 0;
while (q.size()) {
auto [id, d] = q.front(); q.pop();
if (vis[id]) continue;
vis[id] = 1;
ans[v[id]] = d;
for (auto &u : g[id]) q.push({u, d+1});
}
for (int i = 1; i <= k; i++) cout << ans[i] << ' ';
}
