ABC304 (2023/06/03)
https://atcoder.jp/contests/abc304/tasks
DDoS(?)ひどくて,判定に時間かかりすぎ!結局Unratedに...orz
〇A問題
CarpDay.iconindexとmin使って,Pythonらしいコードで作りました.回転は%で対応.
yuichang.icon配列を2個つなげると楽
tako.icon最小値の人を記録。個人的に最近ハマっているtryを使って配列外参照を防ぎました。
おたふく.icon 入力の受け取りに手間取ってしまい、A問題に時間をかけすぎてしまったのが無念。%を使って回転を対応。
yan.icon二次元配列の標準入力を今更ながら理解してきている
Kaplam.icon年齢の制限と人数の制限見間違えてWA出したものの年齢の上限10^9って何
yan.iconほんとそれなんですよね、年の上限くらいはあるだろうって予測してmin=1000にしたらあかんかったですわ
まーす.icon自分のPCもむっちゃ重くて時間かかった。方針としては、まずは最小のものを探しそこからカウントを始め、カウントがNになるまでwhileで回す。後の処理は%を用いた。
TTT.icon range(A_min_index, N)で出力した後、A_min_indexが0でない場合に限りrange(A_min_index)で出力しました。
CarpDay.iconA_min_index=0のときは,下のループ回らないからifで場合分けしなくても大丈夫ですよ~
Yuto.icon offset = p.index(min(p))として,print[i+offset]する
〇B問題
CarpDay.iconFor使って綺麗に書けそうと思ったが,確実に愚直に0の数間違えないように作成
yuichang.iconif文でやる
tako.iconやるだけ
おたふく.icon CarpDay.icon同様に丁寧にすべての条件を記述。
yan.icon桁数-2以下を%で排除した。len()でintの桁を読み込みたかったが、どうしてもうまくいかずlen(str())に気づくのに遅くなった
Kaplam.icon深く考えず間違えないように桁数入力するのを頑張った
おたふく.icona=999のとき、答えが出ませんよ(^0^)
まーす.icon敢えて、Nをintで受け取らないことにより、len(N)でNの桁数を数え、len(N)が3以下ならばNをそのまま表示。len(N)が3より大きいならば、Nに//をしてから、**を施した。
TTT.icon 10の i 乗として、i のforループでまとめただけで、あとは愚直に実装しました。切り捨ては10のべき乗で割った値をint型にキャストしたのち10のべき乗をかけました。
Yuto.icon 最初問題文を誤読していて,無駄に時間を浪費してしまった.スライス使って良い感じにやる
〇C問題
CarpDay.icon各人を点,各ペアがD以下なら枝を張るグラフを考える.人1からBFS.
yuichang.icon全ての人に対して距離がD以下かどうかを連結リストっぽくメモしておく。新しく人が感染したらqueueにその人を入れて距離D以下の全ての人を感染させる
tako.icon幅優先的なことをしました。感染していない人をsetで持って置き、どんどん消していく感じです。
おたふく.icon TLEの解消の仕方を思い付かず、時間をかけすぎてしまう。思い切って飛ばして次の問題に早々に移れるようにしたい。上三名の案を見て、その手があったか...となっています。
yan.icon再帰関数を使いたかったが、書き方が分からず時間内に解けなかった
Kaplam.icon感染済みの人を見つけたら全員の座標を見て近かったら感染、とやったらTLEが出たので以前感染済みとして周りを探した人は2回目以降探さないようにするようにしたらAC出せた
まーす.iconUnionFindの利用。人1と同グループの者にはYesを出力。それ以外No。
yan.iconコンテスト後に再帰を使う方法で解いてみたがTLEになってしまう
yan.icon再帰の部分ではなく、二重for(最大2000^2)を1/2し、中の計算を簡略化したらTLEは解消された。どうやらpythonは再帰の上限が環境によって決まっており、始めはREになったがその上限をsysで変更したことで再帰を多く繰り返すことができ、やっとこさACになった。
Yuto.icon 1番の人と繋がってるかをUnion Findで管理する.Pythonで提出したら2TLE,そのままPyPyで提出したら今度はmath.distが無いって怒られる.無駄に2ペナ貰ってしまった
〇D問題
yuichang.icon二分探索で頑張ったがWAとRE。ジャッジ遅すぎて萎え
CarpDay.iconX方向とY方向で二分探索.RE地獄から逃れられず,途中からTLE.TLEの理由に気付いて修正してAC(22:16に投稿して,ACになったのが23時過ぎ).REの理由がいまだに分からない...
CarpDay.iconケーキのピースに載っているイチゴの個数をstrawberry[x][y]として,0で初期化する方法でREやTLEになる.内側のリストを[0] * (B+1)とするとRE,[0 for _ in range(B+1)]とするとTLEです.両方ともTLEなら意味分かるが,前者がREの理由がよく分からん.おたふく.iconさん,調査協力ありがとう.
tako.icon二分探索で乗っている場所を探しました。全探索だとTLEしたのでイチゴの場所をキーとして辞書で個数を記録して出力しました。
おたふく.icon 二分探索で切り分けたどこのケーキに苺が載っているかを探す。最大値は恐らく大丈夫だと思いますが、最小値の計算時間を短縮させる術を見付けられず、TLEを解消できず...。また、バーチャルを行う時間が悪く、色々な邪魔が入り、悔しい結果に。
Kaplam.icon絶対TLEになると思いながらも頑張って理屈だけでも合わせたらやっぱり少しのACの他は全てTLEが出て悲しかった
CarpDay.iconAもBも2×10^5あるので,$ O(AB)になる二重ループを採用するとTLEの可能性が高くなりますよ.
Yuto.icon ぱっと見た感じ簡単そうに見えたけど,よく見るとけっこう大変.一旦とばしてEに行った.Eが解けて戻ってきた.座標がデカいので座標圧縮して,範囲内の個数をimos法で数えようとしてたけど,実装力が無さ過ぎて一生バグらせてた.
〇E問題
yuichang.iconDより圧倒的に簡単。union find。結んだらダメな頂点同士のleaderをsetで管理。過去最高順位だけどunratedなるかも??
CarpDay.iconこの勉強会メンバーにとっては簡単な問題かも.データ読み込み部分をコピペ使ったせいで2RE.読み込み部分は落ち着いて確認しよう.
tako.iconUnionFindを使ったもののREが取れず...理由もわからず...結局Unratedになったみたいで残念です。
CarpDay.iconREの理由,私と完全に同じです...(^^;
tako.iconまさかのデータ読み込み部分のミス...せっかくの時間内E問題正解のチャンスをこんなミスで逃してしまうとは...
おたふく.icon 言われたことをそのまま実装。これだけで大丈夫か?と思いつつも提出。すごくしょうもないミスをしていましたが、すぐに修正し無事AC。
まーす.iconUnionFindの利用。方針はyuichang.iconさんと同じ。
Yuto.icon ng_node_pairからng_group_pairを作成.後はUnion Find で判定する.これもPythonだとTLEで,PyPyで提出し直して無事にAC.
〇F問題
CarpDay.iconNの約数を列挙してMとして,高橋君が休みの日に対してMのMODを取り,青木君が出勤しなくて良い日が何日あるか数える.でもこの方法だとMの大きなときのパターンが,Mの小さなときのパターンを含む場合があり,それを除去することができず,サンプル3も通らずに終了.解説見たらあと少し考察が足りなかったことが判明.惜しい.
まーす.icon「Nの約数を列挙してMとして,高橋君が休みの日に対してMのMODを取り,青木君が出勤しなくて良い日が何日あるか数える」までCarpDay.iconさんと同じ。重複ケースを考えることが抜けていて、なかなかサンプルが通らずに苦戦。あと、MODとるの忘れてた。
Yuto.icon これ以降見てない
#ABC #UnionFind #二分探索