hirohirohirohirosのブログ

地方国立大学に通う情報系学部4年

競技プログラミング

Atcoder ABC262 振り返り

A - World Cup【AC】 条件を満たすまで+1し続けます.4で割った余りが2が条件なので最大でも3ループで終わることが分かります. Y = int(input()) while Y%4 != 2: Y += 1 print(Y) B - Triangle (Easier)【AC】 隣接リストを作ります.辺が存在するかはinで…

Atcoder ABC260 振り返り

A - A Unique Letter【AC】 Counter関数を使いました.今回の入力popだとCounter({'p': 2, 'o': 1})が得られます.後は,items()で値を取りだし,要素が1つしか無いものを表示します. import collections s = list(input()) c = collections.Counter(s) for…

Atcoder ABC257 振り返り

A - A to Z String 2【AC】 文字と数字を変換するにはordとchrを使います.Aはunicodeで65なのでそれに1ずつ+していくとBCD...と文字と用意できます. N, X = map(int, input().split()) ans = "" for i in range(26): ans += chr(65+i)*N print(ans[X-1]) …

Atcoder ABC259 振り返り

A - Growth Record【AC】 X歳後は身長は伸びないのでX N, M, X, T, D = map(int, input().split()) if X <= M: print(T) else: for i in range(X-M): T -= D print(T) B - Counterclockwise Rotation【AC】 (a, b)をd度回転させた点(a', b')を求めます.d度…

Atcoder ABC257 振り返り

A - A to Z String 2【AC】 文字と数字を変換するにはordとchrを使います.Aはunicodeで65なのでそれに1ずつ+していくとBCD...と文字と用意できます. N, X = map(int, input().split()) ans = "" for i in range(26): ans += chr(65+i)*N print(ans[X-1]) …

Atcoder 灰diff埋め ABC-like004~ABC-like006 振り返り

ARC-like005 B - Contests【AC】 1問目が3つ,2問目が5つ,3問目が2つ存在したとき開催できるコンテストの最大値は2回です.なぜなら,異なるコンテストの間で問題の重複があってはいけないので,3つコンテストを開催しようとすると3問目が重複してしまうた…

Atcoder 灰diff埋め ABC-like001~ABC-like003 振り返り

ARC-like001 B - Different Distribution【AC】 一見難しそうなパズルのように見えて,当たり前の事実を積み重ねるだけで答えが求まる問題でした. クラスでテストを行い,b点を取った人が上位a番目という情報がN個あった時,クラスの人数としてあり得る最大…

Atcoder ABC256 振り返り

A - 2^N【AC】 pythonで累乗は**とします. print(2**int(input())) B - Batters【AC】 マスをAAで表し,そのマスにコマが置かれていることを1,置かれていないことを0として表します.AA[j]が1ならAA[j]を0にしてAA[j+A[i]]を1にします.AA[j+A[i]]が4以上…

Atcoder 灰diff埋め AGC025~AGC054 振り返り

