エイシングプログラミングコンテスト2020参加記
2020/7/11に開催されたエイシングプログラミングコンテスト2020に参加しました。
今回の配点を確認すると、難易度はABC並というところ。ここ最近のABCの成績は2完終了続きなので、今回はそれ以上を目指していました。
現在用事で帰宅途中やけど、ギリギリ定時に参加できるかも。
— devgenjin77 (@devgenjin77) 2020年7月11日
レート落とさんように頑張ります。
エイシング プログラミング コンテスト 2020 - AtCoder https://t.co/t1RNYIqtmM
今回の結果
で、今回は3完で終了。ギリギリ2完を回避!
レートの方も一応上昇です。
なんとか3完達成でレート上昇。
— devgenjin77 (@devgenjin77) 2020年7月11日
次回も頑張ります。
devgenjin77さんのエイシング プログラミング コンテスト 2020での成績:3244位
パフォーマンス:823相当
レーティング:459→514 (+55) :)
Highestを更新しました!#AtCoder #エイシングプログラミングコンテスト2020 https://t.co/UGTjrrLYgP
振り返り
A問題
倍数の個数を勘定する問題。
制約が100までと小さいので、問題文のとおりLからRまでfor文で回して実装してAC。
B問題
配列の順番と中身がいずれも奇数である個数を数え上げる問題。
これも制約が100までと小さいので、問題文の通り実装してAC。
C問題
最近鬼門のC問題。
制約上、xを100までのループとして、y <= x,y <= zの条件で3重ループを回す全探索でいけるとの見込みで実装し、なんとかACできました。
とりあえずレート下げは回避できたかと、一安心です。
D問題
ここまでほぼゴリ押しの実装で通せましたが、この辺で限界がきました。
整数Xを2進数で表した時の1の個数で割り続ける操作が何回できるかという問題でしたが、制約上Xの最大値が2の20万乗ぐらい。最初の1回目の余りの取得ができればというとこでしたが、このへんの実装に詰まってしまい、この問題はパスすることに。
E問題
コンテスト中に問題文には目を通しましたが、解法が思いつかずでした。
コンテスト後、解説を参考にしてやっと解けましたが、前の方が好きなラクダと後ろのほうが好きなラクダそれぞれ独立で考えるというやり方に考えが至らずでした。
F問題
解法すら思いつかないが、ABCの600点問題とは思えないような難易度かと。。
今回の実績
レーティングは、ちょこっと上がりました。早く茶色抜けしたいのですが、グラフをみるとなんとなく停滞ムードが漂います。
総括
ゴリ押し実装のみで3完達成でした。今後はゴリ押しで解けない問題も中心に精進していきます。
ABC173 参加記
2020/7/5に開催されたABC173に参加しました。
前回は成績が悪く、あわや灰色転落の憂き目にあうかというところでした。
今回はなんとか3完以上の結果を出して、レート上昇を目指したいです。
参加します。前回2完だったので、3完がノルマ。
— devgenjin77 (@devgenjin77) 2020年7月5日
できれば4完以上目指します。
AtCoder Beginner Contest 173 - AtCoder https://t.co/V10pkyqqJa
今回の結果
で、、、
前回に続き2完終了。。ヽ(゚`Д´゚)ノ゚。ウワァァァン!!
今回もC問題解けずで2完。。精進しなおします。
— devgenjin77 (@devgenjin77) 2020年7月5日
devgenjin77さんのAtCoder Beginner Contest 173での成績:6053位
パフォーマンス:520相当
レーティング:453→459 (+6) :)#AtCoder #ABC173 https://t.co/EnPf2qtxwL
振り返り
A問題
今回もAは計算するだけ問題。特に詰まることなくAC。
B問題
特定文字列の出現回数を集計する問題。これも特に詰まることなくAC。
C問題
なんかうまい計算方法がありそうでなさそうな微妙な問題。
タテヨコの制約が最大6であることから、愚直に全検索して解答する問題だと判断したが、結局実装が追いつかずで提出すらできずでした。
コンテスト後の解説で、bit全探索の手法があることを初めてしりました。
今回を機に覚えておこう。
D問題
なんか法則性があるのかと思い、色々と検討したが結局コンテスト中に思いつかず。
最近カンが働かんなー。
E問題
多分でかい方から順に掛け算していって、後でマイナスを調整するのかなーという感じで検討。しかし、考えれば考えるほど対応が難しいケースが思いついてしまい、結局挫折しました。
F問題
まともに読む時間も残ってませんでした。後ほど解説を確認すると、実装自体は単純だったようです。
今回の実績
2完だったけど、なんとか茶パフォで凌げたので、結果レートはプラスでした。
ひー、あぶないあぶない。(^_^;)
総括
前回、今回と2完終了。もうこのまま一生上のランクに上がれないのかーと思ってしまいますが、なんとかめげずに精進していこうと思います。
Introduction to Heuristics Contest 参加記
2020/6/28に開催された、Introduction to Heuristics Contestに参加しました。
今まで参加してきたABCのように、入力に対して正解を出力するプログラムを作るのでなく、できるだけ良い解を出力するプログラムを作るコンテストだそうです。
正直この手のコンテストには、経験も何もない状態ですが、とりあえず勉強がてらということで参加してみました。
よくわかんないけど、勉強がてら参加します。
— devgenjin77 (@devgenjin77) 2020年6月28日
Introduction to Heuristics Contest - AtCoder https://t.co/9524K7SkuD
今回の結果
で、結果は以下の通り。1点しか取れずで終了となりました。
振り返り
一度A問題に目を通しましたが、とりあえず訳がわからんかったのと、入門者向けガイドということでB問題を案内されたので、Bから取り組むことに。
B問題
A問題の小問題のような感じ。スコア計算をするプログラムを書いてAC。
これで1点ゲットw
C問題
これもA問題の小問題。コンテスト日程を色々変更することによるスコアの推移を出力するプログラムを書いたが、実装がまずかったか、TLEを喰らってしまった。
とりあえず、残り時間も少ないし、1回はA問題提出したかったので、この問題はパス。
A問題
A - AtCoder Contest Scheduling
で、コンテスト残り30分ぐらいで取り掛かったA問題。
難しいことはよくわからんが、とりあえず各日ごとの満足度の最大値のコンテストを選んでおけば何点か取れるんじゃね?ってことで実装して提出してみましたが、なぜか結果0点を喰らってしまいました。
どこかバグってるんじゃねーか?と思い色々調べてみましたが、最低限アウトプットの仕様は守ってるハズということで、残り時間で2回ほど小改造したプログラムを提出したものの、結果はいずれも0点。
おいおい、ちょっと基準厳しすぎじゃね?とか言ってるうちに時間終了となりました。
今回の実績
今回のコンテストはratedでないので、レーティング変動はありませんでした。
総括
前提知識ほぼゼロの状態で参加しました。散々な結果でしたが、多少の経験が積めたのはよかったと思います。この手のコンテストで成績が出せる様に今回の問題を復習しようと思います。
ABC172 参加記
2020/6/27に開催されたABC172に参加しました。
前回のABC171では5完を達成し、やっと灰色を卒業しました。
今回は、次の緑色レート達成に向けて、さらにレーティング上げを目指したいところです。
参加します。今回は4完以上が目標。
— devgenjin77 (@devgenjin77) 2020年6月27日
AtCoder Beginner Contest 172 - AtCoder https://t.co/5HxKKKJkkX
今回の結果
で、、今回の結果は無念の2完終了でした。。。
灰色相当のパフォーマンスで、レーティング下げ。灰色転落するかと思いました。。
今回は残念な結果。次回に向けて精進します。
— devgenjin77 (@devgenjin77) 2020年6月27日
devgenjin77さんのAtCoder Beginner Contest 172での成績:7071位
パフォーマンス:291相当
レーティング:490→453 (-37) :(#AtCoder #ABC172 https://t.co/tAt32IeGCP
振り返り
A問題
計算するだけ問題。特につまるとこなくAC。
B問題
2つの同じ長さの文字列を比較し何箇所文字が異なるかを答える問題。
これも特につまるところなくAC。
C問題
問題をみて、机A、Bから、数字の小さい方を選び続ければOKやん、と思った問題。
Queueを使った実装をして、サンプルが通ることを確認後、意気揚々と提出したらWAを喰らいました。
で、よくよく考えたら、例えばAの方が数字が大きい場合も、その次に極端に数字が小さい本が連続するケースとかでまずいやん、と気づきました。
結局コンテスト中は上手い解法が思いつかずでしたが、終わってみれば基本的なしゃくとり法などで解ける問題でした。これが思いつかないのは、自分が実力不足だということですね。
D問題
素因数分解とかして約数の個数求めるのかと思ったが、まともに全て数について約数の個数を個別に計算してたら間に合わんやろということで、実装に悩みましたが、結局実装できずでした。
E問題
コンテスト中に問題文を読んだが、解法が全く思いつきません。
後でみると、包除原理を使って解く問題とのこと。これもこの機会に覚えるようにする。
F問題
で、このゲームの必勝法が存在する条件はなんなん??というところで考察がとまりました。
タイトルから察すればよかった、てことかいな?
今回の実績
前回やっと灰色卒業したのに、もう転落の危機を迎えましたw
総括
今回は、また自分の実力不足を痛感する結果でした。
次回に向けて、過去自分が解けなかった問題を中心に復習を行い、レベルアップを図っていこうと思います。
ABC171 参加記
2020/6/21に開催されたABC171に参加しました。
前回のABC170では、灰色卒業目前のところが400未満のパフォーマンスしか出せず、灰色卒業のおあずけをくってしまいました。今回こそ文句なしの灰色卒業と行きたいところです。
参加します。まずは4完が目標。
— devgenjin77 (@devgenjin77) 2020年6月21日
そして今回こそ灰色卒業!
AtCoder Beginner Contest 171 - AtCoder https://t.co/KvY7gBFnDc
今回の結果
で、結果は自分でも驚きの5完達成!
文句なしの灰色卒業です。
今回は初の5完で、文句なしの灰色卒業😆
— devgenjin77 (@devgenjin77) 2020年6月21日
次回も頑張ります!
devgenjin77さんのAtCoder Beginner Contest 171での成績:3250位
パフォーマンス:953相当
レーティング:380→490 (+110) :)
Highestを更新し、8 級になりました!#AtCoder #ABC171 https://t.co/z5crxsaFQQ
振り返り
C問題
C - One Quadrillion and One Dalmatians
前回、C問題でWAを何回かやらかしたので、今回はあえてC問題から着手することにしました。で、このC問題がなかなかの厄介な問題。
問題をみて、こりゃ10進数をAーZの26進数のように変換する問題かと考え、なんとかサンプルケースが通る実装をして提出したものの、結果はWA。。
色々なケースを考えて、ローカルでテストを繰り返した結果。どうも各桁を算出する際に毎回1を引いてけばうまくいくという結論に至り、なんとかACが取れました。
以下は実際に提出したコード。
https://atcoder.jp/contests/abc171/submissions/14565211
で、この問題だけで40分以上かかってしまいました。
A問題
入力された文字が大文字か小文字かを判別する問題。特につまるとこなくAC。
B問題
入力された数列から、小さいもの順に何個か足していく問題。これも詰まるとこなくAC。
D問題
数列が与えられ、数列内のある数全てを別のある数に置き換えたら、合計がどう変わるかを答える問題。
数字を添字にした配列を作り、数の個数を管理すれば計算量が抑えられるということに気付き、なんとかAC。
E問題
自分以外の全ての数字をXORした数が数列として与えられる。元の数列を答えなさいという問題。
あまり時間もないので、もう直感に頼るしかない。
たぶん入力の数列全部XORしとけば、なんか色々打ち消されて、そっから元の配列の各要素とそれぞれXORすればいいんじゃないだろうか。という雑な考察で実装してみたら、サンプルケースが通ってしまいました。
で、とりあえず提出したら、なんとACが取れました。完全にヤマカンです。
F問題
問題文に目を通すだけの時間はありましたが、カンで解ける様な問題ではなく、ここで時間切れとなりました。
今回の実績
参加6回目にして、やっと灰色卒業です。
総括
過去最高の5完達成となりましたが、どうも今回は難易度が以前と比べて低めだったようです。とはいえ目先の灰色卒業という目標は達成したので、次は緑を目指して頑張っていこうと思います。
AGC046 参加記
2020/6/20に開催されたAGC046に参加しました。
過去2回参加したAGCでは0完フィニッシュ。さらに灰色レートのため、レーティング対象外であり、およびでない感をひしひし感じるのですが、参加するだけならタダなので勉強がてら参加という感じです。
ま、今回は配点をみるとなんとか1完は行けそうな予感があります。
参加します。過去2回は0完だったけど、今回A問題が200らしいので、1完は行けそうw
— devgenjin77 (@devgenjin77) 2020年6月20日
AtCoder Grand Contest 046 - AtCoder https://t.co/B2ChiAeYzt
今回の結果
で、結果は予告どおりの1完で終了です。AGC参加3回目にして0完卒業!
灰色なんでレート更新なし。AGC3回目にして0完を卒業できたは個人的に嬉しい。
— devgenjin77 (@devgenjin77) 2020年6月20日
devgenjin77さんのAtCoder Grand Contest 046での成績:1828位#AtCoder #AGC046 https://t.co/f2jdxPHmSu
振り返り
A問題
気合を入れて臨んだA問題。初手からわけがわかりませんでしたw
ABCの200点とは難易度が段違いですww
0完終了の嫌な予感もしながら、検討に取り掛かります。
最初に三角関数使って動く座標を計算するやり方が思いついたが、なんか誤差とかの関係でドツボに嵌まりそう。。問題の雰囲気からして、単純な公式を当てはめれば解けそうな感じがするなーという感じで考えてました。
で、色々考えた挙句サンプルの解答、X=90でK=4、X=1でK=360から推察して、Xと360のGCDを求めて、360をそれで割ってみりゃいいんじゃね?ってことで組んでみたらなんとか一発でACしてくれました。
大分ギリギリでしたが、とりあえず今回の目標達成です。
B問題
ほとんどA問題で燃え尽きてるんですが、B問題も覗いてみました。
で、わかりませんでした。
特にどうすれば重複するケースを排除できるのかがわからん。もう少し精進が必要。
C問題
わかりませんでした。
D問題
わかりませんでした。
E問題
わかりませんでした。
F問題
わかりませんでした。
今回の実績
画像は前回の使い回し。レート更新の対象外のため、前回と変わらずです。
総括
今回は、ほんとギリギリで1完達成できました。
次回は2完以上!と言いたいとこですが、正直自分の実力では全然足りません。
あまりできないことをあれこれ考えてもしょうがないので、AGCの過去問にもぼちぼちと取り組む時間を作っていこうと思います。
ABC170 参加記
ABC170に参加しました。
前回のABCは4完だったので、今回も前回と同じ4完が目標。
前日の東京海上日動プログラミングコンテストでレーティング398まで上昇したので、今回の結果で灰色卒業は間違いないだろうなーと思っておりました。
参加します。灰色卒業まで後少し。
— devgenjin77 (@devgenjin77) 2020年6月14日
今回は4完以上が目標!
AtCoder Beginner Contest 170 - AtCoder https://t.co/DepSbrfzbn
今回の結果
で、終わってみれば目標未達の3完終了です。
しかも、C問題で相当WAをやらかしてしまい、今回は400未満のパフォーマンス。
灰色卒業は、おあずけとなりました。
3完で灰色卒業ならず。。無念。
— devgenjin77 (@devgenjin77) 2020年6月14日
devgenjin77さんのAtCoder Beginner Contest 170での成績:6839位
パフォーマンス:357相当
レーティング:398→380 (-18) :(#AtCoder #ABC170 https://t.co/Kmhy2XMNuM
振り返り
A問題
入力が5個あって、何個目に0があるかという問題。とくに詰まるところなくAC。
B問題
入力はX、Yの整数。鶴と亀が合わせてX匹、足は総数Y本となる鶴と亀の数の組み合わせが存在するかという問題。
ちょいと上手い解法がわからんかったので、愚直にIF文の分岐をたくさん使い、なんとかACまでこぎつけました。
C問題
整数Xと数列が与えられ、Xと絶対値が近い整数の内数列に存在しないものを探すという問題。
数値の上限値も小さいので、int[102]程度の配列を作って数列内の数字を添字にする要領で実装すればいいんじゃね?ってことで提出まで漕ぎ着けてみれば、これがWAの繰り返し。
そもそも絶対値が同じ解が複数ある場合に低い値を出すという条件を見落としてたり、解答が0になるケースの実装が怪しそうだったりとかで、もう色々直しながら提出してたら、結局5回もWAを喰らった後、やっとACが出せました。(なんか当てもんみたいになってしまったw)
D問題
整数の数列が与えられ、数列内の他のどの数字でも割り切れない数はいくつかを答える問題。
多分愚直にやるとTLE喰らいそうだから、ソートしてから評価すればもうちょい効率よくなるのでは?という感じでサンプルケースが通るコードを作ってみましたが、提出してみれば、結局TLE。。
コンテスト中は改善策が思いつかず、この問題はここで諦めました。
あとで解説をみてみれば、エラトステネスの篩の要領でやれば計算量が抑えられたとのこと。全く思いつかなかったなーと反省しました。
E問題
問題文読むと、普通に考えて実装めっちゃ重そうで、愚直にやるとTLE食らいそうな感じ。時間も残り少ないのでパス。
F問題
問題文をみただけで、BFSを使うやつやなー。ということで、BFSらしき実装をしてみましたが、すでに残り時間がほとんど無く、テストもできぬまま終了となりましたー。
今回の実績
Rated5回目にして、初のレート下げを経験してしまいました。
C問題でWAを繰り返したのがほんとに痛かった。
総括
今回はWAのペナルティーを多く喰らいすぎて、残念な結果になってしまいました。
2完、3完レベルだと、簡単な問題をどんだけ早く正確に解けるかという競争になりがちですね。次回からは提出前にできるだけテストしてから出すようにして、WAを喰らう回数を抑えるように心がけます。