SRM 648

@evimaさんがwrite回のSRMです。後半ではDiv 1とDiv 2の境界についても議論されています。
0
前へ 1 ・・ 30 31
nico_shindannin(診断人) @nico_shindannin

もう少しでKitayutaMart通りそうだけど、なぜかN=K=1でTLEしてしまうのじゃ…。自分のPCだと、結果も正しいし、変なこともしてない気がするけど…

2015-02-20 03:14:35
nico_shindannin(診断人) @nico_shindannin

やっと、KitayutaMartとおった。長い道のりだった。ちなみに、間違いは1<<(-1)ってやってるところがあった…これはあかんのじゃ。

2015-02-20 03:20:45
nico_shindannin(診断人) @nico_shindannin

KitayutaMartの簡単な解説。まずN番目の小さい値が、2の累乗で区切った階段状の列の何列目に来るかを求める。階段列rに含まれている商品の数は2のr乗個、Kを超えるとK個ずつになるので、何列目に来るかは簡単に求められる。 pic.twitter.com/npqEuqp2zU

2015-02-20 04:04:38
拡大
nico_shindannin(診断人) @nico_shindannin

今回やっかいなのは、列4以降のK個で区切られてしまうパターン。簡単にするために、列4以降はすべて列4に置き換えてかんがえてよい。なぜなら、列が増えても大小関係は変わらないから。

2015-02-20 04:07:25
nico_shindannin(診断人) @nico_shindannin

あとは、列の中でx番目に小さい商品の価格が分かれば良い。これは直接求めるとTLEなので、二分探索で求める。商品の価格y以下の商品が何個あるかを計算するのも時間がかかるので、以下の2の累乗の倍数ごとに分けた、青枠ごとにまとめて数える。 pic.twitter.com/vwfExBoQ9w

2015-02-20 04:16:09
拡大
nico_shindannin(診断人) @nico_shindannin

ただし、2の0乗の部分は、K以下の数しか使えないのは注意。例えば14以下の商品個数は 14/(2^2)-8/(2^2)+14/(2^1)-8/(2^1)+min(14,K)-8で求められる。そんなかんじじゃ。

2015-02-20 04:19:19
nico_shindannin(診断人) @nico_shindannin

あ、xっていきなり出てきたけど、x=N-(含まれる列以前にでてきた商品の個数)なので、含まれる列さえ決まれば求めることができます。

2015-02-20 04:22:52
いしかど @ISIKADO

SRM648のmed通した。2回もシステムテストで落ちてつらい。

2015-03-03 02:05:09
いしかど @ISIKADO

考えるの少し時間かかる系のやつだけど、それでも提出数少ない気がする?

2015-03-03 02:06:12
前へ 1 ・・ 30 31