Hatena::Grouptopcoder

hotpepsiの練習帳

2014-04-03

SRM 603

| 23:49

Div1 Easy (250) MaxMinTreeGame

問題

  • 頂点と辺からなる木が与えられる
  • それぞれの頂点には点数がある
  • 2人のプレーヤーが交互に辺を一つ選び除去する
  • 分離された一方を残し、もう一方を消す
  • 残りが頂点一つになったとき、その頂点の点数がスコアとなる
  • 先手が点数を最大化、後手が点数を最小化しようとするとき、先手の点数の最大値を求める

方針

結果

x-- 0pt 442nd/608 rating 1301 -> 1247 (-54)

思考力不足


http://togetter.com/li/612995

トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20140403

2014-03-30

SRM 602

| 21:12

Div1 Easy (250) TypoCoderDiv1

問題

  • LowerはTypoCoderに参加している
  • レーティング2200未満が水色、2200以上が茶色である
  • 一回の増減が配列Dで与えられる
  • 増えるか減るかのどちらかを選べる
  • 0未満にはならない
  • 2回連続で茶色になりたくない
  • レーティングの変化回数の最大値を求める

方針

結果

o-- 101.85pt 530/789 rating 1298 -> 1301 (+3)

DP力が上がっている気がするが、一年間の実績では1327 -> 1301で進歩してなかった。


http://togetter.com/li/608415

トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20140330

2014-03-23

SRM 601

| 22:22

Div1 Easy (250) WinterAndPresents

問題

  • りんごとみかんが入っている袋がいくつかある
  • それぞれの袋からX個取り出す
  • りんごとみかんの数の組み合わせが何通り可能かを求める

方針

Div2 Easy (250) WinterAndMandarins

問題

  • みかんの入った袋がある
  • K袋選ぶ
  • みかんが入っている個数の差の最小値を求める

方針

Div2 Medium (500) WinterAndCandies

問題

  • 何種類かのキャンディーがある
  • キャンディーの種類は正の整数
  • K個取り出す
  • 1からKまでの種類が揃うのは何通りか求める

方針

  • 同じ種類で別のキャンディーは別物として数えるっぽい
  • 種類ごとに配列cにカウントしておく
  • 3種類の場合c[1]×c[2]×c[3]通り
  • 全体としてはc[1]+c[1]×c[2]+c[1]×c[2]×c[3]...となる
  • 歯抜けになる場合は、途中のカウントがゼロになるので問題ない
  • K=1から足してかけて...としていく
  • https://github.com/firewood/topcoder/blob/master/srm_6xx/srm_601/WinterAndCandies.cpp

結果

o-- 118.42pt 513rd/767 rating 1297 -> 1298 (+1)

提出したときは、最初にXの最大値を求めた。条件を分離するのは悪くないけどタイプ数としては無駄だった。あとK=0から足してつじつまが合わなくなり最後に1ひいてださかった。

冬はこたつみかんですね。


http://togetter.com/li/605805

トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20140323

2014-03-16

SRM 600

| 01:10

Div1 Easy (250) ORSolitaire

問題

  • 数値の配列が与えられる
  • 初期値を0として、配列の要素をORしてgoalにする
  • 要素をいくつ削除したらgoalにできなくなるかを求める

方針

Div2 Easy (250) TheShuttles

問題

  • N箇所の拠点と、それぞれの社員数が与えられる
  • それぞれの拠点について、全員を運べる台数を用意する
  • 全てのシャトルの座席数は同じである
  • シャトル1台のコストはbaseCost+seatCost×座席数である
  • コストの最小値を求める

方針

結果

x-- 0pt 889th/1007 rating 1420 -> 1297 (-123)

ビットのループを、小ネタで

for (int b = 1; b > 0; b *= 2)

と書いたらTLEで死んだ。

Visual C++では停止するが、GCCだと条件が常に真と見なされて無限ループになっていた。

条件は色々あるようだ。

https://twitter.com/hirose_golf/status/435034777968603136

for(int i = 715827882; i >= 0; i *= 3)は無限ループするが

for(int i = 715827883; i >= 0; i *= 3)は無限ループしなかったり。

C言語むずかしい。


http://togetter.com/li/602581

トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20140316

2014-03-10

SRM 599

| 01:54

Div1 Easy (250) BigFatInteger

問題

  • LunはAのB乗のような巨大な数が大好きである
  • Xの初期値を1とする
  • Xには素数か、または、Xの約数をかけることができる
  • AのB乗にするための最小の手数を求める

方針

  • 素数については必ず1回は必要
  • 素因数分解する
  • 任意の約数をかけることができるので、素因数の中で乗数Cが一番多いものだけ考えればいい
  • 繰り返し2乗法的な感じ
  • 2^16だったら2^1 -> 2^2 -> 2^4 -> 2^8 -> 2^16と5回でいける
  • B乗の部分についても繰り返し2乗法
  • Failed System Test
  • A^(C×B)という形になるが、乗数をC×Bでひとまとめにして2の累乗で切り上げする必要があった
  • https://github.com/firewood/topcoder/blob/master/srm_5xx/srm_599/BigFatInteger.cpp

Div2 Easy (250) MiniatureDachshund

問題

  • みかんを食べた量だけ体重が増える
  • 体重は5000グラムを超えてはならない
  • 食べられる最大の個数を求める

方針

結果

x-- +1 -1 25pt 481st/739 rating 1439 -> 1420 (-19)

素数表まったくいらなかった。シンプルに書くの難しい。

トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20140310