以下の内容はhttps://zrkkkk.hatenablog.com/entry/2025/06/14/224242より取得しました。


ABC410

ABC375以来久々の全完で気分いいね ペナが酷い

ooooooo 87:29(3) 87位

Perf2400相当

F

Submission #66745318 - AtCoder Beginner Contest 410

H<=Wになるように適宜transposeする。

に1, .に-1を割り当てた配列の2次元累積和上でS(ul)-S(ur)-S(dl)+S(dr)=0 となる点を探索すればよい。

行を2つ選ぶ。つまりu,dを全探索する。列T[i]=S(ui)-S(di) をこのように定めると、T[x]=T[y]を満たすような(x,y)のペア数がそのままu,dを固定したときのl,r の選び方に対応する。残りはzero-sum-rangesをやればよい。

計算量はO(H2W)で相当ギリギリ、TLEを2回踏んだ。コンストラクタは遅い!

E

Submission #66749602 - AtCoder Beginner Contest 410

期待値DPとかと一緒で「この状態から出発したとき最大でどこまで倒せるか」を状態として持つようにする。

C

Submission #66755122 - AtCoder Beginner Contest 410

dequeはランダムアクセスできるんだよな~→k回ローテーションする必要があり、終了...... 大人しく先頭の位置 mod Nを管理

D

Submission #66756074 - AtCoder Beginner Contest 410

値の候補が少ないので現在の地点と現在までの累計XORを持ってBFS

B

Submission #66758363 - AtCoder Beginner Contest 410

めんどい

A

Submission #66758853 - AtCoder Beginner Contest 410

Pythonとかだとうまく書ける?

G

Submission #66768019 - AtCoder Beginner Contest 410

言い換えると区間の重なりであって最も外側が互いに重ならないようなものを2つ選ぶ問題になる。

区間が最大で何重になっているかをまず調べる。これは終点でソートした後Segment Treeで区間内の最大を管理していけばできる。

あとは区間を1つ/2つ選び重なりの合計を最大化する問題になるが、これもSegment Treeでできる。




以上の内容はhttps://zrkkkk.hatenablog.com/entry/2025/06/14/224242より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14