• 検索結果がありません。

占い

N/A
N/A
Protected

Academic year: 2021

シェア "占い"

Copied!
22
0
0

読み込み中.... (全文を見る)

全文

(1)

JOISP2012 Day3

Fortune Telling(占い)

解説

(2)

問題の概要

カードがM行×N列に並んでいる

長方形領域をひっくり返すのをK回繰り返

最後に表になっている枚数を求める

(M,N:10^9 K:10^5)

(3)

愚直な解法

M×Nの配列を用意してシミュレーション

(または上/左から1行ずつ見ていく)

→ 時間:O(MNK),空間:O(MN)

       or O(min(M,N))

       ↑

        パソコンが壊れる

(4)

テクニック1:座標圧縮

使う座標だけを持って 座標をつけ直すと座標が 高々2Kくらいに収まる (某本参照) i 0 1 2 3 4 5 6 7 x[i] 0 2 4 8 10 11 13 N

(5)

部分点解法

たくさんの長方形に(mod 2で)1を足すには, 4カ所に1を書いて最後にまとめて

各行で累積和 → 各列で累積和 すればよい. ((2*K)^2の配列をintで取るとMLEなので注意)

(6)

部分点解法’

実は上の行から処理すれば メモリには1行だけ持っておけばいいので 空間計算量はO(K)でもできる (1を書く場所たちを上から→左から順にソートしておく)  時間:O(K^2) 空間:O(K^2) or O(K)        → 30点

(7)

やるべきこと

上から1行ずつ見ていって ・長方形の上/下辺が来た ら区間をflipする ・各行で0がいくつあるか 見る

(8)

やるべきこと

上から1行ずつ見ていって ・長方形の上/下辺が来た ら区間をflipする ・各行で0がいくつあるか 見る

(9)

やるべきこと

上から1行ずつ見ていって ・長方形の上/下辺が来た ら区間をflipする ・各行で0がいくつあるか 見る

(10)

やるべきこと

上から1行ずつ見ていって ・長方形の上/下辺が来た ら区間をflipする ・各行で0がいくつあるか 見る

(11)

100点を取るには

0,1(表/裏)の列があるとき,

・指定した区間をflipするクエリ ・全体で0(表)が何個あるか見る

(12)

テクニック2:セグメント木

・ノードに区間が対応して いる二分木 ・ノードに様々なデータを 持たせると色々できる ・某本参照

(13)

テクニック2:セグメント木

この問題では各ノードに ・対応する区間にある裏の数 ・子孫の反転処理を遅延していることを表すフラ グ を持たせると出来る.

(14)

クエリの処理の仕方

区間[4,7]を反転するク エリ

(15)

クエリの処理の仕方

(16)

クエリの処理の仕方

add(根, 4, 7)は

・add(左の子, 4, 4) ・add(右の子, 5, 7) を呼び出す

(17)

クエリの処理の仕方

同様に繰り返す. ただし,ノードに対応す る区間全体を反転すると きはそこで止める     ↓ 呼び出しはO(log K)回

(18)

クエリの処理の仕方

・区間全体を反転すると ころではフラグをtrue にしておく.

(19)

クエリの処理の仕方

次のクエリ[3, 6]

(20)

クエリの処理の仕方

・途中でフラグがtrueに なっているノードが あったら先に子にフラ グを伝播しておく

(21)

クエリの処理の仕方

・あとはさっきと同様に ボトムアップに各ノー ドに対応する区間の裏 の個数を求める ・各操作 O(log K)  → 全体 O(K log K)

(22)

得点分布

0 0 1010 2020 3030 4040 5050 6060 7070 8080 9090 100100 0 0 1 1 2 2 3 3 4 4 5 5 6 6

参照

関連したドキュメント

2Tは、、王人公のイメージをより鮮明にするため、視点をそこ C木の棒を杖にして、とぼと

従って、こ こでは「嬉 しい」と「 楽しい」の 間にも差が あると考え られる。こ のような差 は語を区別 するために 決しておざ

ロボットは「心」を持つことができるのか 、 という問いに対する柴 しば 田 た 先生の考え方を

する愛情である。父に対しても九首目の一首だけ思いのたけを(詠っているものの、母に対しては三十一首中十三首を占めるほ

断面が変化する個所には伸縮継目を設けるとともに、斜面部においては、継目部受け台とすべり止め

回転に対応したアプリを表示中に本機の向きを変えると、 が表 示されます。 をタップすると、縦画面/横画面に切り替わりま

が66.3%、 短時間パートでは 「1日・週の仕事の繁閑に対応するため」 が35.4%、 その他パートでは 「人 件費削減のため」 が33.9%、

その他 2.質の高い人材を確保するため.