日本レジストリサービス(JPRS)プログラミングコンテスト2024(AtCoder Beginner Contest 339) の A/B/C 問題の解法 #ABC339
2024-02-09日本レジストリサービス(JPRS)プログラミングコンテスト2024(AtCoder Beginner Contest 339) の A/B/C 問題の解法。
実装はこちら atcoder/abc/301-400/339 · michimani/atcoder
A - TLD
\(S\) の各文字をを先頭から見ていき結合する。 .
が現れたら結合していた文字列を空文字列に戻す。最終的に残った文字列を出力する。
#include <iostream>
using namespace std;
int main()
{
string s;
cin >> s;
string ans = "";
for (auto c : s)
{
if (c == '.')
{
ans = "";
}
else
{
ans += c;
}
}
cout << ans << endl;
return 0;
}
提出 #49915057 - 日本レジストリサービス(JPRS)プログラミングコンテスト2024(AtCoder Beginner Contest 339)
B - Langton’s Takahashi
グリッドはトーラス状 = 上下左右の端はループしているので、移動時の座標に気をつけて順次移動しつつマスの色を変えていく。
#include <iostream>
#include <vector>
using namespace std;
using ui = unsigned int;
int main()
{
ui h, w, n;
cin >> h >> w >> n;
vector<string> g(h, string(w, '.'));
ui i = 0, j = 0;
char prev = 'U';
for (ui k = 0; k < n; k++)
{
if (g[j][i] == '.')
{
g[j][i] = '#';
switch (prev)
{
case 'U':
i = (i + 1) % w;
prev = 'R';
break;
case 'R':
j = (j + 1) % h;
prev = 'D';
break;
case 'D':
i = (i + w - 1) % w;
prev = 'L';
break;
case 'L':
j = (j + h - 1) % h;
prev = 'U';
break;
default:
// noop
break;
}
}
else
{
g[j][i] = '.';
switch (prev)
{
case 'U':
i = (i + w - 1) % w;
prev = 'L';
break;
case 'L':
j = (j + 1) % h;
prev = 'D';
break;
case 'D':
i = (i + 1) % w;
prev = 'R';
break;
case 'R':
j = (j + h - 1) % h;
prev = 'U';
break;
default:
// noop
break;
}
}
}
for (auto hh : g)
{
for (auto ww : hh)
{
cout << ww;
}
cout << endl;
}
return 0;
}
提出 #49938181 - 日本レジストリサービス(JPRS)プログラミングコンテスト2024(AtCoder Beginner Contest 339)
C - Perfect Bus
与えられる増減 \(A_1, A_2, \dots ,A_N\) を素直に足し合わていくと、その過程で値が \(0\) を下回ることがある。バスの乗客は \(0\) 人未満になることはないので、そのような場合は初期時点で少なくとも \(その値の絶対値\) 人の乗客が乗っている必要があることがわかる。 \(N\) 回分の増減チェックを行いながら、そのような乗客数を初期時点の乗客数に加えていくことで、最終的な乗客数を求めることができる。
#include <iostream>
using namespace std;
using ui = unsigned int;
int main()
{
ui n;
cin >> n;
long u = 0;
long adj_u = 0;
long init = 0;
for (ui i = 0; i < n; i++)
{
long a;
cin >> a;
u += a;
adj_u += a;
if (adj_u < 0)
{
init += abs(adj_u);
adj_u = 0;
}
}
cout << u + init << endl;
return 0;
}
提出 #49940623 - 日本レジストリサービス(JPRS)プログラミングコンテスト2024(AtCoder Beginner Contest 339)
comments powered by Disqus