<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xml:lang="ja">
	<channel>
		<title>hotpepsiの練習帳</title>
		<link>http://topcoder.g.hatena.ne.jp/firewood/</link>
		<description>hotpepsiの練習帳</description>
		<dc:creator>firewood</dc:creator>


		<item>
			<title>Google Code Jam 2017 Qualification Round</title>
			<link>https://topcoder.g.hatena.ne.jp/firewood/20180320/1521559905</link>

			<description><![CDATA[
		<div class="section">
			<p><a href="https://code.google.com/codejam/contest/3264486/dashboard" target="_blank">https://code.google.com/codejam/contest/3264486/dashboard</a></p>
			<h4>Problem A. Oversized Pancake Flipper</h4>
			<p>問題</p>
			<ul>
				<li>N個のパンケーキがある</li>
				<li>パンケーキの表裏の向きが与えられる</li>
				<li>連続したK個を裏返せる</li>
				<li>裏返す総回数を求める</li>
			</ul>
			<p>方針</p>
			<ul>
				<li>先頭が表で、次が裏のとき、先頭で裏返すと永遠に揃わないので、先頭が表なら無視し、裏なら裏返す</li>
				<li>ClojureとHaskellで</li>
				<li><a href="https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_A.clj" target="_blank">https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_A.clj</a></li>
				<li><a href="https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_A.hs" target="_blank">https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_A.hs</a></li>
				<li>終了後: golang, Rust</li>
				<li><a href="https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_A.go" target="_blank">https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_A.go</a></li>
				<li><a href="https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_A.rs" target="_blank">https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_A.rs</a></li>
			</ul>
			<h4>Problem B. Tidy Numbers</h4>
			<p>問題</p>
			<ul>
				<li>数の各桁が非減少なものをtidy numberとする</li>
				<li>数Nまでの範囲の最後のtidy numberを求めよ</li>
			</ul>
			<p>方針</p>
			<ul>
				<li>一番下の桁から</li>
				<li>ひとつ上の桁よりも小さければ、その桁を9にして、一つ上の桁を一つ減らす</li>
				<li>Objective-CとSwiftで</li>
				<li><a href="https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_B.m" target="_blank">https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_B.m</a></li>
				<li><a href="https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_B.swift" target="_blank">https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_B.swift</a></li>
			</ul>
			<h4>Problem C. Bathroom Stalls</h4>
			<p>問題</p>
			<ul>
				<li>N個のマス目があり、初期状態では全てのマス目が空いている</li>
				<li>最も連続で空いているマス目の中央を埋める</li>
				<li>ひとつずつ、K個のマス目を埋める</li>
				<li>埋まっているマス目について、左側の連続する空きマスの個数の最小値と、右側の連続する空きマスの個数の最小値を求めよ</li>
			</ul>
			<p>方針</p>
			<ul>
				<li>最初は中央に一つだけ配置する</li>
				<li>そうすると場所が2分割される</li>
				<li>つまりどんどん2分割されていく</li>
				<li>残りの場所がR個で、D分割されていて、K個を配置することを考える</li>
				<li>K&gt;Dならば、D個の領域全てを2分割して、RとKからD個減らし、Dを2倍にする</li>
				<li>K&lt;=Dのときは、大きい領域のうちK個に配置することになる</li>
				<li>領域の大きさはR÷DかR÷D+1で、R%D個までは1大きい、すなわちKがR%D以内なら1大きい</li>
				<li>GoとRustとPerlで</li>
				<li><a href="https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_C.go" target="_blank">https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_C.go</a></li>
				<li><a href="https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_C.rs" target="_blank">https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_C.rs</a></li>
				<li><a href="https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_C.pl" target="_blank">https://github.com/firewood/topcoder/blob/master/gcj_2017/QR_C.pl</a></li>
			</ul>
			<h4>Problem D. Fashion Show</h4>
			<p>要復習</p>
			<h4>結果</h4>
			<p>がんばって7言語で書いたが、よくわからないやつはC++で解いてから書き直しているので、効率が良くない。ちゃんとその言語にあった書き方ができるようにしたい。</p>
			<p>Cはkmjpさんの読んで、mapでメモ化するのはわかりやすかった。しかしこういうのを関数型言語で書ける気がしない。</p>
		</div>
]]></description>

			<dc:creator>firewood</dc:creator>

			<pubDate>Tue, 20 Mar 2018 15:31:45 GMT</pubDate>



		</item>

		<item>
			<title>TCO17 Algorithm Round 1A</title>
			<link>https://topcoder.g.hatena.ne.jp/firewood/20170827/1503808648</link>

			<description><![CDATA[
		<div class="section">
			<h4>Easy (250) PingPongQueue</h4>
			<p>問題</p>
			<ul>
				<li>何人かで卓球をする</li>
				<li>一列に並び、2人ずつ対戦する</li>
				<li>各自の実力が配列skillsで与えられる</li>
				<li>実力が高い方が必ず勝つ</li>
				<li>負けるか、連続でN回勝ったら列の最後に並ぶ</li>
				<li>Kゲーム目の対戦カードを求める</li>
			</ul>
			<p>方針</p>
			<ul>
				<li>シミュレーション</li>
				<li>Passed System Test</li>
			</ul>
			<p><a href="https://github.com/firewood/topcoder/blob/master/tco_2017/PingPongQueue.cpp" target="_blank">https://github.com/firewood/topcoder/blob/master/tco_2017/PingPongQueue.cpp</a></p>
			<h4>Medium (500) CheeseSlicing</h4>
			<p>問題</p>
			<ul>
				<li>A×B×Cの大きさのチーズを切る</li>
				<li>どれかの面に平行に切る必要がある</li>
				<li>切断後の長さが整数の値であること</li>
				<li>3辺のうちいちばん小さい値を厚みとする</li>
				<li>残りの辺の積をチーズの面積とする</li>
				<li>厚みがS以上の塊に切るとき、面積の合計の最大値を求める</li>
			</ul>
			<p>方針</p>
			<ul>
				<li>3辺それぞれの切り方をDFSで全部試す</li>
				<li>メモ化</li>
			</ul>
			<ul>
				<li>Passed System Test</li>
			</ul>
			<p><a href="https://github.com/firewood/topcoder/blob/master/tco_2017/CheeseSlicing.cpp" target="_blank">https://github.com/firewood/topcoder/blob/master/tco_2017/CheeseSlicing.cpp</a></p>
			<h4>結果</h4>
			<p>216.52 + 311.48 = 528.00pt 233rd/886 1686 -&gt; 1676 (-10)</p>
			<p>easyは「連続で」が抜けてたり、意外とchallengeの余地あったらしい。</p>			<br>

			<p><a href="https://togetter.com/li/1096655" target="_blank">https://togetter.com/li/1096655</a></p>
		</div>
]]></description>

			<dc:creator>firewood</dc:creator>

			<pubDate>Sun, 27 Aug 2017 04:37:28 GMT</pubDate>



		</item>

		<item>
			<title>SRM 711</title>
			<link>https://topcoder.g.hatena.ne.jp/firewood/20170409/1491750415</link>

			<description><![CDATA[
		<div class="section">
			<h4>Div1 Easy (250) ConsecutiveOnes</h4>
			<p>問題</p>
			<ul>
				<li>N以上で、2進数表記で1がK個連続する最小の数を求める</li>
			</ul>
			<p>方針</p>
			<ul>
				<li>1がK個連続している数(1 &lt;&lt;K - 1)をXとする&lt;/li&gt;
				<li>XとNの上から1ビットずつ見ていく</li>
				<li>Nが1ならXにも1を立てる(＝N以上にする)</li>
				<li>Nが0でXが1なら、Xのほうが大きいので終了し、仮の答えとする</li>
				<li>Xの初期値を1ビットずらして(2倍にして)全て試す</li>
				<li>仮の答えのうち最小のものが答え</li>
				<li>Passed System Test</li>
				<li><a href="https://github.com/firewood/topcoder/blob/master/srm_7xx/srm_711/ConsecutiveOnes.cpp" target="_blank">https://github.com/firewood/topcoder/blob/master/srm_7xx/srm_711/ConsecutiveOnes.cpp</a></li>
			</ul>
			<h4>結果</h4>
			<p>o-- +1 194.73 +50 = 244.73pt rating 1649 -&gt; 1686 (+37)</p>
			<p>とーらすさん記念の回。</p>
			<p>方針が単純なのが良かった。無限ループする解を落として+1</p>			<br>

			<p><a href="https://togetter.com/li/1094091" target="_blank">https://togetter.com/li/1094091</a></p>
		</div>
]]></description>

			<dc:creator>firewood</dc:creator>

			<pubDate>Sun, 09 Apr 2017 15:06:55 GMT</pubDate>



		</item>

		<item>
			<title>SRM 710</title>
			<link>https://topcoder.g.hatena.ne.jp/firewood/20170406/1491490291</link>

			<description><![CDATA[
		<div class="section">
			<h4>Div1 Easy (300)  ReverseMancala</h4>
			<p>問題</p>
			<ul>
				<li>マンカラはコマを穴から穴へと動かして遊ぶゲームである。ここではコマを石、穴をスロットとする</li>
				<li>N個のスロットがあり、円環状に並んでいる</li>
				<li>ゲームは1ターンずつ進行する</li>
				<li>操作Aまたは操作Bのいずれかの操作が可能である</li>
				<li>操作Aは、まずひとつ以上の石が入ったスロットを選び、石を全て手に移す</li>
				<li>次に、時計回りで隣にあるスロットに、石をひとつずつ置いていく</li>
				<li>石がなくなったら終了</li>
				<li>操作Bは、まず石が一つ以上存在するスロットを選ぶ</li>
				<li>次に、反時計回りで、石をひとつずつ取っていく</li>
				<li>スロットに石が入っていなかったら、そこに手持ちの石をすべて置いて終了</li>
				<li>状態startとtargetが与えられる</li>
				<li>startからtargetにするための手順を求める</li>
			</ul>
			<p>方針</p>
			<ul>
				<li>何となく均等にできそう</li>
				<li>いろいろやってみるが終了</li>
				<li>(終了後)</li>
				<li>ある場所X以外からAの操作をひたすら実行すると、X一箇所に集めることができる</li>
				<li>Bの操作はAの逆である</li>
				<li>targetからXに集める操作を求めておいて、逆順にBを実行するとXからtargetにできる</li>
				<li>startからXに集める操作とくっつけて完成</li>
				<li>逆順にするときはindexの値が最後に置いた場所になるので、そこを何とかする</li>
				<li><a href="https://github.com/firewood/topcoder/blob/master/srm_7xx/srm_710/ReverseMancala.cpp" target="_blank">https://github.com/firewood/topcoder/blob/master/srm_7xx/srm_710/ReverseMancala.cpp</a></li>
			</ul>
			<h4>結果</h4>
			<p> --- 0pt 42nd/226 rating 1683 -&gt; 1649 (-34)</p>
			<p>部屋で誰も提出できなかった珍しい回。連続プラス点が7回で終わってしまった。</p>
			<p>マンカラは実在のゲームだったらしい。</p>			<br>

			<p><a href="https://togetter.com/li/1088982" target="_blank">https://togetter.com/li/1088982</a></p>
		</div>
]]></description>

			<dc:creator>firewood</dc:creator>

			<pubDate>Thu, 06 Apr 2017 14:51:31 GMT</pubDate>



		</item>

	</channel>
</rss>