AGCも全て埋め終わって100%!と思いきやまだ-like系の問題が多く残ってました…… AGC037 A - Dividing a String【AC】 解説ではDPを使うパターンと漸化式を使うパターンが紹介されていましたが,ここではそのどちらでもない方法で解きます.(と言っても考え方…

Atcoder 灰diff埋め AGC002~AGC024 振り返り

AGC021 A - Digit Sum 2【AC】 N 以下の正の整数の10進法での各桁の和の最大値を求める問題でした.0からN順に各桁の和を求めていって最大値を出す方法では,N 総和の最大値なので,単純に考えると沢山9がある数字が最大値のように思います.実際にこれは正…

Atcoder ABC255 振り返り

A - You should output ARC, though this is ABC.【AC】 言われた通りにします.atcoderは大抵1-indexなので,入力された数字は-1する事を忘れないようにします. R, C = map(int, input().split()) A = [] A.append([int(i) for i in input().split()]) A.a…

Atcoder 灰diff埋め ARC131~ARC136 振り返り

ARCの灰埋め全て終わりました!次はAGCです. ARC130 A - Erase by Value【AC】 始め,最大値を取り除いて表示するだけで良いだろうと思い提出しました. N = int(input()) A = [int(i) for i in input().split()] max_a = max(A) ans = [] for a in A: if a…

Atcoder ABC254 振り返り

純粋に気付いたら夜9時過ぎてて泣く泣くバチャ参加でした…… A - Last Two Digits【AC】 インデックスにマイナスを付けると後ろから数える事が出来て便利です. N = input() print(N[-2:]) B - Practical Computing【AC】 N まず,[[0]+[1 for _ in range(i)]…

Atcoder 灰diff埋め ARC116~ARC130 振り返り

ABCのdiffとARCのdiff全然難易度が違う気がする…… ARC130 A - Remove One Character【解説AC】 全てのSiの文字列を生成し,その個数を記録しておいて,nCrで求める手法はTLEになります. SiとSjが等しいと言うことに対し,他にどのような性質があるかを考え…

Atcoder 灰diff埋め ARC056~ARC113 振り返り

整数問題には苦手意識があるのでより多くの精進をしていきたいです. ARC110 A - Redundant Redundancy【AC】 N N=3について考えると,2*3=6に1を足した7は2で割っても3で割っても1余ります.何故なら,6は2でも3でも割り切れるため,それに1を足せば余りは1…

Atcoder ABC253 振り返り

1WAに延々苦しめられるの久しぶりにやりました…… A - Median?【AC】 bが中央値の時,a,b,cを数値順に並べた時にbが真ん中に来るため,それをif文にかければ良いです. a, b, c = map(int, input().split()) if a <= b <= c or a>= b >= c: print("Yes") else…

Atcoder ABC252 振り返り

Cでてこずりまくったため,ACはできましたがレートは上げられませんでした… A - ASCII code【AC】 chr関数で文字コードから文字に,ord関数で文字から文字コードに変換できます。 print(chr(int(input()))) B - Takahashi's Failure【AC】 max関数を使い食べ…

Atcoder 灰diff埋め ARC041~ARC055 振り返り

ABC048 A - 階段の下【AC】 AとBの符号が同じ時と異なるときで返す値を変える問題です.負の値の時-1を,正の値の時-1を返すsign関数を定義し,if sign(A)==sign(B)とすればよいことが分かります. sign関数は,例えばシンプルにif x 引数の絶対値を返す,つ…

Atcoder 灰diff埋め ARC021~ARC040 振り返り

ARC035 A - 高橋くんと回文【AC】 "*"という文字は任意の文字に置き換えられるとしたとき,Sは回文であるか求める問題です. SとSを反転した文字列を左から順に一文字ずつペアとして見ていきます.全ての文字のペアについて,同じ文字であるか"*"が含まれて…

Atcoder ABC251 振り返り

AからCまでを8分50秒で解くことで1806位パフォ1103になりました.レートも緑まであと5なので頑張ります. A - Six Characters【AC】 与えられる文字列は1から3であり,全て6の約数です.繰り返す回数は6/len(s)で求められます. s = input() print(s*(6//len…

Atcoder 灰diff埋め ARC001~ARC020 振り返り

ARCも意外と灰diff多いですね…… ARC004 A - 2点間距離の最大値 ( The longest distance )【AC】 このコードで提出したところMLEが出ました.メモリの使いすぎというエラーです.このようなエラーは初めて出たので困惑しましたが,これはこの問題が初期のコン…

Atcoder ABC250 振り返り

A - Adjacent Squares【AC】 場合分けしてO(1)で解くことも出来ますが,早解きでミス無く書くのは難しいので(1敗)H, W マスの数は最大でも100しかないので,全てのマスについて辺で隣接しているかチェックすれば良いです.チェックは問題文にある定義を使え…

Atcoder 灰diff埋め ABC148C~ABC214C 振り返り

ABCの灰diffが全て埋まりました!次はARCを埋めていきます. ABC148 D - Brick Break【AC】 ぱっと見難しい問題に見えます.しかし,1,2,3...の順番さえ守っていれば,どのレンガを壊しても答えは変わらない事に気付けば簡単になります.今残す数字をkと記憶…

Atcoder 灰diff埋め ABC120C~145C 振り返り

ABC120 C - Unification【AC】 無駄にテクニカルな解法で解いたけれど,解説でよりシンプルな方法に気付いたパターンです. cou[0]=赤色のボールの数,cou[1]=青色のボールの数とします.Sの左から順にボールを入れていき,ボールの数に合わせcouの値を上下…

Atcoder 灰diff埋め ABC083C~100C 振り返り

灰diff埋めは簡単な問題が多いためテンポ良く大量に解いていこうと思っていましたが初期の問題は意外に難しい問題が多く…… ABC086 C - Traveling【AC】 迷路の問題を解くように幅優先探索で解こうとすると,t=10^5もあるため間に合いません.この移動は同じ…

Atcoder 灰diff埋め ABC079C 振り返り

atcoder problemsを見て,灰diffで未ACの問題を解いていきます.灰diffは簡単な問題も多いので,一部を抜粋して ABC079 C - Train Ticket【AC】 見るからに冗長なコードになっているのが残念です. S = input() A, B, C, D = int(S[0]), int(S[1]), int(S[2]…

Atcoder ABC249 振り返り

最近土日に用事が重なってリアルタイム参加出来てません…… A - Jogging【AC】 毎秒進むか停止するかを判断し,X秒までシミュレーションして進んだ距離が大きい方を表示します. A, B, C, D, E, F, X = map(int, input().split()) takahashi = 0 aoki = 0 for…

Atcoder ABC248 振り返り

A - Lacked Number【AC】 not inと書くことで,含まれていないときTrueが返ってきます. N = input() for i in range(10): if str(i) not in N: print(i) break B - Slimes【AC】 ドラえもんのバイバインの回を知っていれば,たとえK=2でも一瞬で10^9を超え…

Atcoder ABC186,177 振り返り

今までAtcoder Problemsを見て,一問もACしてないコンテストを選んでバーチャル参加してましたが,ついに今回でそのようなコンテストがなくなりました!次は灰diff, 茶diffを全て埋めます. A - Brick【AC】 割り算/という演算子だけでなく,//という演算子…

Atcoder ABC192,191 振り返り

A - Star【AC】 100で割った余りを求めることで,100から溢れた数を求めることが出来ます.これを100で引く事によって,あといくつで100に到達するかを求めることが出来ます. X = int(input()) print(100 - X%100) B - uNrEaDaBlE sTrInG【AC】 大文字判定…