ABC301 (2023/05/13)
〇A問題
おたふく.icon TとAの数をカウントしていき、先に半数以上に達した方を勝者にする。
TTT.icon 同点の際にどちらが先に勝ったのかを判定するのに苦戦しました。tako.iconさんの判定法は目からウロコでした、なるほど!
tako.icon数えただけです。同点の場合は最後にでできた人じゃないほうを出力。
まーす.icon恐らくマジョリティー。おたふく.iconさんと同じ。TとA2つカウントした。
yuichang.iconTとAの数をカウント、面倒だが数が等しいときはもう一度ループを回した
CarpDay.icontako.iconと同じ
TK.icon使ってみたかっただけのrfind。引数打ち間違いでWA。そんなコードでサンプル通らないでよ
yan.iconTの場合は+1、Aの場合は-1でやれば一つの変数で置けてきれいなコードになると思って使った
Yuto.icon S.count でTとAを数える.個数が異なるなら,引いていって先に0になったら勝ち
〇B問題
おたふく.icon i番目とi+1番目の値の絶対値の差が1の時は解にi番目の値を追加、1より大きい時は差が+になるか-になるかで場合分けをしてfor文を回して良い感じに追加。
TTT.icon 方針はおたふく.iconさんと同じです。
tako.iconたぶんおたふく.iconさんと同じです。
yuichang.iconおたふく.icon さんと同じ
まーす.icon2重forを使った。前の項i-1と今の項iを比較して、その分をネスト内のforで回す回数とした(言いたいことは分かってくれるハズ)。おたふく.iconさんと同じかな......?
CarpDay.icon前の値を覚えておいて,差が1でなければ1になるまで埋める.Pythonらしい,リストの一部分をまとめて挿入する方法を身に着けたい.
TK.icon次との差が1なら今の値を追加、そうでないならその差を埋めるように追加という具合に新しいリストを作成。
yan.iconおそらく皆さんと同じ方法ですがfor in range(n)だとfor内でnを変化させてもすでにrangeの回数は決まっているためか配列に格納されている最後の値までたどり着かなかった。無理やりwhile文を作って完成させた
Yuto.icon Aに追加するんじゃなくて,新しい配列ansを作る方針だとindexの処理が考えやすかった.
〇C問題
おたふく.icon WAが2つだけ出現!!!!!!!!!!! コーナーケースが未だに見つからない。時間を置いてから探そう...。やり方を一新して再提出したらAC。WAの原因は未だ分かっていないので気が向けば探すか...。
Yuto.icon > otafukuへ.S_need[c] += 1じゃなくて,S_need[c] += (td-sd)じゃない?
TTT.icon コンテスト終了直後に間違えているのを覚悟で提出。SとTの差集合がatcoderに含まれているならYesのようにしたので、AC22,WA11。おそらくSやTの中に"aaa"などの連続する文字が含まれないときに限り正しく動いているのだと。
tako.icon辞書を使ってそれぞれの文字について出てきた回数を数えた感じです。
yuichang.icon連想配列を用いて出現回数を記録。途中WAが2つだけ出たが修正した。自分は@@@ xxx のような時にWAが出てた。tにatcoder以外の文字列が何個入っているか、sに含まれている@の数を照らし合わせて適切に処理
まーす.iconSとTに含まれるアルファベット及び@の個数を各々カウント。S,Tにおいて{a,t,c,o,d,e,r}をforでまわし、@の個数からSとTの差分を引いて@の数が負になればNoとした。たとえば、Sにaが4個、Tにaが1個含まれるならば、Tの@の数を3個除いた。
CarpDay.iconおたふく.iconさんと同じくWA2個だけ出現!!!!!!!やり方変えてAC.多分tako.iconと同じ.
TK.iconいろいろやったけど、結論は自分で変数増やしすぎて管理しきれていないだけだった。片方にしかない文字を数えてそれがatcoderであり、置き換えきれる場合にyesとした。
Yuto.icon 実際に並び替えるのは面倒なので,個数だけで判定した.
〇D問題
おたふく.icon おおよその方針は合ってそうだと思ったが、WAが思ったよりも多かった。何が違うのか考えないと。
tako.icon提出するごとにちょっとずつWAが減っていきましたが、あとどこを直せばいいのかわかりません。そもそも方針があっているのかがわかりません。
yuichang.icon全くわからないのでEを見た。
まーす.icon今これを解いてる。今週はこの問題が限界かな......。提出する度にWAパターンが出るタイプの問題。
CarpDay.icon簡単そうだと思ったのに,何度やってもREが取れず時間切れ.コンテスト後2時間かけて21回の投稿でやっとAC.構築力不足,かつ,解説の「楽な実装」を思いつかなかった発想力不足.
Yuto.icon 二分木的な感じでSの先頭から順に決めて行こうとしたけど,最後まで5WAが消せなかった.下の画像はコンテスト中の考察メモです。
https://scrapbox.io/files/64647ff4bd3140001b8808fc.jpg
Yuto.icon evimaさんの解説「楽な実装」と全く同じことをやっていたはずなのになぜ...?
〇E問題
yuichang.iconスタート、ゴール、お菓子マスが20個しかないので全てからbfsして距離を記録、bit全探索で経路を列挙して距離、取得できるお菓子の個数をそれぞれ求めたがTLE、計算量が理解できていない
CarpDay.iconコンテスト中,見ることもできず...
おたふく.icon巡回セールスマン問題の一種。少し解説も読んで問題を理解したが、実装に悪戦苦闘。やっとの思いで実装が終わったと思ってもTLEの嵐。pypy3で実際にACを通しているコードを参考に改良を加えてみても、どこで時間を食っているのかを見つけるのが難航。やっとの思いで発見したのはまさかのfloat('inf') から 10**18に変更することでAC。結構な時間短縮されているので驚き。C++に憧れる。ただ、それ以外でもコードのどこが悪かったのかよく分からないまま。
Yuto.icon D問題がいけそうだったので,これ以降見てない.ちらっと見た感じ,BFSで到達可能判定して,ワ―シャルフロイド(DP)的な感じでお菓子を最大化するのかな?
〇F問題
CarpDay.iconDPでできそう,とコンテスト翌日に取り組む.数時間かけてやっと完成したのに入力例2が合わない,と思ったら「1文字目と2文字目が同じ」という条件を見落とすミス.この条件をどうしてもDPで実装できず解説を読む.コードを読んでやっと理解.丸一日潰れた...