AtCoder Beginner Contest 269 参加記録
コンテストページ:
UNICORN Programming Contest 2022(AtCoder Beginner Contest 269) - AtCoder
コンテスト中AC:A〜E
Fがあと一歩だったので、書いておきます。
F - Numbered Checker
長方形領域の列は以下の2つに大別されます。 ?には整数が入ります。
0 ? 0 ? 0 ? ...
? 0 ? 0 ? 0 ...
ここから0を抜いたものを考えます。
(1) 0 ? 0 ? 0 ?...
の場合
行数を、項数を、1行目の最初の値をとすると、以下の個の数列の和を求める問題となります。
それぞれ和以下のように考えます。
というわけで、は、個含まれ、です。
これを分離すると、残りの求めるべき和は、
となるので、長方形領域の求めるべき和は、
です。
(2) ? 0 ? 0 ? 0 ...
の場合
先ほどと全く同じです。
行数を、項数を、1行目の最初の値をとすると、求めるべき和は、
となります。
以上を求めれば、当初のクエリで求めるべき答えはです。 後は、各クエリの長方形領域におけるさえ求めれば答えを得ることができます。
まず、はに依らず、以下の通り計算できます。
その他は場合分けが必要です。
(1) の場合
0 ? 0 ? 0 ? ... ? 0 ? 0 ? 0 ... ...
というケースになります。
よって、
(2) の場合
? 0 ? 0 ? 0 ... 0 ? 0 ? 0 ? ... ...
というケースになります。
よって、
以上で各クエリをで解けます。
ちなみにコンテスト中は以下のミスで解けませんでした。
- にしてしまっていた。
- を逆にしていた。
- をとり忘れた。
Submission #34954104 - UNICORN Programming Contest 2022(AtCoder Beginner Contest 269)