Entries

スポンサーサイト (この記事を編集する[管理者用])

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/818-cd982e34
この記事にトラックバックする(FC2ブログユーザー)

SPOJ 861 - Counting inversions [SWAPS] (この記事を編集する[管理者用])

Source

SPOJ 861 [SWAPS]

問題概要

250000要素以下の整数列が与えられる.
各要素は1以上50000以下.
10000回以下次の操作を繰り返す問題.
 i番目の要素をjに変更して,変更後の整数列の転倒数を求める.

解法

最初の数列の転倒数を計算しておいて,後は,要素を変更したことによって転倒数がいくら変わるかを計算していく.
最初の転倒数を計算するのはFenwick treeを使えば良い.
要素を変更して,どのぐらい転倒数が変わるかは,平方分割しておいて,各ブロックでFenwick treeを構成しておくなど.
平方分割するときは,Fenwick treeの計算が重いので,ちょうど平方で分割するよりは適当に重みを付けて分割した方が速い.

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/818-cd982e34
この記事にトラックバックする(FC2ブログユーザー)

Appendix

Recent Articles

ブログ内検索

Ads


(プライバシーポリシー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。