ABC279参加記
4完32分 1317位
kokatsuさんのトヨタシステムズプログラミングコンテスト2022(AtCoder Beginner Contest 279)での成績:1317位
— kokatsu (@kokatsu_) November 26, 2022
パフォーマンス:1250相当
レーティング:1259→1258 (-1) :(#AtCoder #トヨタシステムズプログラミングコンテスト2022(ABC279) https://t.co/W7XPewgsir
レート--;
A問題
文字列の $S$ に含まれる (vの数) $+$ (wの数) $\times 2$を求める。
import std;
void main() {
string S;
readf("%s\n", S);
ulong res = S.count('v') + S.count('w') * 2;
res.writeln;
}
B問題
文字列$S$に$T$が含まれるかどうか。
import std;
void main() {
string S, T;
readf("%s\n%s\n", S, T);
writeln(S.canFind(T) ? "Yes" : "No");
}
C問題
$S$を90度回転した図形を$U$、$T$を90度回転した図形を$V$とする。 $U$と$V$をそれぞれソートして2つの図形が一致する場合、$S$の列を並び替えて$T$と等しくできる。
import std;
void main() {
int H, W;
readf("%d %d\n", H, W);
auto S = new string[](H), T = new string[](H);
foreach (i; 0 .. H) readf("%s\n", S[i]);
foreach (i; 0 .. H) readf("%s\n", T[i]);
auto U = new dchar[][](W, H), V = new dchar[][](W, H);
foreach (i; 0 .. H) {
foreach (j; 0 .. W) {
U[j][i] = S[i][j];
V[j][i] = T[i][j];
}
}
U.sort, V.sort;
writeln(U == V ? "Yes" : "No");
}
D問題
三分探索を用いて、高橋くんが地面に到達できる最も早い時刻を求める。
import std;
void main() {
long A, B;
readf("%d %d\n", A, B);
real a = A.to!real, b = B.to!real;
real f(long x) {
real g = x.to!real;
return b * g + a / sqrt(g+1);
}
long l, r = A;
while (r - l > 2) {
long u = l + (r - l) / 3, v = r - (r - l) / 3;
if (f(u) < f(v)) r = v;
else l = u;
}
real res = min(f(l), f(l+1), f(r));
writefln("%.10f", res);
}