ABC200
結果
A
B
C
ノーペナ完で,パフォは,rating変動はででした.
考察
A問題
基本的には(で割った商)を出力すればOK.
ただし,の倍数の年だけ例外で,この時はで割った商をそのまま出力する.
B問題
やるだけといえばやるだけ.
で割り切れるならで割って更新します.
で割り切れないなら,倍してを足します.文字列の連結とか難しいことは考えずに計算でできます.
C問題
差がの倍数になるペアは,ともにで割った余りが等しいことに着目します.
例えばであれば,で割った余りは全てです.
]に出てくる数字をで割った余りで分類し,それぞれの余りに対して問題のような選び方が何通りあるかを計算します.
上の例で言えば,のペアは,のペアはのペアはです.
つまり,ある余りになるような ]がnum個あるとすると,問題を満たすようなペアの数は
です.
感想
C問題で沼りました.累積和かな?って1回思ったらそこから抜け出せなかったですね...
1ヶ月半振りのABCでした.
久しぶりのコンテストで激冷えを覚悟していましたがこの程度でよかった()
少しずつ感覚を取り戻していきます.
XOR World
ABC121-D "XOR World"
提出コード
考察
着目したのは以下の性質です.
任意の偶数に対して,
大雑把な証明をしておきます.
任意の偶数に対して,の最下位ビットはです.
一方でを考えると,最下位ビットがで,その他のビットはと等しいです.
よって,とのXORをとるとになることがわかります.
上の性質を用いると,からの中に偶数から奇数に切り替わるタイミングが何回あるか(numとおきます)を考えることで計算量を大幅に小さくできます.
また,num回ののXORについて,numが奇数であればになり,numが偶数であればになります.
私はが偶数か奇数か,が偶数か奇数かの通りの場合分けをしました.
(i) が奇数で,が奇数
からまでが繰り返し部分で,numです.
つまり,num回だけをXORした後,余ったをXORすればOK.
(ii) が奇数で,が偶数
からまでが繰り返し部分で,numです.
つまり,num回だけをXORした後,余ったとをXORすればOK.
(iii) が偶数で,が奇数
からまでが繰り返し部分で,numです.
つまり,num回だけをXORするだけでいいです.
(iv) が偶数で,が偶数
からまでが繰り返し部分で,numです.
つまり,num回だけをXORした後,余ったをXORすればOK.
以上により,で解けました.
感想
久しぶりの精進ツイートです.新生活でバタバタしていました.
この問題のdiffはですが,今この問題が出たらぐらいな気がしますね.
模範解答がきれいすぎて感動しました笑
ABC196
結果
A
B
ノーペナ完で,パフォは,rating変動はででした.
考察
A問題
を出力すればOK.
ただ,自分はコンテスト中はそれで本当にいいのか一瞬で判断できませんでした.
符号の問題があったりでそこを考察するよりは全探索をすることを優先しました.
よって,とを全探索し,の最大値を随時更新していくことでAC.
B問題
入力は非常にでかい可能性があるので,まずはstrigで受け取ります.
先頭から順番に出力していき,途中で ' . ' を読んだら終了します.(もちろん ' . ' は出力しない)
途中に ' . ' がなければ最後まで出力し続ければOK.
感想
最近では群を抜いてパフォが低かったです.
C問題なんで思いつかなかったんだろう...?
ちなみに,ABC194と195も参加していましたが記事を書くのが面倒で更新していませんでした()
Coloring Dominoes
ARC081-D "Coloring Dominoes"
提出コード
考察
以下,のドミノを縦ドミノ, のドミノを横ドミノと呼びます.
問題の性質より,ドミノの並べ方は,縦ドミノそのもの( 以下 ),または横ドミノを縦に並べたもの( 以下 )のいずれかを横に並べていくことになります.
(ちなみに,vertical:垂直,horizontal:水平から名前を付けました)
ドミノの色の塗り方は,基準となるドミノがかか,そしてその左隣がかか,で4通りあります.
以下の場合分けでは,例えばあるドミノがで,左隣がのとき,のように書くとします.
(i) のとき
が連続しているので,色の塗り方は2通りです.
(左隣のの色以外を選ぶ2通りになります.)
(ii) のとき
に対して,の色の塗り方は2通りです.
(左隣のの色以外の2色のうち,どちらを上に塗るかで2!=2通りになります.)
(iii) のとき
に対して,の塗り方は1通りです.
(既に左隣で2色使ってしまっているためです.)
(iv) のとき
に対して,の塗り方は3通りです.
(これは説明がめんどいので省略...)
また,に対してであれば番目はで,そうでなければ番目から番目にかけてがであることがわかります.
1つ前のドミノがかかどちらかを持っておき,上の場合分けの数字をかけ算しながらmod をとっていくことでで解けます.
感想
久しぶりにこれぐらいのdiff(これは1165)の問題をやりました.
記事の更新も久しぶり.
そこまで難しくないという気持ちがあって,最近のdiffに換算したら700ぐらいな気がします.
一発ACできてよかった.
CADDYコン(ABC193)
結果
A
B
C
D
WAの完で,パフォは,rating変動はででした.
B問題でWAしたってマジ...?
考察
A問題
を出力すればOKです.
算数できなさすぎて割合計算で分もかかりましたw
B問題
最終的な出力をする変数をansとして,始めはデカい数字を入れておきます.(私はlong longで変数をいつも宣言しているので で初期化しました.)
分刻みでスヌケマシンは売れてゆくので, の について, であればスヌケマシンは売れ残っていると見なせます.
このとき,現在の最小料金ansよりもが小さければansをで更新します.
なぜかめちゃくちゃ問題文の読み間違えをしていました.
始めは,残っているスヌケマシンを一番多く買ったときの料金を求めていましたw
C問題
の形の数はとても少ない気がするので,片っ端から列挙します.
の調べる範囲ですが,が最小であることを考えればです.
このようなそれぞれのについて,を超えるまで乗,乗,...としてmapやsetなどのデータ構造に突っ込んでいきます.
普通に数えていくと,とのように重複カウントがあるのでmapなどで管理しないといけません.
D問題
これは超絶ゴリ押しました.
からのカードがそれぞれ何枚残っているかを持っておきます.
何枚残っているかをsumとでもおくと,高橋くんと青木くんの裏向きのカードの組み合わせの総数はsum sumです.
次に,高橋くんの枚目と青木くんの枚目の数字が何かで全探索します.(最大でもたぶん通り)
つまり,からのカードがそれぞれ何枚残っているかを更新しながら場合の数を頑張って計算します.
例えば,高橋くんの裏カードがだと仮定して,青木くんの裏カードとしてが条件を満たすとします.ここで,の残りの枚数だけ条件を満たす場合の数があります.
高橋くんが選んだカードの残り枚数を減らしておく必要があること,そしてそのカードを見終わったら残り枚数を元に戻しておく必要があります.
得点の計算方法ですが,気合です.
感想
B問題までで時間がかかったりWAを出したりめちゃくちゃ焦りましたが,Dまで解けてよかった...
コンテスト中に緑diff問題を解けたのでとても嬉しいです.
Darker and Darker
AGC033-A "Darker and Darker"
提出コード
考察
イメージとしては,既にある黒いマスから四方にどんどん黒いマスが広がっていくかんじです.
これにはキューを使ったBFSがよさそうです.
まずは,初期段階で黒いマスを全てキューにpushします.
キューの先頭要素に対して4近傍を見て,それが与えられたマスの外でなければキューにpushします.ただし,既に見たマスをキューに入れると同じ処理を永遠に繰り返すことになるので,各マスについて既に訪問したかを持っておく配列を作るといいでしょう.
また,問題文の1回の操作でどこまで黒いマスを広げられるかということが大事です.例えば,マス(2, 3)の右側(2, 4)を黒く塗ったとします.そして(2, 4)の右側(2, 5)も黒く塗ると,これは2回操作をしていることになります.
これを解決するには,各操作の初めにキューの大きさを見ておいて,その回数だけキューの先頭要素を見ていけばOKです.もちろんキューには後ろからどんどん次の探索点が追加されていきますが,操作初めのキューの大きさだけ見ることで,その操作でpushした点を見ることはないです.(次の操作で見ることになります.)
イメージ図は以下です.
数字がのところは,回目の操作であることを示しています.
目がチカチカしないように,までは色をつけておきました.
感想
とてもBFSみを感じる問題でした.
修行の成果が出た気がします.
(ちなみに1回WAしましたw あと凡ミスで1回TLE)
ABC191
結果
A
B
ノーペナ完で,パフォは,rating変動はででした.
考察
A問題
距離では,mからmの間はボールは消えています.
よって,ならば青木君はボールを打てます. 打てません.
それ以外は打てません. 打てます.
B問題
]を初めから見ていき,でなければ出力していけばOK.
C問題
縁取りをしていましたがうまくいかなかった...
左下のマスから反時計回りに近傍を見て,訪問済みでなければ進んでいく.
進む方向を保持しておいて,向きが変わったら答えをする.
原因は判明していて,いわゆる一筆書きできないような黒いマスなら詰みます.
感想
早解きに関して言えばB < Aでしたね.Bの方がシンプルな分早くできました.
C問題こんなのアリですか...
まぁ緑から落ちなかったしいいか