<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8407586297783126557</id><updated>2011-10-09T15:28:08.760+09:00</updated><category term='Codeforces'/><category term='The Art of Prolog'/><category term='Cellular automaton'/><category term='Technical book'/><category term='Chaos theory'/><category term='Physics'/><category term='CodeChef'/><category term='IPSC'/><category term='TopCoder'/><category term='Image processing'/><category term='M-Judge'/><category term='anarchy golf'/><category term='電子工作'/><category term='Google Code Jam'/><category term='KUPC'/><category term='Prolog'/><category term='UTPC'/><category term='UAPC'/><category term='Maximum-Cup'/><category term='Algorithm'/><category term='Mathematics'/><category term='Other'/><category term='Manga'/><category term='Numerical analysis'/><category term='Project Euler'/><category term='ICPC'/><category term='J'/><category term='Animation'/><category term='PKU Judge Online'/><category term='Aizu Online Judge'/><title type='text'>主にコーディング</title><subtitle type='html'>移転しました→&lt;a href="http://d.hatena.ne.jp/todo314/"&gt;http://d.hatena.ne.jp/todo314/&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default?start-index=101&amp;max-results=100'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>519</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-328684011575439479</id><published>2011-09-25T02:57:00.001+09:00</published><updated>2011-09-25T02:57:26.475+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>移転しました</title><content type='html'>&lt;a href="http://d.hatena.ne.jp/todo314/"&gt;http://d.hatena.ne.jp/todo314/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-328684011575439479?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/328684011575439479/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=328684011575439479' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/328684011575439479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/328684011575439479'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/09/blog-post_25.html' title='移転しました'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-2683058881280419485</id><published>2011-09-18T23:21:00.000+09:00</published><updated>2011-09-18T23:21:40.958+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Codeforces'/><title type='text'>Codeforces Beta Round #87 Div. 1 Only</title><content type='html'>&lt;p&gt;Codeforces Beta Round #86 Div. 1 Only (9/16 0:00~2:00）&lt;/p&gt;&lt;p&gt;■A. Party&lt;/p&gt;&lt;p&gt;解法&lt;/p&gt;グラフに注目したとき下のような列があったとする．&lt;br/&gt;A&lt;sub&gt;1&lt;/sub&gt;-&gt;A&lt;sub&gt;2&lt;/sub&gt;-&gt;…-&gt;A&lt;sub&gt;N&lt;/sub&gt;&lt;br/&gt;この列の中の任意の2ノードは，同じグループに属することができないため，最低でもNグループ必要だと分かる．&lt;br/&gt;このようなNの中で最大のものN&lt;sub&gt;max&lt;/sub&gt;を見つければ，任意の列は，長さが高々N&lt;sub&gt;max&lt;/sub&gt;なので，N&lt;sub&gt;max&lt;/sub&gt;個のグループに高々1人で振り分けることが出来る．&lt;br/&gt;結局，N&lt;sub&gt;max&lt;/sub&gt;が答え．&lt;br/&gt;&lt;a href="http://ideone.com/Sroyo"&gt;#86 Div. 1 A. Party&lt;/a&gt;&lt;br/&gt;&lt;p&gt;■B. Lawnmower&lt;/p&gt;&lt;p&gt;解法&lt;/p&gt;ジグザグに進んでいくため，貪欲に求めることが出来る．&lt;br/&gt;&lt;a href="http://ideone.com/xivaz"&gt;#86 Div. 1 B. Lawnmower&lt;/a&gt;&lt;p&gt;■Result&lt;/p&gt;oo--- 1146pts. 256th&lt;br/&gt;1700→1717&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-2683058881280419485?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/2683058881280419485/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=2683058881280419485' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2683058881280419485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2683058881280419485'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/09/codeforces-beta-round-87-div-1-only.html' title='Codeforces Beta Round #87 Div. 1 Only'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-4434421140698200073</id><published>2011-09-11T16:55:00.000+09:00</published><updated>2011-09-11T16:55:04.821+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Codeforces'/><title type='text'>Codeforces Beta Round #86 Div. 1 Only</title><content type='html'>&lt;p&gt;Codeforces Beta Round #86 Div. 1 Only (9/9 0:00~2:00）&lt;/p&gt;&lt;p&gt;■A. A Grammar Lessons&lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;Petyaの作った言語は以下のBNFにより定義される．与えられた文字列がSentenceか判定せよ．&lt;br/&gt;&lt;br/&gt;Sentence := Statement | AdjectiveM | AdjectiveF | NounM | NounF | VerbM | VerbF&lt;br/&gt;Statement := (AdjectiveM* NounM VerbM*) | (AdjectiveF* NounF VerbF*)&lt;br/&gt;&lt;br/&gt;AdjectiveM := "lios" | Alphabet AdjectiveM&lt;br/&gt;AdjectiveF := "liala" | Alphabet AdjectiveF&lt;br/&gt;NounM := "etr" | Alphabet NounM&lt;br/&gt;NounF := "etra" | Alphabet NounF&lt;br/&gt;VerbM := "initis" | Alphabet VerbM&lt;br/&gt;VerbF := "inites" | Alphabet VerbF&lt;br/&gt;&lt;br/&gt;Alphabet := "a"|"b"|"c"|…|"z"&lt;br/&gt;&lt;p&gt;解法&lt;/p&gt;書くだけ．StatementのBNFをDFAにしてからコードにすると，機械的に解ける．&lt;br/&gt;&lt;a href="http://ideone.com/VFITb"&gt;#86 Div. 1 A. A Grammar Lessons&lt;/a&gt;&lt;p&gt;■B. Petr#&lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;文字列s，s&lt;sub&gt;begin&lt;/sub&gt;，s&lt;sub&gt;end&lt;/sub&gt;が与えられる．&lt;br/&gt;以下を満たす文字列tの個数を求めよ．&lt;br/&gt;&lt;ul&gt;&lt;li&gt;tはsの部分文字列&lt;/li&gt;&lt;li&gt;s&lt;sub&gt;begin&lt;/sub&gt;はtのprefix&lt;/li&gt;&lt;li&gt;s&lt;sub&gt;end&lt;/sub&gt;はtのsuffix&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;解法&lt;/p&gt;sにおいて，s&lt;sub&gt;begin&lt;/sub&gt;およびs&lt;sub&gt;end&lt;/sub&gt;を検索して，インデックスの候補を列挙する．&lt;br/&gt;s&lt;sub&gt;begin&lt;/sub&gt;，s&lt;sub&gt;end&lt;/sub&gt;に関するインデックスks，keについて，&lt;br/&gt;s[ks]からs&lt;sub&gt;begin&lt;/sub&gt;があり，&lt;br/&gt;s[ke]からs&lt;sub&gt;end&lt;/sub&gt;があり，&lt;br/&gt;ks≦ke かつ ks+|s&lt;sub&gt;begin&lt;/sub&gt;|≦ke+|s&lt;sub&gt;end&lt;/sub&gt;|&lt;br/&gt;ならば，&lt;br/&gt;s[ks],…,s[ke],…,s[ke+|s&lt;sub&gt;end&lt;/sub&gt;|-1]&lt;br/&gt;が条件を満たす文字列．&lt;br/&gt;条件を満たす文字列を逐一生成すると，TLEするので，&lt;br/&gt;ハッシュを計算し，重複要素を取り除くことで高速化．&lt;br/&gt;&lt;a href="http://ideone.com/kLAJT"&gt;#86 Div. 1 B. Petr#&lt;/a&gt;&lt;p&gt;■Result&lt;/p&gt;o---- 254pts. 215th&lt;br/&gt;1684-&gt;1700&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-4434421140698200073?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/4434421140698200073/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=4434421140698200073' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4434421140698200073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4434421140698200073'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/09/codeforces-beta-round-86-div-1-only.html' title='Codeforces Beta Round #86 Div. 1 Only'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-810475459631039954</id><published>2011-09-11T04:56:00.016+09:00</published><updated>2011-09-11T16:56:14.167+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TopCoder SRM 517</title><content type='html'>&lt;p&gt;TopCoder SRM 517 (9/11 1:00~3:00)&lt;/p&gt;&lt;p&gt;■CompositeSmash(Easy)&lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;ある数xをy≧2，z≧2，yz=xを満たす2つの数に分割する．&lt;br/&gt;この分割操作を再帰的に繰り返す．&lt;br/&gt;e.g., x=12ならば，(y,z)=(3,4) or (2,6)など．&lt;br/&gt;1や素数は，それ以上分割できない．&lt;br/&gt;&lt;br/&gt;初期値としてNが与えられる．&lt;br/&gt;Nを任意の方法で分割していき，全ての分割が終了するまでにtargetが出現するかを判定せよ．&lt;br/&gt;&lt;p&gt;解法&lt;/p&gt;全探索．念の為メモ化もしたが，無くても通る様子．&lt;br/&gt;&lt;a href="http://ideone.com/5vhMP"&gt;SRM 517 Div. 1 Easy CompositeSmash&lt;/a&gt;&lt;p&gt;■Result&lt;/p&gt;o-- +0/-0&lt;br/&gt;191.33pts. 301th&lt;br/&gt;&lt;p&gt;■Rating&lt;/p&gt;1645-&gt;1673&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-810475459631039954?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/810475459631039954/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=810475459631039954' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/810475459631039954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/810475459631039954'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/09/topcoder-srm-517.html' title='TopCoder SRM 517'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-4490316367234322134</id><published>2011-09-04T00:57:00.001+09:00</published><updated>2011-09-11T04:21:39.824+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Codeforces'/><title type='text'>Codeforces Beta Round #85 Div. 1 Only</title><content type='html'>&lt;p&gt;Codeforces Beta Round #85 Div. 1 Only (9/4 21:00~23:00）&lt;/p&gt;&lt;p&gt;■A. Petya and Inequiations &lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;n,x,yが与えられる．&lt;br/&gt;a&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;+a&lt;sub&gt;2&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;+…+a&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;≥x&lt;br/&gt;a&lt;sub&gt;1&lt;/sub&gt;+a&lt;sub&gt;2&lt;/sub&gt;+…+a&lt;sub&gt;n&lt;/sub&gt;≤y&lt;br/&gt;を満たす正整数の列&lt;br/&gt;a&lt;sub&gt;1&lt;/sub&gt;,a&lt;sub&gt;2&lt;/sub&gt;,…,a&lt;sub&gt;n&lt;/sub&gt;&lt;br/&gt;を求めよ．なければ，-1を返せ．&lt;br/&gt;&lt;p&gt;解法&lt;/p&gt;a&lt;sub&gt;1&lt;/sub&gt;+a&lt;sub&gt;2&lt;/sub&gt;+…+a&lt;sub&gt;n&lt;/sub&gt;&lt;br/&gt;の最小値はn．次に，&lt;br/&gt;a&lt;sub&gt;1&lt;/sub&gt;+a&lt;sub&gt;2&lt;/sub&gt;+…+a&lt;sub&gt;n&lt;/sub&gt;=y&lt;br/&gt;としたとき，&lt;br/&gt;a&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;+a&lt;sub&gt;2&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;+…+a&lt;sub&gt;n&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;br/&gt;の最大値は，&lt;br/&gt;a&lt;sub&gt;k&lt;/sub&gt;=1 (1≤k≤n-1)&lt;br/&gt;a&lt;sub&gt;n&lt;/sub&gt;=y-(n-1)&lt;br/&gt;のとき，この値（=(n-1)+(y-(n-1))&lt;sup&gt;2&lt;/sup&gt;）がx以上なら数列(a&lt;sup&gt;k&lt;/sup&gt;)が答え．&lt;br/&gt;&lt;a href="http://ideone.com/68qIc"&gt;#85 Div. 1 A. Petya and Inequiations&lt;/a&gt;&lt;p&gt;■B. Petya and Divisors &lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;2つの数列&lt;br/&gt;x&lt;sub&gt;1&lt;/sub&gt;,…,x&lt;sub&gt;n&lt;/sub&gt;&lt;br/&gt;y&lt;sub&gt;1&lt;/sub&gt;,…,y&lt;sub&gt;n&lt;/sub&gt;&lt;br/&gt;が与えられる．&lt;br/&gt;各(x&lt;sub&gt;i&lt;/sub&gt;, y&lt;sub&gt;i&lt;/sub&gt;)について，&lt;br/&gt;x&lt;sub&gt;i&lt;/sub&gt; mod k=0 かつ (∀j:i-y&lt;sub&gt;i&lt;/sub&gt;≤j&amp;lt;i) x&lt;sub&gt;j&lt;/sub&gt; mod k ≠ 0&lt;br/&gt;なる正整数kの数を求めよ．&lt;br/&gt;&lt;p&gt;解法&lt;/p&gt;x&lt;sub&gt;i&lt;/sub&gt;の各約数d&lt;sub&gt;i,k&lt;/sub&gt;について，&lt;br/&gt;それがx&lt;sub&gt;1&lt;/sub&gt;,…,x&lt;sub&gt;i-1&lt;/sub&gt;の約数である最後のインデックスp[d&lt;sub&gt;i,k&lt;/sub&gt;]を記録しておく．&lt;br/&gt;p[d&lt;sub&gt;i,k&lt;/sub&gt;]&amp;lt;i-y&lt;sub&gt;i&lt;/sub&gt;なら条件を満たす．&lt;br/&gt;その後，&lt;br/&gt;p[d&lt;sub&gt;i,k&lt;/sub&gt;]=i&lt;br/&gt;と更新．&lt;br/&gt;&lt;a href="http://ideone.com/QaC38"&gt;#85 Div. 1 B. Petya and Divisors&lt;/a&gt;&lt;p&gt;■Result&lt;/p&gt;o---- 484pts. 278th&lt;br/&gt;1689 -&gt; 1684&lt;br/&gt;&lt;br/&gt;ドカーン．&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-4490316367234322134?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/4490316367234322134/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=4490316367234322134' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4490316367234322134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4490316367234322134'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/09/codeforces-beta-round-85-div-1-only.html' title='Codeforces Beta Round #85 Div. 1 Only'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6565555767400767058</id><published>2011-09-03T01:04:00.000+09:00</published><updated>2011-09-03T01:04:32.803+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TopCoder SRM 513</title><content type='html'>&lt;p&gt;TopCoder SRM 516(8/31 0:00~2:00)&lt;/p&gt;敗北．&lt;br/&gt;&lt;p&gt;■NetworkXOneTimePad(Easy)&lt;/p&gt;&lt;p&gt;・解法&lt;/p&gt;全探索．&lt;br/&gt;Long.parseLong(str, 2)をLong.parseLong(str)と書いてしまい，終了数分前に直すはめになってしまった．&lt;p&gt;■Challenge Phase&lt;/p&gt;TLEが狙えるかと思ったが撃墜失敗．むしろ，サンプルの弱さを考慮した撃墜を作っておくべきだった．&lt;br/&gt;&lt;p&gt;■Result&lt;/p&gt;o-- +0/-1&lt;br/&gt;50.0pts. 489th&lt;br/&gt;&lt;p&gt;■Rating&lt;/p&gt;1727 -&gt; 1645&lt;br/&gt;捻挫+打撲．&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6565555767400767058?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6565555767400767058/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6565555767400767058' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6565555767400767058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6565555767400767058'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/09/topcoder-srm-513.html' title='TopCoder SRM 513'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-2437932923084813849</id><published>2011-09-03T00:55:00.000+09:00</published><updated>2011-09-03T00:55:53.235+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Codeforces'/><title type='text'>Codeforces Beta Round #84 Div. 2 Only</title><content type='html'>&lt;p&gt;Codeforces Beta Round #84 Div. 2 Only 8/30 1:00~3:00）&lt;/p&gt;&lt;p&gt;■A. Nearly Lucky Number &lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;Lucky Digitを，4または7として定義する．&lt;br/&gt;Lucky Numberは，Lucky Digitのみで表現される（10進）数のことである．&lt;br/&gt;Nearly Lucky Numberとは，ある数に含まれるLucky Digitの個数が，Lucky Numberである数のことである．&lt;br/&gt;与えられた数が，Nearly Lucky Numberかどうかを判定せよ．&lt;br/&gt;&lt;p&gt;解法&lt;/p&gt;やるだけ．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class A{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-9;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		long n=sc.nextLong();&lt;br /&gt;		int c=0;&lt;br /&gt;		for(; n&amp;gt;0; n/=10){&lt;br /&gt;			if(n%10==4||n%10==7){&lt;br /&gt;				c++;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		boolean f=c&amp;gt;0;&lt;br /&gt;		for(; c&amp;gt;0; c/=10){&lt;br /&gt;			f&amp;=c%10==4||c%10==7;&lt;br /&gt;		}&lt;br /&gt;		println(f?"YES":"NO");&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		new A().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■B. Lucky String &lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;Lucky Stringとは，ある文字列において出現するアルファベットのインデックスをアルファベット毎に分類・ソートしたときに，隣り合うインデックスの差がLucky Numberである文字列のことである．&lt;br/&gt;長さnのLucky Stringの内，辞書式順で最も早いものを出力せよ．&lt;br/&gt;&lt;p&gt;解法&lt;/p&gt;abcdabcd…&lt;br/&gt;↑これをn文字出力するだけ．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class B{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-9;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		int n=sc.nextInt();&lt;br /&gt;		StringBuffer sb=new StringBuffer("");&lt;br /&gt;		for(int i=0; i&amp;lt;n;){&lt;br /&gt;			for(char c='a'; c&amp;lt;='d'&amp;&amp;i&amp;lt;n; c++, i++){&lt;br /&gt;				sb.append(c);&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		println(sb.toString());&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		new B().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■C. Lucky Sum of Digits &lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;各桁の総和がnとなる最小のLucky Numberを求めよ．&lt;br/&gt;&lt;p&gt;解法&lt;/p&gt;4の個数と，7の個数が固定ならば，&lt;br/&gt;44…4477…77&lt;br/&gt;という形のLucky Numberが最小であることは明らか．&lt;br/&gt;次に，4の個数をa，7の個数をbとすると，&lt;br/&gt;4a+7b=n&lt;br/&gt;が成立する．&lt;br/&gt;（例えば28で考えれば分かるが）上の条件を満たす(a, b)の中で，bが最大ものが最小のLucky Numberとなることは明らか．&lt;br/&gt;従って，aを0から逐次増やしていき，(n-4a) mod 7=0となればそこで計算を終了すればいい．&lt;br/&gt;そのようなaが見つからずにループが終了したときは，条件を満たすLucky Numberは存在しない．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class C{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-9;&lt;br /&gt;&lt;br /&gt;	int n;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		n=sc.nextInt();&lt;br /&gt;		for(int a=0; n-4*a&amp;gt;=0; a++){&lt;br /&gt;			if((n-4*a)%7==0){&lt;br /&gt;				int b=(n-4*a)/7;&lt;br /&gt;				StringBuffer sb=new StringBuffer();&lt;br /&gt;				for(int i=0; i&amp;lt;a; i++){&lt;br /&gt;					sb.append('4');&lt;br /&gt;				}&lt;br /&gt;				for(int i=0; i&amp;lt;b; i++){&lt;br /&gt;					sb.append('7');&lt;br /&gt;				}&lt;br /&gt;				println(sb.toString());&lt;br /&gt;				return;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		println("-1");&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		new C().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■E. Lucky Tree &lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;ノード数n，辺の数n-1の非循環無向グラフ（＝全域木）が与えられる．&lt;br/&gt;各辺には，重みがついている．&lt;br/&gt;次の条件を満たす3つ組(i,j,k)の数を求めよ．&lt;br/&gt;&lt;ul&gt;&lt;li&gt; iからjの経路にはLucky Numberを重みとして持つ辺が少なくとも1つある． &lt;/li&gt;&lt;li&gt; iからkの経路にはLucky Numberを重みとして持つ辺が少なくとも1つある． &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;解法&lt;/p&gt;例えば，グラフが以下のようなものだったとする．&lt;br/&gt;&lt;a href="http://3.bp.blogspot.com/-EixvnkYwlmY/TmD71kEe4EI/AAAAAAAABMg/FNIrtZlVyn0/s1600/lucky_tree.png" imageanchor="1" &gt;&lt;img border="0" height="156" width="200" src="http://3.bp.blogspot.com/-EixvnkYwlmY/TmD71kEe4EI/AAAAAAAABMg/FNIrtZlVyn0/s200/lucky_tree.png" /&gt;&lt;/a&gt;ここで，点線になっている辺は，Lucky Numberの重みを持つ．&lt;br/&gt;ポイントは，上の条件を満たさない3つ組みを求める方が簡単だということ．&lt;br/&gt;例えば，グループ1に注目してみる．&lt;br/&gt;グループ1から選んだ3ノードより構成される3つ組み(v&lt;sub&gt;1&lt;/sub&gt;,v&lt;sub&gt;2&lt;/sub&gt;,v&lt;sub&gt;3&lt;/sub&gt;)は，決して上の条件を満たさない．&lt;br/&gt;また，グループ1から2ノード（v&lt;sub&gt;1&lt;/sub&gt;,v&lt;sub&gt;2&lt;/sub&gt;とする）を選び，グループ1以外の任意の1ノード（uとする）を選んだとき，&lt;br/&gt;(v&lt;sub&gt;1&lt;/sub&gt;,v&lt;sub&gt;2&lt;/sub&gt;,u)，(v&lt;sub&gt;1&lt;/sub&gt;,u,v&lt;sub&gt;2&lt;/sub&gt;)&lt;br/&gt;も上の条件を満たさない．&lt;br/&gt;つまり，あるグループkがmノードから構成されているとすれば，&lt;br/&gt;m(m-1)(m-2)+2m(m-1)(n-m)&lt;br/&gt;が，グループkのノードを2つ以上含みかつ上の条件を満たさ「ない」3つ組みの総数となる．&lt;br/&gt;全てのグループについて上式の和を計算したものをsumとする．&lt;br/&gt;最後に，nノードから3つ選ぶ順列の総数はn(n-1)(n-2)であるから，&lt;br/&gt;n(n-1)(n-2)-sumが答えとなる．&lt;br/&gt;さて，どうやってグラフ構造をグループに分け，そのグループのノード数を計算するだが，これについては，Union-Findを用いるのがスマートだと思われる．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class E{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-9;&lt;br /&gt;&lt;br /&gt;	int n;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		n=sc.nextInt();&lt;br /&gt;		make(n);&lt;br /&gt;&lt;br /&gt;		for(int i=0; i&amp;lt;n-1; i++){&lt;br /&gt;			int u=sc.nextInt()-1;&lt;br /&gt;			int v=sc.nextInt()-1;&lt;br /&gt;			int w=sc.nextInt();&lt;br /&gt;			if(!isLucky(w)){&lt;br /&gt;				union(u, v);&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		debug(p);&lt;br /&gt;&lt;br /&gt;		long ans=0;&lt;br /&gt;		for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;			long s=size(i);&lt;br /&gt;			if(p[i]&amp;gt;=0){&lt;br /&gt;				continue;&lt;br /&gt;			}&lt;br /&gt;			if(s&amp;gt;=3){&lt;br /&gt;				ans+=s*(s-1)*(s-2);&lt;br /&gt;			}&lt;br /&gt;			if(s&amp;gt;=2){&lt;br /&gt;				ans+=s*(s-1)*(n-s)*2;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		// debug(n*(n-1)*(n-2));&lt;br /&gt;		// debug(ans);&lt;br /&gt;		ans=(long)n*(n-1)*(n-2)-ans;&lt;br /&gt;		println(ans+"");&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	boolean isLucky(int n){&lt;br /&gt;		for(; n&amp;gt;0; n/=10){&lt;br /&gt;			if(n%10!=4&amp;&amp;n%10!=7){&lt;br /&gt;				return false;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		return true;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	int[] p;&lt;br /&gt;&lt;br /&gt;	void make(int n){&lt;br /&gt;		p=new int[n];&lt;br /&gt;		fill(p, -1);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	int find(int x){&lt;br /&gt;		return p[x]&amp;lt;0?x:(p[x]=find(p[x]));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	boolean union(int x, int y){&lt;br /&gt;		x=find(x);&lt;br /&gt;		y=find(y);&lt;br /&gt;		if(x!=y){&lt;br /&gt;			if(p[y]&amp;lt;p[x]){&lt;br /&gt;				int t=x;&lt;br /&gt;				x=y;&lt;br /&gt;				y=t;&lt;br /&gt;			}&lt;br /&gt;			p[x]+=p[y];&lt;br /&gt;			p[y]=x;&lt;br /&gt;		}&lt;br /&gt;		return x!=y;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	int size(int x){&lt;br /&gt;		return -p[find(x)];&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		new E().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Result&lt;/p&gt;ooo-o 4068pts. 27th&lt;br/&gt;1631 -&gt; 1689&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-2437932923084813849?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/2437932923084813849/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=2437932923084813849' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2437932923084813849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2437932923084813849'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/09/codeforces-beta-round-84-div-2-only.html' title='Codeforces Beta Round #84 Div. 2 Only'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-EixvnkYwlmY/TmD71kEe4EI/AAAAAAAABMg/FNIrtZlVyn0/s72-c/lucky_tree.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-4567139173643152418</id><published>2011-09-03T00:03:00.000+09:00</published><updated>2011-09-03T00:03:11.996+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Codeforces'/><title type='text'>Codeforces Beta Round #83 Div. 2 Only</title><content type='html'>&lt;p&gt;Codeforces Beta Round #83 Div. 2 Only 8/24 0:00~2:00）&lt;/p&gt;&lt;p&gt;■A. Palindromic Times&lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;デジタル時計の時刻が与えられる（HH:MMの形式）．&lt;br/&gt;その時刻以降で，時刻が回文になるものを求めよ．&lt;br/&gt;&lt;p&gt;解法&lt;/p&gt;高々24x60回の計算で終わるので，逐一試す．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class A{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-9;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		String[] ss=sc.next().split(":");&lt;br /&gt;		int h=Integer.parseInt(ss[0]);&lt;br /&gt;		int m=Integer.parseInt(ss[1]);&lt;br /&gt;		for(;;){&lt;br /&gt;			if(++m==60){&lt;br /&gt;				m=0;&lt;br /&gt;				if(++h==24){&lt;br /&gt;					h=0;&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;			String s=String.format("%02d:%02d", h, m);&lt;br /&gt;			if(new StringBuffer(s).reverse().toString().equals(s)){&lt;br /&gt;				println(s);&lt;br /&gt;				return;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		new A().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■C. Dorm Water Supply &lt;/p&gt;&lt;p&gt;問題・解法&lt;/p&gt;ある有向グラフが与えられる．&lt;br/&gt;頂点には，多くとも1つの入る/出る辺があり，辺には情報として容量が与えられる．&lt;br/&gt;以下を満たす（頂点V，頂点U，容量C）を求めよ．&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Vには入る辺がない．&lt;/li&gt;&lt;li&gt;Uには出る辺がない．&lt;/li&gt;&lt;li&gt;Vから辺を辿ることで，Uに到着する．&lt;/li&gt;&lt;li&gt;Cは，VからUに至る辺の容量で最小のもの．&lt;/li&gt;&lt;/ul&gt;問題を意訳すると以上のようになるため，あとは書くだけです．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class C{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-9;&lt;br /&gt;&lt;br /&gt;	int n, p;&lt;br /&gt;	E[] es;&lt;br /&gt;	int[] parent;&lt;br /&gt;	LinkedList&amp;lt;E&amp;gt; answers;&lt;br /&gt;	boolean[] visited;&lt;br /&gt;&lt;br /&gt;	class E{&lt;br /&gt;		int from, to, cap;&lt;br /&gt;&lt;br /&gt;		E(int from, int to, int cap){&lt;br /&gt;			this.from=from;&lt;br /&gt;			this.to=to;&lt;br /&gt;			this.cap=cap;&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		n=sc.nextInt();&lt;br /&gt;		p=sc.nextInt();&lt;br /&gt;		es=new E[n];&lt;br /&gt;		answers=new LinkedList&amp;lt;E&amp;gt;();&lt;br /&gt;		parent=new int[n];&lt;br /&gt;		fill(parent, -1);&lt;br /&gt;		for(int i=0; i&amp;lt;n; i++){}&lt;br /&gt;		for(int i=0; i&amp;lt;p; i++){&lt;br /&gt;			int a=sc.nextInt()-1;&lt;br /&gt;			int b=sc.nextInt()-1;&lt;br /&gt;			int d=sc.nextInt();&lt;br /&gt;			es[a]=new E(a, b, d);&lt;br /&gt;			parent[b]=a;&lt;br /&gt;		}&lt;br /&gt;		solve();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void solve(){&lt;br /&gt;		visited=new boolean[n];&lt;br /&gt;		for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;			if(visited[i]){&lt;br /&gt;				continue;&lt;br /&gt;			}&lt;br /&gt;			int k=i;&lt;br /&gt;			boolean loop=false;&lt;br /&gt;			for(; parent[k]&amp;gt;=0;){&lt;br /&gt;				k=parent[k];&lt;br /&gt;				if(k==i){&lt;br /&gt;					loop=true;&lt;br /&gt;					break;&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;			if(loop){&lt;br /&gt;				continue;&lt;br /&gt;			}&lt;br /&gt;			if(es[k]!=null){&lt;br /&gt;				visited[k]=true;&lt;br /&gt;				dfs(es[k].to, k, es[k].cap);&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		E[] anss=answers.toArray(new E[0]);&lt;br /&gt;		sort(anss, new Comparator&amp;lt;E&amp;gt;(){&lt;br /&gt;			@Override&lt;br /&gt;			public int compare(E e1, E e2){&lt;br /&gt;				return e1.from-e2.from;&lt;br /&gt;			}&lt;br /&gt;		});&lt;br /&gt;		println(anss.length+"");&lt;br /&gt;		for(E e : anss){&lt;br /&gt;			println(e.from+" "+e.to+" "+e.cap);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void dfs(int v, int tank, int diameter){&lt;br /&gt;		visited[v]=true;&lt;br /&gt;		if(es[v]==null){&lt;br /&gt;			answers.add(new E(tank+1, v+1, diameter));&lt;br /&gt;			return;&lt;br /&gt;		}&lt;br /&gt;		dfs(es[v].to, tank, min(diameter, es[v].cap));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		// System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		new C().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■D. Basketball Team &lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;N人からなるチームを作りたい．&lt;br/&gt;候補は全部でS人であり，Herr Wafaには仲間がK人いる．&lt;br/&gt;S人からN人をランダムに選ぶとき，&lt;br/&gt;Herr Wafaが少なくとも一人の仲間と一緒になる確率を求めよ．&lt;br/&gt;N人を選べない（候補の人数が足りない）場合は-1とせよ．&lt;br/&gt;&lt;p&gt;解法&lt;/p&gt;Herr Wafaがチームに選ばれなかった状態は省く．&lt;br/&gt;(N, R)を二項係数（＝N個からR個を選ぶ組み合わせの総数）とする．&lt;br/&gt;Herr Wafaがチームに選ばれたとして，残りのN-1人を選ぶ方法は(S-1, N-1)通り．&lt;br/&gt;その内，仲間が一人も居ない場合は(S-1-K, N-1)通り．すなわち，&lt;br/&gt;1-{(S-1-K, N-1)/(S-1, N-1)}&lt;br/&gt;が答え．&lt;br/&gt;左の項はもっと簡単に，&lt;br/&gt;(S-N)(S-N-1)…(S-N-K+1)&lt;br/&gt;-----------------------&lt;br/&gt;(M-1)(M-2)…(M+K)&lt;br/&gt;と表せるので，ループ一つで求められる．&lt;br/&gt;但し，精度が落ちないように工夫して計算する必要がある（下記コード参照）．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class D{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-9;&lt;br /&gt;&lt;br /&gt;	int n, m, h;&lt;br /&gt;	int[] s;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		n=sc.nextInt();&lt;br /&gt;		m=sc.nextInt();&lt;br /&gt;		h=sc.nextInt()-1;&lt;br /&gt;		s=new int[m];&lt;br /&gt;		for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;			s[i]=sc.nextInt();&lt;br /&gt;		}&lt;br /&gt;		solve();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void solve(){&lt;br /&gt;		int sum=0;&lt;br /&gt;		for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;			sum+=s[i];&lt;br /&gt;		}&lt;br /&gt;		if(sum&amp;lt;n){&lt;br /&gt;			println("-1.0");&lt;br /&gt;			return;&lt;br /&gt;		}&lt;br /&gt;		int k=s[h]-1;&lt;br /&gt;		double ans=1;&lt;br /&gt;		for(int i=0; i&amp;lt;k; i++){&lt;br /&gt;			ans*=(double)(sum-n-i)/(sum-1-i);&lt;br /&gt;		}&lt;br /&gt;		println((1-ans)+"");&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		new D().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Result&lt;/p&gt;oxoo- 2816pts. 78th&lt;br/&gt;1562 -&gt; 1631&lt;br/&gt;次回でDiv.1に戻れるかも知れないがしかし…．&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-4567139173643152418?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/4567139173643152418/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=4567139173643152418' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4567139173643152418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4567139173643152418'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/09/codeforces-beta-round-83-div-2-only.html' title='Codeforces Beta Round #83 Div. 2 Only'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6416725975870334597</id><published>2011-08-25T18:06:00.001+09:00</published><updated>2011-08-25T18:06:39.772+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeChef'/><title type='text'>CodeChef August Cook-off 2011</title><content type='html'>&lt;p&gt;CodeChef August Cook-off 2011（8/22 1:00~3:30）&lt;/p&gt;&lt;p&gt;■Open the Dragon Scroll&lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;A，B，Nが与えられる．&lt;br/&gt;（2進数で）A，BのビットをNビットに収まる範囲で自由に並び替える．&lt;br/&gt;A xor B = Cの最大値を求めよ．&lt;br/&gt;&lt;p&gt;解法&lt;/p&gt;A，Bにおける1のビットの数を|A|，|B|とする．&lt;br/&gt;&lt;p&gt;1.|A|+|B|≦N&lt;/p&gt;この時は，以下のようにビットを並び替えれば最大値になる．&lt;br/&gt;A→11…1100…0000…00&lt;br/&gt;B→00…0011…1100…00&lt;br/&gt;C→11…1111…1100…00&lt;br/&gt;（1が|A|+|B|個，0がN-(|A|+|B|)個）&lt;br/&gt;&lt;p&gt;2.|A|+|B|&amp;gt;N&lt;/p&gt;xorをとると，どうしてもどこかでAの1とBの1が相殺して0になってしまう．&lt;br/&gt;そのため，ビットを下のように並びかえる．&lt;br/&gt;A→11…1100…0011…11&lt;br/&gt;B→00…0011…1111‥11&lt;br/&gt;この時，1 xor 1 = 0で相殺されてしまう1（右端の1のこと）の個数をXとすれば，&lt;br/&gt;|A|+|B|-X=N&lt;br/&gt;∴X=|A|+|B|-N&lt;br/&gt;C→11…1111…1100…00&lt;br/&gt;（1が2|N|-(|A|+|B|)個，0が|A|+|B|-N個）&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-9;&lt;br /&gt;&lt;br /&gt;	int t, n, a, b;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		t=sc.nextInt();&lt;br /&gt;		for(int i=0; i&amp;lt;t; i++){&lt;br /&gt;			n=sc.nextInt();&lt;br /&gt;			a=sc.nextInt();&lt;br /&gt;			b=sc.nextInt();&lt;br /&gt;			solve();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void solve(){&lt;br /&gt;		int ans=0;&lt;br /&gt;		int bitA=Integer.bitCount(a);&lt;br /&gt;		int bitB=Integer.bitCount(b);&lt;br /&gt;		if(bitA+bitB&amp;lt;=n){&lt;br /&gt;			for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;				ans&amp;lt;&amp;lt;=1;&lt;br /&gt;				if(i&amp;lt;bitA+bitB){&lt;br /&gt;					ans++;&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;		}else{&lt;br /&gt;			for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;				ans&amp;lt;&amp;lt;=1;&lt;br /&gt;				if(i&amp;lt;2*n-(bitA+bitB)){&lt;br /&gt;					ans++;&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		println(ans+"");&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		new Main().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Vote for the Noodle Soup&lt;/p&gt;&lt;p&gt;問題&lt;/p&gt;ある投票システムがある．&lt;br/&gt;投票する際のスコアは+1/-1で，一度投票したら無効には出来ない．&lt;br/&gt;スコアを見るためには，上記のスコアで投票する必要がある．&lt;br/&gt;Poは，（+1/-1に）複数回投票し，スコアを記録した．&lt;br/&gt;得られたスコアから，（Poを除いた）総投票者の最小数を求めよ．&lt;br/&gt;&lt;p&gt;解法&lt;/p&gt;得られたスコアをscore[i]と表す．&lt;br/&gt;Poが入れたポイント（vote[i]とする）は計算の邪魔なので，score[i]から予め引いておく．&lt;br/&gt;score[0]～score[n-1]まで逐一見ていく．&lt;br/&gt;i番目まで見たときの投票者数の最小値をnUsers[i]とする．&lt;br/&gt;明らかなのは，&lt;br/&gt;nUsers[0]=0&lt;br/&gt;nUsers[i+1]=max(nUsers[i], |score[i+1]|)&lt;br/&gt;ということ．投票者数は，最低でもスコアの絶対値だけ必要．&lt;br/&gt;次に，nUsers[i]+score[i+1]が奇数だった場合は，&lt;br/&gt;nUsers[i+1]=nUsers[i]+1&lt;br/&gt;とする必要がある．何故なら，&lt;br/&gt;nUsers[i]が偶数/奇数⇔score[i]が偶数/奇数&lt;br/&gt;だから．そして，投票者数は減らないから，+1する．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-9;&lt;br /&gt;&lt;br /&gt;	int n;&lt;br /&gt;	int[] vote, ps;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		for(;;){&lt;br /&gt;			n=sc.nextInt();&lt;br /&gt;			if(n==0){&lt;br /&gt;				break;&lt;br /&gt;			}&lt;br /&gt;			vote=new int[n];&lt;br /&gt;			ps=new int[n];&lt;br /&gt;			for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;				vote[i]=sc.next().equals("P")?+1:-1;&lt;br /&gt;				ps[i]=sc.nextInt()-vote[i];&lt;br /&gt;			}&lt;br /&gt;			solve();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void solve(){&lt;br /&gt;		int min=0;&lt;br /&gt;		for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;			if(abs(ps[i]+min)%2==1){&lt;br /&gt;				min++;&lt;br /&gt;			}&lt;br /&gt;			min=max(min, abs(ps[i]));&lt;br /&gt;		}&lt;br /&gt;		println(min+"");&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		new Main().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Result&lt;/p&gt;o-o--&lt;br/&gt;実に不本意な結果…．&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6416725975870334597?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6416725975870334597/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6416725975870334597' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6416725975870334597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6416725975870334597'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/08/codechef-june-cook-off-2011.html' title='CodeChef August Cook-off 2011'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-2437671363545615986</id><published>2011-08-10T00:32:00.001+09:00</published><updated>2011-08-10T00:36:40.133+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KUPC'/><title type='text'>京都大学プログラミングコンテスト KUPC 2011</title><content type='html'>&lt;p&gt;京都大学プログラミングコンテスト KUPC 2011(8/6 13:00~18:00)&lt;/p&gt;久しぶりに，非定期コンテストに参加．&lt;p&gt;■A KUPC&lt;/p&gt;文字ごとの出現回数をカウントして，&lt;br/&gt;min(count['K'], count['U'], count['P'], count['C'])&lt;br/&gt;が答え．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-12;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		String s=sc.next();&lt;br /&gt;		int[] count=new int[256];&lt;br /&gt;		for(char c : s.toCharArray()){&lt;br /&gt;			count[c]++;&lt;br /&gt;		}&lt;br /&gt;		int ans=min(count['K'], min(count['U'], min(count['P'], count['C'])));&lt;br /&gt;		println(ans+"");&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		// System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;		new Main().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■B 蝉&lt;/p&gt;典型的なDP．&lt;br/&gt;dp[y][x] := (x,y)に到達までに出会う蝉の数の最小値&lt;br/&gt;右か下にしかいけないので，(x,y)の左と上を見ればdp[y][x]を決定できる．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-12;&lt;br /&gt;&lt;br /&gt;	int n, m;&lt;br /&gt;	int[][] a;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		n=sc.nextInt();&lt;br /&gt;		m=sc.nextInt();&lt;br /&gt;		a=new int[n][m];&lt;br /&gt;		for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;			String s=sc.next();&lt;br /&gt;			for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;				a[j][i]=s.charAt(i)-'0';&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		int[][] dp=new int[n][m];&lt;br /&gt;		for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;			fill(dp[j], INF);&lt;br /&gt;		}&lt;br /&gt;		dp[0][0]=0;&lt;br /&gt;		for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;			for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;				if(j&amp;gt;0){&lt;br /&gt;					dp[j][i]=min(dp[j][i], dp[j-1][i]+a[j][i]);&lt;br /&gt;				}&lt;br /&gt;				if(i&amp;gt;0){&lt;br /&gt;					dp[j][i]=min(dp[j][i], dp[j][i-1]+a[j][i]);&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		println(dp[n-1][m-1]+"");&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		// System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;		new Main().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■C しりとり&lt;/p&gt;'xa'と尋ね続ければ，その内，'a'で始まる文字列が無くなることを利用する．&lt;br/&gt;途中で，不正な返答が来た時の処理等を忘れてWAを食らいまくる．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;package c;&lt;br /&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;	int INF=1&lt;&lt;28;&lt;br /&gt;	double EPS=1e-12;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		TreeSet&lt;String&gt; set=new TreeSet&lt;String&gt;();&lt;br /&gt;		println("?a");&lt;br /&gt;		System.out.flush();&lt;br /&gt;		set.add("a");&lt;br /&gt;		String next="";&lt;br /&gt;		char ch='a';&lt;br /&gt;		for(; sc.hasNext();){&lt;br /&gt;			String s=sc.next();&lt;br /&gt;			boolean out=false;&lt;br /&gt;			out|=s.charAt(0)!='a';&lt;br /&gt;			out|=set.contains(s);&lt;br /&gt;			if(out){&lt;br /&gt;				println("!OUT");&lt;br /&gt;				break;&lt;br /&gt;			}&lt;br /&gt;			set.add(s);&lt;br /&gt;			println("?"+s.charAt(s.length()-1)+next+ch+"a");&lt;br /&gt;			if(ch++=='z'){&lt;br /&gt;				next+='z';&lt;br /&gt;				ch='a';&lt;br /&gt;			}&lt;br /&gt;			System.out.flush();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		// System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;		new Main().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;■D 列の構成&lt;/p&gt;ずっとやり方を考えていたが，DFS+適当な枝刈りで通ってしまった．想定解法は乱択アルゴリズムという珍しい問題．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-12;&lt;br /&gt;&lt;br /&gt;	int n, k;&lt;br /&gt;	int[][] a, sum;&lt;br /&gt;	int[] count, seq;&lt;br /&gt;	boolean[] brank;&lt;br /&gt;	boolean end=false;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		n=sc.nextInt();&lt;br /&gt;		k=sc.nextInt();&lt;br /&gt;		a=new int[k][n];&lt;br /&gt;		brank=new boolean[n];&lt;br /&gt;		sum=new int[k][n+1];&lt;br /&gt;		fill(brank, true);&lt;br /&gt;		for(int j=0; j&amp;lt;k; j++){&lt;br /&gt;			for(int i=0; i&amp;lt;n/2; i++){&lt;br /&gt;				int k=sc.nextInt();&lt;br /&gt;				a[j][k-1]=1;&lt;br /&gt;				brank[k-1]=false;&lt;br /&gt;			}&lt;br /&gt;			for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;				sum[j][i+1]=sum[j][i]+a[j][i];&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		count=new int[k];&lt;br /&gt;		seq=new int[n];&lt;br /&gt;		rec(0);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void rec(int x){&lt;br /&gt;		if(end){&lt;br /&gt;			return;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		// 枝刈り&lt;br /&gt;		for(int j=0; j&amp;lt;k; j++){&lt;br /&gt;			int rem=sum[j][n]-sum[j][x];&lt;br /&gt;			if(count[j]+rem&amp;lt;n/8){&lt;br /&gt;				return;&lt;br /&gt;			}&lt;br /&gt;			if(count[j]&amp;gt;3*n/8){&lt;br /&gt;				return;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		if(x==n){&lt;br /&gt;			end=true;&lt;br /&gt;			for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;				print(seq[i]+"");&lt;br /&gt;			}&lt;br /&gt;			println("");&lt;br /&gt;			return;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		if(brank[x]){&lt;br /&gt;			rec(x+1);&lt;br /&gt;			return;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		seq[x]=0;&lt;br /&gt;		rec(x+1);&lt;br /&gt;&lt;br /&gt;		seq[x]=1;&lt;br /&gt;		for(int j=0; j&amp;lt;k; j++){&lt;br /&gt;			count[j]+=a[j][x];&lt;br /&gt;		}&lt;br /&gt;		rec(x+1);&lt;br /&gt;		for(int j=0; j&amp;lt;k; j++){&lt;br /&gt;			count[j]-=a[j][x];&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		// System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;		new Main().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■E Fox Number&lt;/p&gt;Fox Numberでない数を列挙する．n=p&lt;sub&gt;1&lt;/sub&gt;p&lt;sub&gt;2&lt;/sub&gt;&lt;sup&gt;2&lt;/sup&gt;は条件を満たさないことを使う（p&lt;sub&gt;1&lt;/sub&gt;，p&lt;sub&gt;2&lt;/sub&gt;は素数）．&lt;br/&gt;kn∈[A-B, A+B]となる最小のkを以下で求める．&lt;br/&gt;k=max([(A-B)/n], 1)&lt;br/&gt;そして，kn∈[A-B, A+B]である間，kをインクリメント．&lt;br/&gt;ここで，kn=p&lt;sub&gt;1&lt;/sub&gt;&lt;sup&gt;1+r&lt;sub&gt;k&lt;/sub&gt;&lt;/sup&gt;p&lt;sub&gt;2&lt;/sub&gt;&lt;sup&gt;2+s&lt;sub&gt;k&lt;/sub&gt;&lt;/sup&gt;mと表わすことが出来る．&lt;br/&gt;1+r&lt;sub&gt;k&lt;/sub&gt; &amp;lt; 2+s&lt;sub&gt;k&lt;/sub&gt;&lt;br/&gt;ならば，knはFox Numberでないので，&lt;br/&gt;isNotFoxNumber[kn]=true&lt;br/&gt;これを妥当な範囲内の素数全てについて行う．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.util.Map.Entry;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;	Scanner sc=new Scanner(System.in);&lt;br /&gt;	int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt;	double EPS=1e-12;&lt;br /&gt;&lt;br /&gt;	long a;&lt;br /&gt;	int b;&lt;br /&gt;	int p, m;&lt;br /&gt;	int[] prime;&lt;br /&gt;	boolean[] isPrime;&lt;br /&gt;	boolean[] fox;&lt;br /&gt;&lt;br /&gt;	void run(){&lt;br /&gt;		a=sc.nextLong();&lt;br /&gt;		b=sc.nextInt();&lt;br /&gt;&lt;br /&gt;		fox=new boolean[2*b+1];&lt;br /&gt;		fill(fox, true);&lt;br /&gt;		&lt;br /&gt;		for(int i=0;i&amp;lt;2*b+1;i++){&lt;br /&gt;			if(i-b+a&amp;lt;2){&lt;br /&gt;				fox[i]=false;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		m=(int)sqrt(a+b)+10;&lt;br /&gt;		p=0;&lt;br /&gt;		prime=new int[m];&lt;br /&gt;		isPrime=new boolean[m+1];&lt;br /&gt;		Arrays.fill(isPrime, true);&lt;br /&gt;		isPrime[0]=isPrime[1]=false;&lt;br /&gt;		for(int i=2; i&amp;lt;=m; i++){&lt;br /&gt;			if(isPrime[i]){&lt;br /&gt;				prime[p++]=i;&lt;br /&gt;				for(int j=2*i; j&amp;lt;=m; j+=i)&lt;br /&gt;					isPrime[j]=false;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		int e1=1, e2=2;&lt;br /&gt;		for(int p2=0; p2&amp;lt;p; p2++){&lt;br /&gt;			long n2=(long)prime[p2]*prime[p2];&lt;br /&gt;			if(n2&amp;gt;a+b){&lt;br /&gt;				break;&lt;br /&gt;			}&lt;br /&gt;			for(int p1=0; p1&amp;lt;p2; p1++){&lt;br /&gt;				long n1=prime[p1];&lt;br /&gt;				long n=n1*n2;&lt;br /&gt;				if(n&amp;lt;0){&lt;br /&gt;					debug(n);&lt;br /&gt;				}&lt;br /&gt;				if(n&amp;gt;a+b){&lt;br /&gt;					break;&lt;br /&gt;				}&lt;br /&gt;&lt;br /&gt;				int c=0;&lt;br /&gt;				for(long k=max((a-b)/n, 1); k*n&amp;lt;=a+b; k++){&lt;br /&gt;					c++;&lt;br /&gt;					int pc1=0;&lt;br /&gt;					for(long i=k; i%prime[p1]==0; i/=prime[p1]){&lt;br /&gt;						pc1++;&lt;br /&gt;					}&lt;br /&gt;					int pc2=0;&lt;br /&gt;					for(long i=k; i%prime[p2]==0; i/=prime[p2]){&lt;br /&gt;						pc2++;&lt;br /&gt;					}&lt;br /&gt;&lt;br /&gt;					if(e1+pc1&amp;lt;e2+pc2){&lt;br /&gt;						if(k*n&amp;gt;=a-b){&lt;br /&gt;							fox[(int)(k*n-a+b)]=false;&lt;br /&gt;						}&lt;br /&gt;					}&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		int c=0;&lt;br /&gt;		for(int i=0; i&amp;lt;2*b+1; i++){&lt;br /&gt;			if(fox[i]){&lt;br /&gt;				c++;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		println(c+"");&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void debug(Object... os){&lt;br /&gt;		System.err.println(Arrays.deepToString(os));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void print(String s){&lt;br /&gt;		System.out.print(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	void println(String s){&lt;br /&gt;		System.out.println(s);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args){&lt;br /&gt;		// System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;		new Main().run();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■結果&lt;/p&gt;ooooo----- 500pts. 17th&lt;br/&gt;まぁまぁの成績．&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-2437671363545615986?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/2437671363545615986/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=2437671363545615986' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2437671363545615986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2437671363545615986'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/08/kupc-2011.html' title='京都大学プログラミングコンテスト KUPC 2011'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6674018270076007426</id><published>2011-07-27T06:21:00.000+09:00</published><updated>2011-07-27T06:21:29.894+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TopCoder SRM 513</title><content type='html'>&lt;p&gt;TopCoder SRM 513(7/26 20:00~22:00)&lt;/p&gt;珍しい時間帯のSRM．夕飯後は眠くなるので辛い．&lt;p&gt;■YetAnotherIncredibleMachine(Easy)&lt;/p&gt;&lt;p&gt;・解法&lt;/p&gt;全探索．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class YetAnotherIncredibleMachine {&lt;br /&gt; // long INF=1L&amp;lt;&amp;lt;48;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public int countWays(int[] mount, int[] length, int[] balls) {&lt;br /&gt;  int n=length.length;&lt;br /&gt;  int m=balls.length;&lt;br /&gt;  long res=1;&lt;br /&gt;  long mod=1000000009;&lt;br /&gt;  for(int j=0;j&amp;lt;n;j++){ &lt;br /&gt;   int c=0;&lt;br /&gt;   for(int x=-length[j];x&amp;lt;=0;x++){&lt;br /&gt;    boolean f=true;&lt;br /&gt;    for(int i=0;i&amp;lt;m;i++){&lt;br /&gt;     if(mount[j]+x&amp;lt;=balls[i]&amp;&amp;balls[i]&amp;lt;=mount[j]+x+length[j]){&lt;br /&gt;      f=false;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    if(f){&lt;br /&gt;     c++;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   res=(res*c)%mod;&lt;br /&gt;  }&lt;br /&gt;  return (int)res;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Powered by FileEdit&lt;br /&gt;// Powered by TZTester 1.01 [25-Feb-2003]&lt;br /&gt;// Powered by CodeProcessor&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■PerfectMemory(Medium)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;n(：偶数)枚のカードで神経衰弱を行う．一度めくったカードを全て記憶しておくことができるとしたとき，最適な戦略を用いた場合のゲーム終了までにめくる回数の期待値を求めよ．&lt;p&gt;解法&lt;/p&gt;(残り枚数, 既に知っているカードの枚数)で期待値のDP．&lt;br/&gt;既に知っているカードには，ペアは含まれない（=どの2枚も異なる）とする．&lt;br/&gt;状態が(n, m)の時，n-mから1枚引く．&lt;br/&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-8sbO_nhh0U0/Ti8vZQDUHdI/AAAAAAAABL8/wBqb3ALmchs/s1600/0.png"&gt;&lt;img border="0" height="134" width="200" src="http://3.bp.blogspot.com/-8sbO_nhh0U0/Ti8vZQDUHdI/AAAAAAAABL8/wBqb3ALmchs/s200/0.png" /&gt;&lt;/a&gt;&lt;/div&gt;図では，暗い赤が知っているm枚（引かれないカード），明るい赤は暗い赤のカードに対応するペアの片割れ．&lt;p&gt;1.明るい赤を引いた時(m枚)&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-9n5O3nSXOuU/Ti8uiX5xM8I/AAAAAAAABL0/koMtKtut248/s1600/1.png"&gt;&lt;img border="0" height="134" width="200" src="http://4.bp.blogspot.com/-9n5O3nSXOuU/Ti8uiX5xM8I/AAAAAAAABL0/koMtKtut248/s200/1.png" /&gt;&lt;/a&gt;&lt;/div&gt;対応するカードを暗い赤から選ぶ．つまり，1ターンで，状態が(n-2,m-1)になる．よって，この時の期待値は1+dp(n-2,m-1)．&lt;p&gt;2.青を引いた時(n-2m枚)&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-_SKgRTiEIg8/Ti8uiMKDrNI/AAAAAAAABLs/-TDxlJN8fjs/s1600/2.png"&gt;&lt;img border="0" height="134" width="200" src="http://1.bp.blogspot.com/-_SKgRTiEIg8/Ti8uiMKDrNI/AAAAAAAABLs/-TDxlJN8fjs/s200/2.png" /&gt;&lt;/a&gt;&lt;/div&gt;引いたカードを暗い紫とする．この時対応するカードは青にある（明るい紫）．次に，n-m-1(青+明るい赤+明るい紫)から1枚引く．&lt;p&gt;2.1.明るい赤を引いたとき(m枚)&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-LXbVykEVavg/Ti8uiM0YSHI/AAAAAAAABLk/5UbwRBawTpE/s1600/2_1.png"&gt;&lt;img border="0" height="134" width="200" src="http://2.bp.blogspot.com/-LXbVykEVavg/Ti8uiM0YSHI/AAAAAAAABLk/5UbwRBawTpE/s200/2_1.png" /&gt;&lt;/a&gt;&lt;/div&gt;次のターンで，対応する赤のペアを引く．この時の期待値は，2+dp(n-2,m)．&lt;p&gt;2.2.青を引いたとき(n-2m-2枚)&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-tHXeGIIVDyQ/Ti8uh9msuVI/AAAAAAAABLc/UVvlwsuNqEc/s1600/2_2.png"&gt;&lt;img border="0" height="134" width="200" src="http://1.bp.blogspot.com/-tHXeGIIVDyQ/Ti8uh9msuVI/AAAAAAAABLc/UVvlwsuNqEc/s200/2_2.png" /&gt;&lt;/a&gt;&lt;/div&gt;既に知っているカードが2枚増えるだけなので，この時の期待値は，1+dp(n,m+2)．&lt;p&gt;2.3.明るい紫を引いたとき(1枚)&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-qDLF6v_N-nU/Ti8uhub_QCI/AAAAAAAABLU/t34IoZHLmU4/s1600/2_3.png"&gt;&lt;img border="0" height="134" width="200" src="http://3.bp.blogspot.com/-qDLF6v_N-nU/Ti8uhub_QCI/AAAAAAAABLU/t34IoZHLmU4/s200/2_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;紫ペアがなくなるので，この時の期待値は，1+(n-2,m)．&lt;br/&gt;&lt;br/&gt;これらからDPテーブルを更新していきます．初期値の与え方が面倒なので，メモ化再帰でもいいかも知れません．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class PerfectMemory {&lt;br /&gt; // long INF=1L&amp;lt;&amp;lt;48;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public double getExpectation(int N, int M) {&lt;br /&gt;  int n=N*M;&lt;br /&gt;  double[][] dp=new double[n+1][n+1];&lt;br /&gt;  for(int j=2;j&amp;lt;=n;j+=2){&lt;br /&gt;   for(int i=j;i&amp;gt;=j/2;i--){&lt;br /&gt;    dp[j][i]=j/2;&lt;br /&gt;   }&lt;br /&gt;   for(int i=j/2-1;i&amp;gt;=0;i--){&lt;br /&gt;    double p1=(double)(j-2*i)/(j-i);&lt;br /&gt;    double p2=(double)i/(j-i);&lt;br /&gt;    double q1=(double)i/(j-i-1);&lt;br /&gt;    double q2=(double)(j-2*i-2)/(j-i-1);&lt;br /&gt;    double q3=(double)1/(j-i-1);&lt;br /&gt;    dp[j][i]+=(2+dp[j-2][i])*p1*q1;&lt;br /&gt;    dp[j][i]+=(1+dp[j][i+2])*p1*q2;&lt;br /&gt;    dp[j][i]+=(1+dp[j-2][i])*p1*q3;&lt;br /&gt;    if(i&amp;gt;0){&lt;br /&gt;     dp[j][i]+=(1+dp[j-2][i-1])*p2;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(int i=0;i&amp;lt;=n;i+=2){&lt;br /&gt;   // debug(i, dp[i]);&lt;br /&gt;  }&lt;br /&gt;  return dp[n][0];&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Powered by FileEdit&lt;br /&gt;// Powered by TZTester 1.01 [25-Feb-2003]&lt;br /&gt;// Powered by CodeProcessor&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Challenge Phase&lt;/p&gt;撃墜無し．&lt;br/&gt;&lt;p&gt;■Result&lt;/p&gt;oo- +0/-0&lt;br/&gt;429.5pts. 104th&lt;br/&gt;おそらくDiv.1では過去最高の成績です．加えてMediumを解けたのが初めてです．&lt;/br&gt;&lt;p&gt;■Rating&lt;/p&gt;1620 -&gt; 1727&lt;br/&gt;大幅上昇．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6674018270076007426?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6674018270076007426/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6674018270076007426' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6674018270076007426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6674018270076007426'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/07/topcoder-srm-513.html' title='TopCoder SRM 513'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-8sbO_nhh0U0/Ti8vZQDUHdI/AAAAAAAABL8/wBqb3ALmchs/s72-c/0.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6521935625980899185</id><published>2011-07-04T02:24:00.000+09:00</published><updated>2011-07-04T02:24:30.678+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TopCoder SRM 511</title><content type='html'>&lt;p&gt;TopCoder SRM 511(7/3 1:00~3:00)&lt;/p&gt;YellowCoderとしては初のSRM．&lt;p&gt;■Zoo(Easy)&lt;/p&gt;&lt;p&gt;・問題&lt;/p&gt;うさぎと猫がN匹いる．きつねは，うさぎと猫の区別が分からない．&lt;br/&gt;そこで，N匹のそれぞれに「自分と同じ種類でかつ自分より背の高い動物は何匹いますか？」と尋ねた．&lt;br/&gt;この情報のみを用いて，N匹へのうさぎと猫の割り当て方の総数を求めよ．&lt;br/&gt;&lt;p&gt;・解法&lt;/p&gt;N匹の答えをa[0],…,a[N-1]とし，&lt;br/&gt;配列countを配列aに出てきた数字の個数とする．&lt;br/&gt;例えば，a={0,1,0,1,2,3}&lt;br/&gt;だったら，&lt;br/&gt;count={2,2,1,1,0,0,…}&lt;br/&gt;となる．&lt;br/&gt;上の例では，一方が2匹，もう一方が4匹いると分かる．&lt;br/&gt;まず，うさぎが2匹，猫が4匹とする．&lt;br/&gt;このとき，a[i]が0または1のときに関しては，うさぎと猫をどのように割り当てても良い．&lt;br/&gt;具体的には，&lt;br/&gt;RRCC|CC&lt;br/&gt;CCRR|CC&lt;br/&gt;RCCR|CC&lt;br/&gt;CRRC|CC&lt;br/&gt;こんな感じ（2&lt;sup&gt;2&lt;/sup&gt;通り）．&lt;br/&gt;逆に，うさぎが4匹，猫が2匹としても，上と同じよう構成ができるので，&lt;br/&gt;結局2*2&lt;sup&gt;2&lt;/sup&gt;=8通り．&lt;br/&gt;これは，5匹と2匹，6匹と2匹，…でも変わらない．&lt;br/&gt;そのため，N=m+nと分かれる場合，&lt;br/&gt;m≠nならば，2*2&lt;sup&gt;min(m,n)&lt;/sup&gt;通り，&lt;br/&gt;m=nならば，2&lt;sup&gt;m&lt;/sup&gt;通り．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Zoo {&lt;br /&gt; // long INF=1L&amp;lt;&amp;lt;48;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public long theCount(int[] a) {&lt;br /&gt;  int n=a.length;&lt;br /&gt;  int[] count=new int[n];&lt;br /&gt;  for(int i:a){&lt;br /&gt;   if(i&amp;gt;=n){&lt;br /&gt;    return 0;&lt;br /&gt;   }&lt;br /&gt;   if(++count[i]&amp;gt;2){&lt;br /&gt;    return 0;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  int p=0, q=0;&lt;br /&gt;  int k=0;&lt;br /&gt;  // debug(count);&lt;br /&gt;  for(int i=n-1;i&amp;gt;=0;i--){&lt;br /&gt;   if(count[i]==k+2){&lt;br /&gt;    p=q=i+1;&lt;br /&gt;   }&lt;br /&gt;   else if(count[i]==k+1){&lt;br /&gt;    if(k==0){&lt;br /&gt;     p=i+1;&lt;br /&gt;    }else if(k==1){&lt;br /&gt;     q=i+1;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   else if(count[i]==k){&lt;br /&gt;   }&lt;br /&gt;   else{&lt;br /&gt;    return 0;&lt;br /&gt;   }&lt;br /&gt;   k=count[i];&lt;br /&gt;  }&lt;br /&gt;  // debug(p,q);&lt;br /&gt;  long ret=1;&lt;br /&gt;  for(int i=0;i&amp;lt;min(p,q);i++){&lt;br /&gt;   ret*=2;&lt;br /&gt;  }&lt;br /&gt;  return ret*(p!=q?2:1);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■FiveHundredElevenAdd(Medium)&lt;/p&gt;本番は解けませんでしたので，simezi_tanさんの記事を参照下さい．&lt;br/&gt;&lt;a href="http://d.hatena.ne.jp/simezi_tan/20110703/1309636474"&gt;SRM 511 Div1 Medium FiveHundredEleven - simezi_tanの日記&lt;/a&gt;&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class FiveHundredEleven {&lt;br /&gt; // long INF=1L&amp;lt;&amp;lt;48;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int[][] memo; // 0:win, 1:lose&lt;br /&gt; int[] cards;&lt;br /&gt; int n;&lt;br /&gt;&lt;br /&gt; int rec(int step,int mem){&lt;br /&gt;  if(memo[step][mem]&amp;gt;=0){&lt;br /&gt;   return memo[step][mem];&lt;br /&gt;  }&lt;br /&gt;  if(mem==511){&lt;br /&gt;   // former player loses.&lt;br /&gt;   return memo[step][mem]=0;&lt;br /&gt;  }&lt;br /&gt;  if(step==n){&lt;br /&gt;   // the player can't choose a card.&lt;br /&gt;   return memo[step][mem]=1;&lt;br /&gt;  }&lt;br /&gt;  int not=0;&lt;br /&gt;  for(int i=0;i&amp;lt;n;i++){&lt;br /&gt;   if((mem|cards[i])==mem){&lt;br /&gt;    not++;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  boolean win=false;&lt;br /&gt;  // search : not-step cards that don't affect mem are not used&lt;br /&gt;  if(not&amp;gt;step){&lt;br /&gt;   win|=rec(step+1,mem)==1;&lt;br /&gt;  }&lt;br /&gt;  // search : cards that affect mem.&lt;br /&gt;  for(int i=0;i&amp;lt;n;i++){&lt;br /&gt;   if((mem|cards[i])!=mem){&lt;br /&gt;    win|=rec(step+1,mem|cards[i])==1;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return memo[step][mem]=win?0:1;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String theWinner(int[] cards) {&lt;br /&gt;  this.cards=cards;&lt;br /&gt;  n=cards.length;&lt;br /&gt;  memo=new int[n+1][512];&lt;br /&gt;  for(int i=0;i&amp;lt;n+1;i++){&lt;br /&gt;   fill(memo[i],-1);&lt;br /&gt;  }&lt;br /&gt;  return rec(0,0)==0?"Fox Ciel":"Toastman";&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Challenge Phase&lt;/p&gt;撃墜無し．撃墜しようと準備していましたが，他の人のコードが中々読めませんでした．&lt;br/&gt;&lt;p&gt;■Result&lt;/p&gt;o-- +0/-0&lt;br/&gt;144.29pts. 491th&lt;br/&gt;&lt;p&gt;■Rating&lt;/p&gt;1532 -&gt; 1527&lt;br/&gt;微減．次は，TCO Round3ですが，個人的には気楽に挑戦したいと思っています．&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6521935625980899185?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6521935625980899185/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6521935625980899185' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6521935625980899185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6521935625980899185'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/07/topcoder-srm-511.html' title='TopCoder SRM 511'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-2984053157702316483</id><published>2011-06-29T04:58:00.000+09:00</published><updated>2011-06-29T04:58:52.591+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TCO Algorithm Round2</title><content type='html'>&lt;p&gt;TCO Algorithm Round2(6/26 1:00~3:00)&lt;/p&gt;驚異の悪運によりRound1を通過することが出来ていましたが，果してRound2は…．&lt;p&gt;■GuessTheNumberGame(Easy)&lt;/p&gt;ある数字Mを1~Nまでの数で割り切れるかどうかを表す文字列を考える．例えばM=4，N=5とすると4は1,2,4で割り切れ，3,5では割り切れないので，YYNYNとなる．さて，N=5のとき，YNNYNとなるようなMは存在しないため，この文字列は無効である（4で割り切れて、2で割り切れないから）．長さMの文字列で，有効なものは何種類あるか．2種類以上の素数の積からなる合成数は，素因数のY or Nで一意に決まってしまうので，考慮しない．例えば，YYY--XならX=YYYN--XならX=NYNY--XならX=NYNN--XならX=Nとなる．次に，ある素数の冪乗を考える．例えば，M=9とすると，2の冪乗は2,4,8まで．この3つに着目した有効な文字列は，NNNYNNYYNYYYの4種類．つまり，p&lt;sup&gt;1&lt;/sup&gt;, p&lt;sup&gt;2&lt;/sup&gt;,…, p&lt;sup&gt;r&lt;/sup&gt;について有効な文字列はr+1種類．あとは，それらを掛け合わせるだけ．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class GuessTheNumberGame {&lt;br /&gt; // long INF=1L&amp;lt;&amp;lt;48;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public int possibleClues(int n) {&lt;br /&gt;  long res=1;&lt;br /&gt;  long mod=1000000007;&lt;br /&gt;  boolean[] isP=new boolean[n+1];&lt;br /&gt;  int[] p=new int[n+1];&lt;br /&gt;  fill(isP,true);&lt;br /&gt;  isP[0]=isP[1]=false;&lt;br /&gt;  int k=0;&lt;br /&gt;  for(int j=0;j&amp;lt;=n;j++){&lt;br /&gt;   if(!isP[j]){&lt;br /&gt;    continue;&lt;br /&gt;   }&lt;br /&gt;   p[k++]=j;&lt;br /&gt;   for(int i=j*2;i&amp;lt;=n;i+=j){&lt;br /&gt;    isP[i]=false;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  // debug(p);&lt;br /&gt;  for(int i=0;i&amp;lt;k;i++){&lt;br /&gt;   int c=0;&lt;br /&gt;   for(long m=1;m&amp;lt;=n;m*=p[i]){&lt;br /&gt;    c++;&lt;br /&gt;   }&lt;br /&gt;   // debug(i,p[i],c);&lt;br /&gt;   res=(res*c)%mod;&lt;br /&gt;  }&lt;br /&gt;  return (int)res;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Challenge Phase&lt;/p&gt;撃墜無し．&lt;p&gt;■Result&lt;/p&gt;o-- +0/-0&lt;br/&gt;196.11pts. 341th&lt;br/&gt;辛くも逃げきることが出来ました．&lt;p&gt;■Rating&lt;/p&gt;1431 -&gt; 1530&lt;br/&gt;Round3進出+初YellowCoderです．今年のICPCは国内予選で落ちてしまったので，中々にショックでしたが，代わりにGoogleとTopCoder両方のTシャツをゲットできそうです．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-2984053157702316483?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/2984053157702316483/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=2984053157702316483' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2984053157702316483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2984053157702316483'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/tco-algorithm-round2.html' title='TCO Algorithm Round2'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8079777008852578232</id><published>2011-06-23T18:33:00.001+09:00</published><updated>2011-06-23T18:33:42.031+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1149 Cut the Cakes</title><content type='html'>&lt;p&gt;■1149 Cut the Cakes&lt;/p&gt;やればできる．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, w, h;&lt;br /&gt; int[] ps, ss;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   w=sc.nextInt();&lt;br /&gt;   h=sc.nextInt();&lt;br /&gt;   if((n|w|h)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   ps=new int[n];&lt;br /&gt;   ss=new int[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    ps[i]=sc.nextInt()-1;&lt;br /&gt;    ss[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  LinkedList&amp;lt;R&amp;gt; list=new LinkedList&amp;lt;R&amp;gt;();&lt;br /&gt;  list.add(new R(0, 0, w, h));&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   R r=list.remove(ps[i]);&lt;br /&gt;   debug(i, r.x, r.y, r.w, r.h);&lt;br /&gt;   int x=r.x, y=r.y;&lt;br /&gt;   for(int k=0; k&amp;lt;ss[i]; k++){&lt;br /&gt;    if(y==r.y&amp;&amp;x&amp;lt;r.x+r.w){&lt;br /&gt;     x++;&lt;br /&gt;    }else if(x==r.x+r.w&amp;&amp;y&amp;lt;r.y+r.h){&lt;br /&gt;     y++;&lt;br /&gt;    }else if(y==r.y+r.h&amp;&amp;x&amp;gt;r.x){&lt;br /&gt;     x--;&lt;br /&gt;    }else if(x==r.x&amp;&amp;y&amp;gt;r.y){&lt;br /&gt;     y--;&lt;br /&gt;    }else{&lt;br /&gt;     debug("Error!");&lt;br /&gt;    }&lt;br /&gt;    // debug(x,y);&lt;br /&gt;   }&lt;br /&gt;   debug(x, y);&lt;br /&gt;   R r1=null, r2=null;&lt;br /&gt;   if(x==r.x||x==r.x+r.w){&lt;br /&gt;    r1=new R(r.x, r.y, r.w, y-r.y);&lt;br /&gt;    r2=new R(r.x, r.y+r1.h, r.w, r.h-r1.h);&lt;br /&gt;   }else{&lt;br /&gt;    r1=new R(r.x, r.y, x-r.x, r.h);&lt;br /&gt;    r2=new R(r.x+r1.w, r.y, r.w-r1.w, r.h);&lt;br /&gt;   }&lt;br /&gt;   debug("r1", r1.x, r1.y, r1.w, r1.h);&lt;br /&gt;   debug("r2", r2.x, r2.y, r2.w, r2.h);&lt;br /&gt;   if(r1.w*r1.h&amp;lt;r2.w*r2.h){&lt;br /&gt;    list.add(r1);&lt;br /&gt;    list.add(r2);&lt;br /&gt;   }else{&lt;br /&gt;    list.add(r2);&lt;br /&gt;    list.add(r1);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  R[] rs=list.toArray(new R[0]);&lt;br /&gt;  sort(rs);&lt;br /&gt;  String ans="";&lt;br /&gt;  for(R r : rs){&lt;br /&gt;   ans+=(r.w*r.h)+" ";&lt;br /&gt;   debug(r.x, r.y, r.w, r.h, r.w*r.h);&lt;br /&gt;  }&lt;br /&gt;  println(ans.substring(0, ans.length()-1));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class R implements Comparable&amp;lt;R&amp;gt;{&lt;br /&gt;  int x, y, w, h;&lt;br /&gt;&lt;br /&gt;  R(int x, int y, int w, int h){&lt;br /&gt;   this.x=x;&lt;br /&gt;   this.y=y;&lt;br /&gt;   this.w=w;&lt;br /&gt;   this.h=h;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(R r){&lt;br /&gt;   return w*h-r.w*r.h;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  // System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8079777008852578232?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8079777008852578232/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8079777008852578232' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8079777008852578232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8079777008852578232'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/aizu-online-judge-1149-cut-cakes.html' title='Aizu Online Judge 1149 Cut the Cakes'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6809575567264073074</id><published>2011-06-23T18:33:00.000+09:00</published><updated>2011-06-23T18:33:15.397+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1131 Unit Fraction Partition</title><content type='html'>&lt;p&gt;■1131 Unit Fraction Partition&lt;/p&gt;自明な+ちょっと工夫した枝刈りでAC．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int p0, q0, maxA, maxN;&lt;br /&gt; int ans;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   p0=sc.nextInt();&lt;br /&gt;   q0=sc.nextInt();&lt;br /&gt;   maxA=sc.nextInt();&lt;br /&gt;   maxN=sc.nextInt();&lt;br /&gt;   if((p0|q0|maxA|maxN)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int gcd=gcd(p0, q0);&lt;br /&gt;  p0/=gcd;&lt;br /&gt;  q0/=gcd;&lt;br /&gt;  ans=0;&lt;br /&gt;  dfs(0, 1, 1, 1, 0);&lt;br /&gt;  // debug(ans);&lt;br /&gt;  println(""+ans);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void dfs(int p, int q, int qNow, int a, int n){&lt;br /&gt;  if(n&amp;gt;maxN){&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  if(a&amp;gt;maxA){&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  if(p*q0-q*p0&amp;gt;0){&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  {&lt;br /&gt;   int p2=maxN-n;&lt;br /&gt;   int q2=qNow;&lt;br /&gt;   int pp=p*q2+q*p2;&lt;br /&gt;   int qq=q*q2;&lt;br /&gt;   if(pp*q0-qq*p0&amp;lt;0){&lt;br /&gt;    return;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  // debug(p,q,qNow,a,n);&lt;br /&gt;  if(p==p0&amp;&amp;q==q0){&lt;br /&gt;   ans++;&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  for(int i=qNow; i*a&amp;lt;=maxA; i++){&lt;br /&gt;   int p2=p*i+q;&lt;br /&gt;   int q2=q*i;&lt;br /&gt;   int gcd=gcd(p2, q2);&lt;br /&gt;   p2/=gcd;&lt;br /&gt;   q2/=gcd;&lt;br /&gt;   dfs(p2, q2, i, i*a, n+1);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int gcd(int m, int n){&lt;br /&gt;  for(; m!=0;){&lt;br /&gt;   int t=n%m;&lt;br /&gt;   n=m;&lt;br /&gt;   m=t;&lt;br /&gt;  }&lt;br /&gt;  return n;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6809575567264073074?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6809575567264073074/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6809575567264073074' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6809575567264073074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6809575567264073074'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/aizu-online-judge-1131-unit-fraction.html' title='Aizu Online Judge 1131 Unit Fraction Partition'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-5487582848494458702</id><published>2011-06-20T20:42:00.000+09:00</published><updated>2011-06-20T20:42:36.850+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1156 Twirling Robot</title><content type='html'>&lt;p&gt;■1156 Twirling Robot&lt;/p&gt;(x座標，y座標，方向ベクトル)を状態としたDijkstra．コストのつけ方が特殊だが，少し注意すれば特に問題無い．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int m, n;&lt;br /&gt; int[][] a;&lt;br /&gt; int[] c;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if((m|n)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   a=new int[n][m];&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;     a[j][i]=sc.nextInt();&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   c=new int[4];&lt;br /&gt;   for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;    c[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int[][][] d=new int[n][m][4];&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    fill(d[j][i], INF);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  int[] dx={1, 0, -1, 0};&lt;br /&gt;  int[] dy={0, 1, 0, -1};&lt;br /&gt;  PriorityQueue&amp;lt;P&amp;gt; que=new PriorityQueue&amp;lt;P&amp;gt;();&lt;br /&gt;  que.offer(new P(0, 0, 0));&lt;br /&gt;  d[0][0][0]=0;&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   P p=que.poll();&lt;br /&gt;   if(p.d&amp;gt;d[p.y][p.x][p.v]){&lt;br /&gt;    continue;&lt;br /&gt;   }&lt;br /&gt;   int[] cost=c.clone();&lt;br /&gt;   if(a[p.y][p.x]!=4){&lt;br /&gt;    cost[a[p.y][p.x]]=0;&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;    P q=new P(p.x, p.y, (p.v+i)%4);&lt;br /&gt;    q.x+=dx[q.v];&lt;br /&gt;    q.y+=dy[q.v];&lt;br /&gt;    if(q.x&amp;lt;0||q.x&amp;gt;=m||q.y&amp;lt;0||q.y&amp;gt;=n){&lt;br /&gt;     continue;&lt;br /&gt;    }&lt;br /&gt;    if(d[q.y][q.x][q.v]&amp;gt;d[p.y][p.x][p.v]+cost[i]){&lt;br /&gt;     q.d=d[q.y][q.x][q.v]=d[p.y][p.x][p.v]+cost[i];&lt;br /&gt;     que.offer(q);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  int ans=INF;&lt;br /&gt;  for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;   ans=min(ans, d[n-1][m-1][i]);&lt;br /&gt;  }&lt;br /&gt;  println(ans+"");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P implements Comparable&amp;lt;P&amp;gt;{&lt;br /&gt;  int x, y, v;&lt;br /&gt;  int d;&lt;br /&gt;&lt;br /&gt;  P(int x, int y, int v){&lt;br /&gt;   this.x=x;&lt;br /&gt;   this.y=y;&lt;br /&gt;   this.v=v;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(P p){&lt;br /&gt;   return d-p.d;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-5487582848494458702?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/5487582848494458702/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=5487582848494458702' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5487582848494458702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5487582848494458702'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/aizu-online-judge-1156-twirling-robot.html' title='Aizu Online Judge 1156 Twirling Robot'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-3264318236533047647</id><published>2011-06-20T20:41:00.000+09:00</published><updated>2011-06-20T20:41:07.005+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1136 Polygonal Line Search</title><content type='html'>&lt;p&gt;■1136 Polygonal Line Search&lt;/p&gt;回転および平行移動を適用したということは，各々の線分ベクトルを0,90,180,270°の何れかの角度回転させたことになる．従って，元の折れ線の内の1つの線分ベクトルと，探す対象の折れ線の内の1つの線分ベクトルを見れば何度回転させたか分かる．あとは，残りの線分ベクトルを回転させ，元の折れ線の線分ベクトルに一致するかを見ていけば良い．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; int[] m;&lt;br /&gt; int[][] xs, ys;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   m=new int[n+1];&lt;br /&gt;   xs=new int[n+1][];&lt;br /&gt;   ys=new int[n+1][];&lt;br /&gt;   for(int j=0; j&amp;lt;=n; j++){&lt;br /&gt;    m[j]=sc.nextInt();&lt;br /&gt;    xs[j]=new int[m[j]];&lt;br /&gt;    ys[j]=new int[m[j]];&lt;br /&gt;    for(int i=0; i&amp;lt;m[j]; i++){&lt;br /&gt;     xs[j][i]=sc.nextInt();&lt;br /&gt;     ys[j][i]=sc.nextInt();&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  for(int i=1; i&amp;lt;=n; i++){&lt;br /&gt;   if(m[0]==m[i]&amp;&amp;match(m[0], xs[0], ys[0], xs[i], ys[i])){&lt;br /&gt;    println(i+"");&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println("+++++");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; boolean match(int m, int[] xs1, int[] ys1, int[] xs2, int[] ys2){&lt;br /&gt;  int[][][] a={{{1, 0}, {0, 1}}, {{0, -1}, {1, 0}}, {{-1, 0}, {0, -1}},&lt;br /&gt;    {{0, 1}, {-1, 0}}};&lt;br /&gt;&lt;br /&gt;  int k1=-1, k2=-1;&lt;br /&gt;  for(int j=0; j&amp;lt;4; j++){&lt;br /&gt;   int vx1=xs1[1]-xs1[0];&lt;br /&gt;   int vy1=ys1[1]-ys1[0];&lt;br /&gt;   int vx2=xs2[1]-xs2[0];&lt;br /&gt;   int vy2=ys2[1]-ys2[0];&lt;br /&gt;   if(vx1*a[j][0][0]+vy1*a[j][0][1]==vx2&lt;br /&gt;     &amp;&amp;vx1*a[j][1][0]+vy1*a[j][1][1]==vy2){&lt;br /&gt;    k1=j;&lt;br /&gt;   }&lt;br /&gt;   int vx3=xs2[m-2]-xs2[m-1];&lt;br /&gt;   int vy3=ys2[m-2]-ys2[m-1];&lt;br /&gt;   if(vx1*a[j][0][0]+vy1*a[j][0][1]==vx3&lt;br /&gt;     &amp;&amp;vx1*a[j][1][0]+vy1*a[j][1][1]==vy3){&lt;br /&gt;    k2=j;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  boolean f1=k1!=-1, f2=k2!=-1;&lt;br /&gt;  for(int i=0; i&amp;lt;m-1; i++){&lt;br /&gt;   int vx1=xs1[i+1]-xs1[i];&lt;br /&gt;   int vy1=ys1[i+1]-ys1[i];&lt;br /&gt;   int vx2=xs2[i+1]-xs2[i];&lt;br /&gt;   int vy2=ys2[i+1]-ys2[i];&lt;br /&gt;   int vx3=xs2[m-i-2]-xs2[m-i-1];&lt;br /&gt;   int vy3=ys2[m-i-2]-ys2[m-i-1];&lt;br /&gt;   if(k1!=-1){&lt;br /&gt;    f1&amp;=vx1*a[k1][0][0]+vy1*a[k1][0][1]==vx2&lt;br /&gt;      &amp;&amp;vx1*a[k1][1][0]+vy1*a[k1][1][1]==vy2;&lt;br /&gt;   }&lt;br /&gt;   if(k2!=-1){&lt;br /&gt;    f2&amp;=vx1*a[k2][0][0]+vy1*a[k2][0][1]==vx3&lt;br /&gt;      &amp;&amp;vx1*a[k2][1][0]+vy1*a[k2][1][1]==vy3;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return f1||f2;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-3264318236533047647?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/3264318236533047647/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=3264318236533047647' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3264318236533047647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3264318236533047647'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/aizu-online-judge-1136-polygonal-line.html' title='Aizu Online Judge 1136 Polygonal Line Search'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-4133105462833517137</id><published>2011-06-20T04:58:00.000+09:00</published><updated>2011-06-20T04:58:11.590+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeChef'/><title type='text'>CodeChef June Cook-off 2011</title><content type='html'>&lt;p&gt;CodeChef June Cook-off 2011（6/20 1:00~3:30)&lt;/p&gt;&lt;p&gt;■Correctness of Knight Move&lt;/p&gt;やるだけ．出力をバッファリングしないとTLEします（しました）．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; String s;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  n=sc.nextInt();&lt;br /&gt;  sc.nextLine();&lt;br /&gt;  String[] ans={"Yes", "No", "Error"};&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   s=sc.nextLine();&lt;br /&gt;   println(ans[solve()]);&lt;br /&gt;  }&lt;br /&gt;  System.out.flush();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int solve(){&lt;br /&gt;  boolean legal=true;&lt;br /&gt;  if(s.length()!=5){&lt;br /&gt;   return 2;&lt;br /&gt;  }&lt;br /&gt;  legal&amp;='a'&amp;lt;=s.charAt(0)&amp;&amp;s.charAt(0)&amp;lt;='h';&lt;br /&gt;  legal&amp;='1'&amp;lt;=s.charAt(1)&amp;&amp;s.charAt(1)&amp;lt;='8';&lt;br /&gt;  legal&amp;=s.charAt(2)=='-';&lt;br /&gt;  legal&amp;='a'&amp;lt;=s.charAt(3)&amp;&amp;s.charAt(3)&amp;lt;='h';&lt;br /&gt;  legal&amp;='1'&amp;lt;=s.charAt(4)&amp;&amp;s.charAt(4)&amp;lt;='8';&lt;br /&gt;  if(!legal){&lt;br /&gt;   return 2;&lt;br /&gt;  }&lt;br /&gt;  int x1=s.charAt(0)-'a';&lt;br /&gt;  int y1=s.charAt(1)-'1';&lt;br /&gt;  int x2=s.charAt(3)-'a';&lt;br /&gt;  int y2=s.charAt(4)-'1';&lt;br /&gt;&lt;br /&gt;  int dx=abs(x1-x2);&lt;br /&gt;  int dy=abs(y1-y2);&lt;br /&gt;&lt;br /&gt;  return (dx==1&amp;&amp;dy==2)||(dx==2&amp;&amp;dy==1)?0:1;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Super-plane&lt;/p&gt;Dunnoの挙動は分岐無しなので，適当なループで解けます．コンテスト中は勘違いしていて，BFSをしようとしてTLE食らいまくっていました．さらに，Javaの入出力がバッファリングしてなかったため，少し調整しないと通りませんでした．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt; // Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int t, n;&lt;br /&gt; int cs, ts, cg, tg;&lt;br /&gt; E[] es;&lt;br /&gt;&lt;br /&gt; void run() throws Exception{&lt;br /&gt;  BufferedReader br=new BufferedReader(new InputStreamReader(System.in));&lt;br /&gt;  t=Integer.parseInt(br.readLine());&lt;br /&gt;  for(; t&amp;gt;0; t--){&lt;br /&gt;   n=Integer.parseInt(br.readLine());&lt;br /&gt;   es=new E[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    String[] ss=br.readLine().split(" ");&lt;br /&gt;    int c1=Integer.parseInt(ss[0])-1;&lt;br /&gt;    int t1=Integer.parseInt(ss[1]);&lt;br /&gt;    int c2=Integer.parseInt(ss[2])-1;&lt;br /&gt;    int t2=Integer.parseInt(ss[3]);&lt;br /&gt;    es[i]=new E(c1, t1, c2, t2);&lt;br /&gt;   }&lt;br /&gt;   sort(es);&lt;br /&gt;   String[] ss=br.readLine().split(" ");&lt;br /&gt;   cs=Integer.parseInt(ss[0])-1;&lt;br /&gt;   ts=Integer.parseInt(ss[1]);&lt;br /&gt;   cg=Integer.parseInt(ss[2])-1;&lt;br /&gt;   tg=Integer.parseInt(ss[3]);&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt;  System.out.flush();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  P p=new P(cs, ts);&lt;br /&gt;  boolean[] visited=new boolean[n];&lt;br /&gt;  int ans=0;&lt;br /&gt;  boolean ok=true;&lt;br /&gt;  E key=new E(p.c, p.t, 0, 0);&lt;br /&gt;  for(;; ans++){&lt;br /&gt;   if(p.c==cg&amp;&amp;p.t&amp;lt;=tg){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   key.c1=p.c;&lt;br /&gt;   key.t1=p.t;&lt;br /&gt;   int k=binarySearch(es, key);&lt;br /&gt;   if(k&amp;lt;0){&lt;br /&gt;    k=-1-k;&lt;br /&gt;   }&lt;br /&gt;   if(k==n){&lt;br /&gt;    ok=false;&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   if(es[k].c1!=p.c){&lt;br /&gt;    ok=false;&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   if(visited[k]){&lt;br /&gt;    ok=false;&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   visited[k]=true;&lt;br /&gt;   p.c=es[k].c2;&lt;br /&gt;   p.t=es[k].t2;&lt;br /&gt;  }&lt;br /&gt;  if(ok){&lt;br /&gt;   println("Yes "+ans);&lt;br /&gt;  }else{&lt;br /&gt;   println("No");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class E implements Comparable&amp;lt;E&amp;gt;{&lt;br /&gt;  int c1, t1, c2, t2;&lt;br /&gt;&lt;br /&gt;  E(int c1, int t1, int c2, int t2){&lt;br /&gt;   this.c1=c1;&lt;br /&gt;   this.t1=t1;&lt;br /&gt;   this.c2=c2;&lt;br /&gt;   this.t2=t2;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(E e){&lt;br /&gt;   if(c1!=e.c1){&lt;br /&gt;    return c1-e.c1;&lt;br /&gt;   }else{&lt;br /&gt;    return t1-e.t1;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P implements Comparable&amp;lt;P&amp;gt;{&lt;br /&gt;  int c, t;&lt;br /&gt;&lt;br /&gt;  P(int c, int t){&lt;br /&gt;   this.c=c;&lt;br /&gt;   this.t=t;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(P p){&lt;br /&gt;   if(c!=p.c){&lt;br /&gt;    return c-p.c;&lt;br /&gt;   }else{&lt;br /&gt;    return t-p.t;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  try{&lt;br /&gt;   new Main().run();&lt;br /&gt;  }catch(Exception e){&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Result&lt;/p&gt;--o--&lt;br/&gt;&lt;br/&gt;またもやこれは酷い…．CodeChefとは相性が悪いようです．C++に乗り換えるのも手だと思われます．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-4133105462833517137?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/4133105462833517137/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=4133105462833517137' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4133105462833517137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4133105462833517137'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/codechef-june-cook-off-2011.html' title='CodeChef June Cook-off 2011'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-2660068942885091748</id><published>2011-06-19T03:20:00.000+09:00</published><updated>2011-06-19T03:20:45.991+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TCO Algorithm Round1</title><content type='html'>&lt;p&gt;TCO Algorithm Round1(6/19 1:00~3:00)&lt;/p&gt;&lt;p&gt;■TripleStrings(Easy)&lt;/p&gt;キューA，B，Cがある．最初，キューAには'o'と'x'から構成される文字列(=init)が入っており，キューB，Cは空である．Aからポップした文字は，BとCにプッシュできる．B，Cからポップした文字は，Aにプッシュできる．キューA内の文字列をinitからgoalに変更するためのポップの回数の最小値を返せ．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class TripleStrings {&lt;br /&gt; // long INF=1L&amp;lt;&amp;lt;48;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public int getMinimumOperations(String init, String goal) {&lt;br /&gt;  int n=init.length();&lt;br /&gt;  int max=0;&lt;br /&gt;  for(int j=1;j&amp;lt;=n;j++){&lt;br /&gt;   boolean f=true;&lt;br /&gt;   for(int i=0;i&amp;lt;j;i++){&lt;br /&gt;    f&amp;=init.charAt(n-j+i)==goal.charAt(i);&lt;br /&gt;   }&lt;br /&gt;   if(f){&lt;br /&gt;    max=max(max,j);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return (n-max)*2;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Challenge Phase&lt;/p&gt;撃墜無し．Challengeボタンをポチるコンマ数秒前に他の人に撃墜されました．&lt;p&gt;■Result&lt;/p&gt;o-- +0/-0&lt;br/&gt;232.61pts. 837th&lt;br/&gt;&lt;p&gt;■Rating&lt;/p&gt;1414 -&gt; 1431&lt;br/&gt;残念…．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-2660068942885091748?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/2660068942885091748/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=2660068942885091748' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2660068942885091748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2660068942885091748'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/tco-algorithm-round1.html' title='TCO Algorithm Round1'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-1835258886509074257</id><published>2011-06-07T00:22:00.002+09:00</published><updated>2011-06-07T00:22:59.225+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1155 How can I satisfy thee? Let me count the ways...</title><content type='html'>&lt;p&gt;■1155 How can I satisfy thee? Let me count the ways...&lt;/p&gt;構文解析ゲー．変数への数の割り当て方は高々27通りなので，全部試せば良い．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;// AC&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; String s;&lt;br /&gt; int[] map;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   s=sc.next();&lt;br /&gt;   if(s.equals(".")){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  map=new int[256];&lt;br /&gt;  map['0']=0;&lt;br /&gt;  map['1']=1;&lt;br /&gt;  map['2']=2;&lt;br /&gt;  int ans=0;&lt;br /&gt;  for(int p=0; p&amp;lt;3; p++){&lt;br /&gt;   for(int q=0; q&amp;lt;3; q++){&lt;br /&gt;    for(int r=0; r&amp;lt;3; r++){&lt;br /&gt;     map['P']=p;&lt;br /&gt;     map['Q']=q;&lt;br /&gt;     map['R']=r;&lt;br /&gt;     Result res=f(0);&lt;br /&gt;     if(res.value==2){&lt;br /&gt;      ans++;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println(ans+"");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; Result f(int p){&lt;br /&gt;  // debug("f",p);&lt;br /&gt;  if(Character.isDigit(s.charAt(p))||Character.isUpperCase(s.charAt(p))){&lt;br /&gt;   return new Result(p+1, map[s.charAt(p)]);&lt;br /&gt;  }else if(s.charAt(p)=='-'){&lt;br /&gt;   Result r=f(p+1);&lt;br /&gt;   r.value=2-r.value;&lt;br /&gt;   return r;&lt;br /&gt;  }else{&lt;br /&gt;   Result r=f(p+1);&lt;br /&gt;   Result r2=f(r.p+1); // skip '*' or '+'&lt;br /&gt;   if(s.charAt(r.p)=='*'){&lt;br /&gt;    r.value=min(r.value, r2.value);&lt;br /&gt;   }else{ // '+'&lt;br /&gt;    r.value=max(r.value, r2.value);&lt;br /&gt;   }&lt;br /&gt;   r.p=r2.p+1;&lt;br /&gt;   return r;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class Result{&lt;br /&gt;  int p, value;&lt;br /&gt;&lt;br /&gt;  Result(int p, int value){&lt;br /&gt;   this.p=p;&lt;br /&gt;   this.value=value;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-1835258886509074257?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/1835258886509074257/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=1835258886509074257' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1835258886509074257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1835258886509074257'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/aizu-online-judge-1155-how-can-i.html' title='Aizu Online Judge 1155 How can I satisfy thee? Let me count the ways...'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-4517015999862543444</id><published>2011-06-07T00:22:00.001+09:00</published><updated>2011-06-07T00:22:58.216+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1244 Molecular Formula</title><content type='html'>&lt;p&gt;■1244 Molecular Formula&lt;/p&gt;構文解析ゲー．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;// AC&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; HashMap&amp;lt;String, Integer&amp;gt; map;&lt;br /&gt; String s;&lt;br /&gt; boolean unknown;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  map=new HashMap&amp;lt;String, Integer&amp;gt;();&lt;br /&gt;  for(;;){&lt;br /&gt;   String s=sc.next();&lt;br /&gt;   if(s.equals("END_OF_FIRST_PART")){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   int n=sc.nextInt();&lt;br /&gt;   map.put(s, n);&lt;br /&gt;  }&lt;br /&gt;  for(;;){&lt;br /&gt;   s=sc.next();&lt;br /&gt;   if(s.equals("0")){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   s+='\0';&lt;br /&gt;   unknown=false;&lt;br /&gt;   Result r=molecule(0);&lt;br /&gt;   println(unknown?"UNKNOWN":r.value+"");&lt;br /&gt;   debug(r.p, r.value);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; Result molecule(int p){&lt;br /&gt;  debug("molecule", p);&lt;br /&gt;  Result r=new Result(p, 0);&lt;br /&gt;  for(;;){&lt;br /&gt;   if(s.charAt(r.p)=='\0'||s.charAt(r.p)==')'){&lt;br /&gt;    // end of molecule&lt;br /&gt;    return r;&lt;br /&gt;   }else if(s.charAt(r.p)=='('){&lt;br /&gt;    Result r1=molecule(r.p+1);&lt;br /&gt;    Result r2=number(r1.p+1); // skip '('&lt;br /&gt;    r.value+=r1.value*r2.value;&lt;br /&gt;    r.p=r2.p;&lt;br /&gt;   }else{&lt;br /&gt;    Result r1=atom(r.p);&lt;br /&gt;    Result r2=number(r1.p);&lt;br /&gt;    r.value+=r1.value*r2.value;&lt;br /&gt;    r.p=r2.p;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; Result atom(int p){&lt;br /&gt;  debug("atom", p);&lt;br /&gt;  String atom="";&lt;br /&gt;  if(Character.isUpperCase(s.charAt(p))){&lt;br /&gt;   atom+=s.charAt(p);&lt;br /&gt;   p++;&lt;br /&gt;   if(Character.isLowerCase(s.charAt(p))){&lt;br /&gt;    atom+=s.charAt(p);&lt;br /&gt;    p++;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  debug(atom);&lt;br /&gt;  if(map.containsKey(atom)){&lt;br /&gt;   return new Result(p, map.get(atom));&lt;br /&gt;  }else{&lt;br /&gt;   unknown=true;&lt;br /&gt;   return new Result(p, 0);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; Result number(int p){&lt;br /&gt;  debug("number", p);&lt;br /&gt;  int value=0;&lt;br /&gt;  if(Character.isDigit(s.charAt(p))){&lt;br /&gt;   value=s.charAt(p)-'0';&lt;br /&gt;   p++;&lt;br /&gt;   if(Character.isDigit(s.charAt(p))){&lt;br /&gt;    value=value*10+s.charAt(p)-'0';&lt;br /&gt;    p++;&lt;br /&gt;   }&lt;br /&gt;  }else{&lt;br /&gt;   return new Result(p, 1);&lt;br /&gt;  }&lt;br /&gt;  return new Result(p, value);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class Result{&lt;br /&gt;  int p, value;&lt;br /&gt;&lt;br /&gt;  Result(int p, int value){&lt;br /&gt;   this.p=p;&lt;br /&gt;   this.value=value;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  // System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-4517015999862543444?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/4517015999862543444/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=4517015999862543444' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4517015999862543444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4517015999862543444'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/aizu-online-judge-1244-molecular.html' title='Aizu Online Judge 1244 Molecular Formula'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-5835777122899008419</id><published>2011-06-07T00:22:00.000+09:00</published><updated>2011-06-07T00:22:55.540+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1012 Operations with Finite Sets</title><content type='html'>&lt;p&gt;■1012 Operations with Finite Sets&lt;/p&gt;構文解析ゲー．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;// AC&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt; TreeSet&amp;lt;Integer&amp;gt;[] sets;&lt;br /&gt; String exp;&lt;br /&gt; TreeSet&amp;lt;Integer&amp;gt; U;&lt;br /&gt;&lt;br /&gt; @SuppressWarnings("unchecked")&lt;br /&gt; void run(){&lt;br /&gt;  for(; sc.hasNext();){&lt;br /&gt;   sets=new TreeSet[256];&lt;br /&gt;   for(char c='A'; c&amp;lt;='E'; c++){&lt;br /&gt;    sets[c]=new TreeSet&amp;lt;Integer&amp;gt;();&lt;br /&gt;   }&lt;br /&gt;   U=new TreeSet&amp;lt;Integer&amp;gt;();&lt;br /&gt;   for(;;){&lt;br /&gt;    char c=sc.next().charAt(0);&lt;br /&gt;    int n=sc.nextInt();&lt;br /&gt;    if(c=='R'&amp;&amp;n==0){&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;    for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;     int e=sc.nextInt();&lt;br /&gt;     sets[c].add(e);&lt;br /&gt;     U.add(e);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   exp=sc.next();&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  exp+='\0';&lt;br /&gt;  Result r=e(0);&lt;br /&gt;  debug(r.set.toArray());&lt;br /&gt;  if(r.set.size()==0){&lt;br /&gt;   println("NULL");&lt;br /&gt;  }else{&lt;br /&gt;   for(Iterator&amp;lt;Integer&amp;gt; it=r.set.iterator(); it.hasNext();){&lt;br /&gt;    print(it.next()+(it.hasNext()?" ":"\n"));&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; Result e(int p){&lt;br /&gt;  debug("e", p);&lt;br /&gt;  Result r=f(p);&lt;br /&gt;  debug(r.set.toArray(), r.p);&lt;br /&gt;  for(;;){&lt;br /&gt;   if(op(exp.charAt(r.p))){&lt;br /&gt;    Result r2=f(r.p+1);&lt;br /&gt;    switch(exp.charAt(r.p)){&lt;br /&gt;    case 'u': // or&lt;br /&gt;     r.set.addAll(r2.set);&lt;br /&gt;     break;&lt;br /&gt;    case 'i': // and&lt;br /&gt;     for(int e : U){&lt;br /&gt;      if(r.set.contains(e)&amp;&amp;r2.set.contains(e)){}else{&lt;br /&gt;       r.set.remove(e);&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;     break;&lt;br /&gt;    case 'd': // diff&lt;br /&gt;     r.set.removeAll(r2.set);&lt;br /&gt;     break;&lt;br /&gt;    case 's': // sym&lt;br /&gt;     for(int e : U){&lt;br /&gt;      if(r.set.contains(e)&amp;&amp;r2.set.contains(e)){&lt;br /&gt;       r.set.remove(e);&lt;br /&gt;      }else if(r2.set.contains(e)){&lt;br /&gt;       r.set.add(e);&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;    r.p=r2.p;&lt;br /&gt;   }else{&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return r;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; boolean op(char c){&lt;br /&gt;  return c=='u'||c=='i'||c=='d'||c=='s';&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; Result f(int p){&lt;br /&gt;  debug("f", p);&lt;br /&gt;  if(exp.charAt(p)=='c'){&lt;br /&gt;   Result r=f(p+1);&lt;br /&gt;   TreeSet&amp;lt;Integer&amp;gt; c=new TreeSet&amp;lt;Integer&amp;gt;();&lt;br /&gt;   for(int e : U){&lt;br /&gt;    if(!r.set.contains(e)){&lt;br /&gt;     c.add(e);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   r.set.clear();&lt;br /&gt;   r.set.addAll(c);&lt;br /&gt;   return r;&lt;br /&gt;  }else{&lt;br /&gt;   return t(p);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; Result t(int p){&lt;br /&gt;  debug("t", p);&lt;br /&gt;  if(exp.charAt(p)=='('){&lt;br /&gt;   Result r=e(p+1);&lt;br /&gt;   r.p++; // skip ')'&lt;br /&gt;   return r;&lt;br /&gt;  }else{&lt;br /&gt;   Result r=new Result(p+1);&lt;br /&gt;   r.set.addAll(sets[exp.charAt(p)]);&lt;br /&gt;   return r;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class Result{&lt;br /&gt;  int p;&lt;br /&gt;  TreeSet&amp;lt;Integer&amp;gt; set;&lt;br /&gt;&lt;br /&gt;  Result(int p){&lt;br /&gt;   this.p=p;&lt;br /&gt;   set=new TreeSet&amp;lt;Integer&amp;gt;();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  // System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-5835777122899008419?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/5835777122899008419/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=5835777122899008419' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5835777122899008419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5835777122899008419'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/aizu-online-judge-1012-operations-with.html' title='Aizu Online Judge 1012 Operations with Finite Sets'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8225207282043192543</id><published>2011-06-07T00:17:00.001+09:00</published><updated>2011-06-07T00:17:22.266+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1162 Discrete Speed</title><content type='html'>&lt;p&gt;■1162 Discrete Speed&lt;/p&gt;拡張ダイクストラ．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;// AC&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, m;&lt;br /&gt; int s, g;&lt;br /&gt; LinkedList&amp;lt;E&amp;gt;[] es;&lt;br /&gt;&lt;br /&gt; @SuppressWarnings("unchecked")&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   if((n|m)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   es=new LinkedList[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    es[i]=new LinkedList&amp;lt;E&amp;gt;();&lt;br /&gt;   }&lt;br /&gt;   s=sc.nextInt()-1;&lt;br /&gt;   g=sc.nextInt()-1;&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    int x=sc.nextInt()-1;&lt;br /&gt;    int y=sc.nextInt()-1;&lt;br /&gt;    int d=sc.nextInt();&lt;br /&gt;    int c=sc.nextInt();&lt;br /&gt;    es[x].add(new E(y, d, c));&lt;br /&gt;    es[y].add(new E(x, d, c));&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  // [前][今][前から今の速度]&lt;br /&gt;  double[][][] d=new double[n][n][40];&lt;br /&gt;  PriorityQueue&amp;lt;P&amp;gt; que=new PriorityQueue&amp;lt;P&amp;gt;();&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    fill(d[j][i], INF);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  d[s][s][1]=0;&lt;br /&gt;  que.offer(new P(s, s, 0, 0));&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   P p=que.poll();&lt;br /&gt;   if(d[p.q][p.p][p.v]+EPS&amp;lt;p.d){&lt;br /&gt;    continue;&lt;br /&gt;   }&lt;br /&gt;   for(E e : es[p.p]){&lt;br /&gt;    if(p.q==e.to){&lt;br /&gt;     continue;&lt;br /&gt;    }&lt;br /&gt;    for(int i=-1; i&amp;lt;=1; i++){&lt;br /&gt;     if(p.v+i&amp;lt;=0||p.v+i&amp;gt;e.c){&lt;br /&gt;      continue;&lt;br /&gt;     }&lt;br /&gt;     if(d[p.p][e.to][p.v+i]&amp;gt;p.d+(double)e.d/(p.v+i)+EPS){&lt;br /&gt;      d[p.p][e.to][p.v+i]=p.d+(double)e.d/(p.v+i);&lt;br /&gt;      que.offer(new P(p.p, e.to, p.v+i, d[p.p][e.to][p.v+i]));&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  double min=INF;&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   min=min(min, d[i][g][1]);&lt;br /&gt;  }&lt;br /&gt;  println(""+(min&amp;lt;INF/2?min:"unreachable"));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class E{&lt;br /&gt;  int to, d, c;&lt;br /&gt;&lt;br /&gt;  E(int to, int d, int c){&lt;br /&gt;   this.to=to;&lt;br /&gt;   this.d=d;&lt;br /&gt;   this.c=c;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P implements Comparable&amp;lt;P&amp;gt;{&lt;br /&gt;  int q, p, v;&lt;br /&gt;  double d;&lt;br /&gt;&lt;br /&gt;  P(int q, int p, int v, double d){&lt;br /&gt;   this.q=q;&lt;br /&gt;   this.p=p;&lt;br /&gt;   this.v=v;&lt;br /&gt;   this.d=d;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(P p){&lt;br /&gt;   if(d+EPS&amp;lt;p.d){&lt;br /&gt;    return -1;&lt;br /&gt;   }else if(d&amp;gt;p.d+EPS){&lt;br /&gt;    return 1;&lt;br /&gt;   }else{&lt;br /&gt;    return 0;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8225207282043192543?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8225207282043192543/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8225207282043192543' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8225207282043192543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8225207282043192543'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/aizu-online-judge-1162-discrete-speed.html' title='Aizu Online Judge 1162 Discrete Speed'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-2481414605774697328</id><published>2011-06-07T00:17:00.000+09:00</published><updated>2011-06-07T00:17:21.505+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1161 Verbal Arithmetic</title><content type='html'>&lt;p&gt;■1161 Verbal Arithmetic&lt;/p&gt;非常に汚い探索による解法．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;// AC&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; String[] ss;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   ss=new String[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    ss[i]=sc.next();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int size;&lt;br /&gt; int[] cs;&lt;br /&gt; int[] map;&lt;br /&gt; boolean[] used;&lt;br /&gt; int ans;&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int[] a=new int[256];&lt;br /&gt;  fill(a, -1);&lt;br /&gt;  size=0;&lt;br /&gt;  for(String s : ss){&lt;br /&gt;   for(int i=0; i&amp;lt;s.length(); i++){&lt;br /&gt;    if(a[s.charAt(i)]==-1){&lt;br /&gt;     size++;&lt;br /&gt;     a[s.charAt(i)]=INF;&lt;br /&gt;    }&lt;br /&gt;    a[s.charAt(i)]=min(a[s.charAt(i)], s.length()-1-i);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  cs=new int[size];&lt;br /&gt;  for(int k=0, i=0; i&amp;lt;256; i++){&lt;br /&gt;   if(a[i]&amp;gt;=0){&lt;br /&gt;    cs[k++]=i+1000*a[i];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  sort(cs);&lt;br /&gt;&lt;br /&gt;  used=new boolean[10];&lt;br /&gt;  map=new int[256];&lt;br /&gt;  fill(map, -1);&lt;br /&gt;  ans=0;&lt;br /&gt;  dfs(0);&lt;br /&gt;  println(""+ans);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void dfs(int k){&lt;br /&gt;  if(k==size){&lt;br /&gt;   if(ok(8)){&lt;br /&gt;    ans++;&lt;br /&gt;   }&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  for(int i=0; i&amp;lt;10; i++){&lt;br /&gt;   if(!used[i]){&lt;br /&gt;    used[i]=true;&lt;br /&gt;    map[cs[k]%1000]=i;&lt;br /&gt;    if(ok(cs[k]/1000)){&lt;br /&gt;     dfs(k+1);&lt;br /&gt;    }&lt;br /&gt;    map[cs[k]%1000]=-1;&lt;br /&gt;    used[i]=false;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; boolean ok(int d){&lt;br /&gt;  int sum=0;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   if(map[ss[j].charAt(0)]==0&amp;&amp;ss[j].length()&amp;gt;1){&lt;br /&gt;    return false;&lt;br /&gt;   }&lt;br /&gt;   int num=0;&lt;br /&gt;   for(int i=max(0, d-ss[j].length()); i&amp;lt;d; i++){&lt;br /&gt;    num=num*10+map[ss[j].charAt(ss[j].length()-d+i)];&lt;br /&gt;   }&lt;br /&gt;   if(j==n-1){&lt;br /&gt;    sum-=num;&lt;br /&gt;   }else{&lt;br /&gt;    sum+=num;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  int mod=1;&lt;br /&gt;  for(int i=0; i&amp;lt;d; i++){&lt;br /&gt;   mod*=10;&lt;br /&gt;  }&lt;br /&gt;  return sum%mod==0;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-2481414605774697328?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/2481414605774697328/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=2481414605774697328' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2481414605774697328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2481414605774697328'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/aizu-online-judge-1161-verbal.html' title='Aizu Online Judge 1161 Verbal Arithmetic'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8001818125768743852</id><published>2011-06-07T00:12:00.000+09:00</published><updated>2011-06-07T00:12:36.496+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1133 Water Tank</title><content type='html'>&lt;p&gt;■1133 Water Tank&lt;/p&gt;実装ゲー．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;import java.awt.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;// AC&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-6;&lt;br /&gt;&lt;br /&gt; int d;&lt;br /&gt; int n;&lt;br /&gt; int[] x, h;&lt;br /&gt; int m;&lt;br /&gt; int[] f, dv;&lt;br /&gt; int l;&lt;br /&gt; int[] p, t;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  d=sc.nextInt();&lt;br /&gt;  for(int k=0; k&amp;lt;d; k++){&lt;br /&gt;   n=sc.nextInt()+1;&lt;br /&gt;   x=new int[n+1];&lt;br /&gt;   h=new int[n+1];&lt;br /&gt;   x[0]=0;&lt;br /&gt;   x[n]=100;&lt;br /&gt;   h[0]=h[n]=50;&lt;br /&gt;   for(int i=1; i&amp;lt;n; i++){&lt;br /&gt;    x[i]=sc.nextInt();&lt;br /&gt;    h[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   f=new int[m];&lt;br /&gt;   dv=new int[m];&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    f[i]=sc.nextInt();&lt;br /&gt;    dv[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   l=sc.nextInt();&lt;br /&gt;   p=new int[l];&lt;br /&gt;   t=new int[l];&lt;br /&gt;   for(int i=0; i&amp;lt;l; i++){&lt;br /&gt;    p[i]=sc.nextInt();&lt;br /&gt;    t[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; double[] y, a;&lt;br /&gt; double time;&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  y=new double[n];&lt;br /&gt;  a=new double[n];&lt;br /&gt;  for(int j=0; j&amp;lt;m; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    if(x[i]&amp;lt;f[j]&amp;&amp;f[j]&amp;lt;x[i+1]){&lt;br /&gt;     a[i]+=dv[j]/30.0;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  // Visualizer v=new Visualizer();&lt;br /&gt;&lt;br /&gt;  double[] ans=new double[l];&lt;br /&gt;  fill(ans, -1);&lt;br /&gt;&lt;br /&gt;  for(time=0;;){&lt;br /&gt;   double min=INF;&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    if(a[i]&amp;gt;EPS){&lt;br /&gt;     if(y[i]+EPS&amp;lt;h[i]){&lt;br /&gt;      min=min(min, (h[i]-y[i])*(x[i+1]-x[i])/a[i]);&lt;br /&gt;     }&lt;br /&gt;     if(y[i]+EPS&amp;lt;h[i+1]){&lt;br /&gt;      min=min(min, (h[i+1]-y[i])*(x[i+1]-x[i])/a[i]);&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   if(min==INF){&lt;br /&gt;    for(;;);&lt;br /&gt;   }&lt;br /&gt;   for(int j=0; j&amp;lt;l; j++){&lt;br /&gt;    if(time&amp;lt;t[j]+EPS&amp;&amp;t[j]+EPS&amp;lt;time+min){&lt;br /&gt;     for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;      if(x[i]&amp;lt;p[j]&amp;&amp;p[j]&amp;lt;x[i+1]){&lt;br /&gt;       ans[j]=min(y[i]+(t[j]-time)*a[i]/(x[i+1]-x[i]), 50);&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   boolean all50=true;&lt;br /&gt;   time+=min;&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    y[i]+=min*a[i]/(x[i+1]-x[i]);&lt;br /&gt;    all50&amp;=abs(y[i]-50)&amp;lt;EPS;&lt;br /&gt;   }&lt;br /&gt;   // v.repaint();&lt;br /&gt;   // sleep(1000);&lt;br /&gt;&lt;br /&gt;   if(all50){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   double[] a2=new double[n];&lt;br /&gt;&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    boolean[] bottom=new boolean[n];&lt;br /&gt;    int left, right;&lt;br /&gt;    for(left=j; left&amp;gt;=0&amp;&amp;y[left]+EPS&amp;gt;h[left]; left--);&lt;br /&gt;    for(right=j; right&amp;lt;n&amp;&amp;y[right]+EPS&amp;gt;h[right+1]; right++);&lt;br /&gt;&lt;br /&gt;    if(y[left]+EPS&amp;lt;y[j]){&lt;br /&gt;     for(int i=left; i&amp;lt;n&amp;&amp;abs(y[i]-y[left])&amp;lt;EPS; i++){&lt;br /&gt;      bottom[i]=true;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    if(y[right]+EPS&amp;lt;y[j]){&lt;br /&gt;     for(int i=right; i&amp;gt;=0&amp;&amp;abs(y[i]-y[right])&amp;lt;EPS; i--){&lt;br /&gt;      bottom[i]=true;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    if(abs(y[left]-y[j])&amp;lt;EPS&amp;&amp;abs(y[right]-y[j])&amp;lt;EPS){&lt;br /&gt;     for(int i=left; i&amp;lt;=right; i++){&lt;br /&gt;      bottom[i]=true;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    int sum=0;&lt;br /&gt;    for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;     if(bottom[i]){&lt;br /&gt;      sum+=x[i+1]-x[i];&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;     if(bottom[i]){&lt;br /&gt;      a2[i]+=a[j]/sum*(x[i+1]-x[i]);&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   a=a2.clone();&lt;br /&gt;  }&lt;br /&gt;  for(int i=0; i&amp;lt;l; i++){&lt;br /&gt;   println(ans[i]+EPS&amp;lt;0?"50.0":ans[i]+"");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void sleep(long millis){&lt;br /&gt;  try{&lt;br /&gt;   Thread.sleep(millis);&lt;br /&gt;  }catch(InterruptedException e){&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  // System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public class Visualizer extends JFrame{&lt;br /&gt;  Visualizer(){&lt;br /&gt;   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;   setVisible(true);&lt;br /&gt;   getContentPane().add(new MainPanel(), BorderLayout.CENTER);&lt;br /&gt;   pack();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  class MainPanel extends JPanel{&lt;br /&gt;   MainPanel(){&lt;br /&gt;    setPreferredSize(new Dimension(512, 512));&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public void paintComponent(Graphics g){&lt;br /&gt;    int width=getWidth();&lt;br /&gt;    int height=getHeight();&lt;br /&gt;    for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;     g.setColor(Color.BLUE);&lt;br /&gt;     g.fillRect(x[i]*4, height-(int)(y[i]*4), (x[i+1]-x[i])*4,&lt;br /&gt;       (int)(y[i]*4));&lt;br /&gt;     g.drawString(String.format("%.4f", a[i]), x[i]*4, height/2);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    for(int i=0; i&amp;lt;=n; i++){&lt;br /&gt;     g.setColor(Color.RED);&lt;br /&gt;     g.drawLine(x[i]*4, height-h[i]*4, x[i]*4, height);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    g.setColor(Color.BLACK);&lt;br /&gt;    g.drawString(""+time, 100, 100);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8001818125768743852?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8001818125768743852/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8001818125768743852' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8001818125768743852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8001818125768743852'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/aizu-online-judge-1133-water-tank.html' title='Aizu Online Judge 1133 Water Tank'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-5675493699533085711</id><published>2011-06-06T19:37:00.000+09:00</published><updated>2011-06-06T19:37:48.034+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IPSC'/><title type='text'>IPSC 2011</title><content type='html'>&lt;p&gt;IPSC 2011(19:00~24:00)&lt;/p&gt;ユニークな問題がたくさんありました．&lt;br/&gt;&lt;p&gt;■A - Against a rock play Spock&lt;/p&gt;やるだけ．&lt;p&gt;■C - Candy for each guess&lt;/p&gt;Easyだけなら全探索．Hannahは別に答えを変える必要な無く．最適なもの一つをひたすら用いればよい．&lt;p&gt;■D - Divide the rectangle&lt;/p&gt;Easyだけ提出．&lt;p&gt;■F - Flipping coins&lt;/p&gt;Easyだけ．全探索したら，本当に確率が50%を越えたので吃驚．&lt;p&gt;■M - My little puppy&lt;/p&gt;わんちゃんが何か言ってくるので，それに対する正しい反応を返答する．&lt;br/&gt;趣旨が分かりませんでしたが，面白かった(?)です．&lt;br/&gt;&lt;p&gt;■Result&lt;/p&gt;6AC (A1 A2 C1 D1 F1 [M+++++])&lt;br/&gt;256th&lt;br/&gt;&lt;br/&gt;半端な順位です．&lt;br/&gt;&lt;br/&gt;Bの解を，kinabaさんやuwiさんが画像でアップしていましたが，フラクタルな構造をしていました．思い付かなかった．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-5675493699533085711?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/5675493699533085711/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=5675493699533085711' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5675493699533085711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5675493699533085711'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/ipsc-2011.html' title='IPSC 2011'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-9133110473128313007</id><published>2011-06-06T19:36:00.000+09:00</published><updated>2011-06-06T19:36:43.331+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UAPC'/><title type='text'>UAPC 2011</title><content type='html'>&lt;p&gt;UAPC 2011(6/5 13:00~18:00)&lt;/p&gt;GCJ疲れが影響して，惨敗しました．&lt;br/&gt;&lt;p&gt;■A. It's our delight!!&lt;/p&gt;やるだけ．&lt;br/&gt;&lt;p&gt;■K. Rearranging Seats&lt;/p&gt;合計席数が偶数なら絶対に存在する．逆に奇数では絶対に存在しない．&lt;br/&gt;&lt;p&gt;■Result&lt;/p&gt;2AC 74th&lt;br/&gt;駄目駄目でした．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-9133110473128313007?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/9133110473128313007/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=9133110473128313007' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/9133110473128313007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/9133110473128313007'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/uapc-2011.html' title='UAPC 2011'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6535084168135605008</id><published>2011-06-06T09:57:00.040+09:00</published><updated>2011-06-06T19:08:49.443+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Code Jam'/><title type='text'>Google Code Jam 2011 Round2</title><content type='html'>&lt;p&gt;GCJ2011 Round2(6/4 23:00~01:30)&lt;/p&gt;Round2に進めただけでも，進歩を感じましたが，欲を出して，Tシャツを狙いに行きました．&lt;p&gt;■A. Airport Walkways&lt;/p&gt;K[m]の道がある．あなたは，普段は速度S[m/s]で歩くが，（トータルで）t[s]だけ速度R[m/s]で走ることが出来る．&lt;br/&gt;さらに道のいくつかの部分には，動く歩道が設置されており，その速度があなたの歩くor走る速度に上乗せされる．&lt;br/&gt;最短何秒でK[m]移動することが出来るか．&lt;br/&gt;&lt;br/&gt;どこ走るかがポイント．答えは，動く歩道の速度+歩く速度が小さいところをより優先する．&lt;br/&gt;あとは，走った時間が正確にt[s]になるように気をつける．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class A{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int caze;&lt;br /&gt; int TT;&lt;br /&gt; int x, s, r, t, n;&lt;br /&gt; int[] b, e, w;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  TT=sc.nextInt();&lt;br /&gt;  for(caze=1; caze&amp;lt;=TT; caze++){&lt;br /&gt;   x=sc.nextInt();&lt;br /&gt;   s=sc.nextInt();&lt;br /&gt;   r=sc.nextInt();&lt;br /&gt;   t=sc.nextInt();&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   b=new int[n];&lt;br /&gt;   e=new int[n];&lt;br /&gt;   w=new int[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    b[i]=sc.nextInt();&lt;br /&gt;    e[i]=sc.nextInt();&lt;br /&gt;    w[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int[] v=new int[x];&lt;br /&gt;  fill(v, s);&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   for(int i=b[j]; i&amp;lt;e[j]; i++){&lt;br /&gt;    v[i]+=w[j];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  PriorityQueue&amp;lt;Integer&amp;gt; que=new PriorityQueue&amp;lt;Integer&amp;gt;();&lt;br /&gt;  for(int i=0; i&amp;lt;x; i++){&lt;br /&gt;   que.offer(v[i]);&lt;br /&gt;  }&lt;br /&gt;  double d=r-s;&lt;br /&gt;  double remain=t;&lt;br /&gt;  double ans=0;&lt;br /&gt;  for(int i=0; i&amp;lt;x; i++){&lt;br /&gt;   int u=que.poll();&lt;br /&gt;   if(1.0/(u+d)&amp;gt;remain+EPS){&lt;br /&gt;    double p=remain*(u+d);&lt;br /&gt;    ans+=remain+(1.0-p)/u;&lt;br /&gt;    remain=0;&lt;br /&gt;   }else{&lt;br /&gt;    remain-=1.0/(u+d);&lt;br /&gt;    ans+=1.0/(u+d);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  answer(ans+"");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void answer(String s){&lt;br /&gt;  println("Case #"+caze+": "+s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  try{&lt;br /&gt;   System.setIn(new FileInputStream(&lt;br /&gt;     "D:/contest_workspace/gcj_2011_round2/dat/A-large.in"));&lt;br /&gt;   System.setOut(new PrintStream(new FileOutputStream(&lt;br /&gt;     "D:/contest_workspace/gcj_2011_round2/dat/A-large.out")));&lt;br /&gt;  }catch(Exception e){}&lt;br /&gt;&lt;br /&gt;  new A().run();&lt;br /&gt;  System.out.flush();&lt;br /&gt;  System.out.close();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■B. Spinning Blade&lt;/p&gt;全探索で解ける．&lt;br/&gt;愚直に実装すると，(x&lt;sub&gt;1&lt;/sub&gt;, y&lt;sub&gt;1&lt;/sub&gt;)-(x&lt;sub&gt;1&lt;/sub&gt;, y&lt;sub&gt;1&lt;/sub&gt;)からなる長方形の重心を求めるための計算量は，O(n&lt;sup&gt;5&lt;/sup&gt;)となり(8分間では)絶対に間に合わない．&lt;br/&gt;そこで，部分和を使う．&lt;br/&gt;MX1(i, j)=Σ&lt;sub&gt;0≦k≦i&lt;/sub&gt;a(k, j)k&lt;br/&gt;MY1(i, j)=Σ&lt;sub&gt;0≦k≦j&lt;/sub&gt;a(i, k)k&lt;br/&gt;とする．&lt;br/&gt;これで，ある行 or 列に対するある範囲の質量×位置の総和がO(1)で求まるため，総計算量は、O(n&lt;sup&gt;4&lt;/sup&gt;)になる．しかし，n=500なので，これでも厳しい．&lt;br/&gt;最終的に，&lt;br/&gt;MX2(i, j)=Σ&lt;sub&gt;0≦k≦i&lt;/sub&gt;MX1(i, k)&lt;br/&gt;MY2(i, j)=Σ&lt;sub&gt;0≦k≦j&lt;/sub&gt;MY1(k, j)&lt;br/&gt;とすると，&lt;br/&gt;MX1(i, j) or MY1(i, j)は(1, 1)-(i, j)からなる長方形のxおよびy座標に関する質量×位置の総和になる．(1, 1)-(i, j)の長方形の総質量も同様にして求められるようにすれば，1クエリをO(1)で求めることが出来るため結局，総計算量がO(n&lt;sup&gt;3&lt;/sup&gt;)になり間に合う．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class B{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int caze;&lt;br /&gt; int t;&lt;br /&gt; int m, n, d;&lt;br /&gt; long[][] a;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  t=sc.nextInt();&lt;br /&gt;  for(caze=1; caze&amp;lt;=t; caze++){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   d=sc.nextInt();&lt;br /&gt;   a=new long[n][m];&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    String s=sc.next();&lt;br /&gt;    for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;     a[j][i]=s.charAt(i)-'0'+d;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; long[][] mx1, mx2, my1, my2, m1, m2;&lt;br /&gt; double gx, gy, g;&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  mx1=new long[n][m];&lt;br /&gt;  mx2=new long[n][m];&lt;br /&gt;  my1=new long[n][m];&lt;br /&gt;  my2=new long[n][m];&lt;br /&gt;  m1=new long[n][m];&lt;br /&gt;  m2=new long[n][m];&lt;br /&gt;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   mx1[j][0]=a[j][0]*0;&lt;br /&gt;   m1[j][0]=a[j][0];&lt;br /&gt;   for(int i=1; i&amp;lt;m; i++){&lt;br /&gt;    mx1[j][i]=mx1[j][i-1]+a[j][i]*i;&lt;br /&gt;    m1[j][i]=m1[j][i-1]+a[j][i];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;   mx2[0][i]=mx1[0][i];&lt;br /&gt;   m2[0][i]=m1[0][i];&lt;br /&gt;   for(int j=1; j&amp;lt;n; j++){&lt;br /&gt;    mx2[j][i]=mx2[j-1][i]+mx1[j][i];&lt;br /&gt;    m2[j][i]=m2[j-1][i]+m1[j][i];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;   my1[0][i]=a[0][i]*0;&lt;br /&gt;   for(int j=1; j&amp;lt;n; j++){&lt;br /&gt;    my1[j][i]=my1[j-1][i]+a[j][i]*j;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   my2[j][0]=my1[j][0];&lt;br /&gt;   for(int i=1; i&amp;lt;m; i++){&lt;br /&gt;    my2[j][i]=my2[j][i-1]+my1[j][i];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // 1クエリO(1)&lt;br /&gt;  int ans=0;&lt;br /&gt;  for(int y=0; y&amp;lt;n; y++){&lt;br /&gt;   for(int x=0; x&amp;lt;m; x++){&lt;br /&gt;    for(int w=3; x+w&amp;lt;=m&amp;&amp;y+w&amp;lt;=n; w++){&lt;br /&gt;     calc(x, y, w);&lt;br /&gt;     double mx=x+(w-1)/2.;&lt;br /&gt;     double my=y+(w-1)/2.;&lt;br /&gt;     if(abs(mx-gx)&amp;lt;EPS&amp;&amp;abs(my-gy)&amp;lt;EPS){&lt;br /&gt;      ans=max(ans, w);&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  answer(ans&amp;gt;0?(ans+""):"IMPOSSIBLE");&lt;br /&gt;  debug(ans);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void calc(int x, int y, int w){&lt;br /&gt;  gx=mx2[y+w-1][x+w-1];&lt;br /&gt;  gy=my2[y+w-1][x+w-1];&lt;br /&gt;  g=m2[y+w-1][x+w-1];&lt;br /&gt;  if(x&amp;gt;0){&lt;br /&gt;   gx-=mx2[y+w-1][x-1];&lt;br /&gt;   gy-=my2[y+w-1][x-1];&lt;br /&gt;   g-=m2[y+w-1][x-1];&lt;br /&gt;  }&lt;br /&gt;  if(y&amp;gt;0){&lt;br /&gt;   gx-=mx2[y-1][x+w-1];&lt;br /&gt;   gy-=my2[y-1][x+w-1];&lt;br /&gt;   g-=m2[y-1][x+w-1];&lt;br /&gt;  }&lt;br /&gt;  if(x&amp;gt;0&amp;&amp;y&amp;gt;0){&lt;br /&gt;   gx+=mx2[y-1][x-1];&lt;br /&gt;   gy+=my2[y-1][x-1];&lt;br /&gt;   g+=m2[y-1][x-1];&lt;br /&gt;  }&lt;br /&gt;  gx-=a[y][x]*x+a[y][x+w-1]*(x+w-1)+a[y+w-1][x]*x+a[y+w-1][x+w-1]*(x+w-1);&lt;br /&gt;  gy-=a[y][x]*y+a[y][x+w-1]*y+a[y+w-1][x]*(y+w-1)+a[y+w-1][x+w-1]*(y+w-1);&lt;br /&gt;  g-=a[y][x]+a[y][x+w-1]+a[y+w-1][x]+a[y+w-1][x+w-1];&lt;br /&gt;  gx/=g;&lt;br /&gt;  gy/=g;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void answer(String s){&lt;br /&gt;  println("Case #"+caze+": "+s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  try{&lt;br /&gt;   System.setIn(new FileInputStream(&lt;br /&gt;     "D:/contest_workspace/gcj_2011_round2/dat/B-large.in"));&lt;br /&gt;   System.setOut(new PrintStream(new FileOutputStream(&lt;br /&gt;     "D:/contest_workspace/gcj_2011_round2/dat/B-large.out")));&lt;br /&gt;  }catch(Exception e){}&lt;br /&gt;&lt;br /&gt;  new B().run();&lt;br /&gt;  System.out.flush();&lt;br /&gt;  System.out.close();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;■Result38pts. 756th念願のTシャツゲットです．もう少し頑張れば，Round3に進めたかもしれないですが，ここ最近で最高レベルに集中出来たので良かったと思います．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6535084168135605008?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6535084168135605008/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6535084168135605008' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6535084168135605008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6535084168135605008'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/google-code-jam-2011-round2.html' title='Google Code Jam 2011 Round2'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-4380779757195231102</id><published>2011-06-06T09:44:00.000+09:00</published><updated>2011-06-06T09:44:56.558+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TopCoder SRM 508</title><content type='html'>&lt;p&gt;SRM 508(6/3 0:00~2:00)&lt;/p&gt;&lt;p&gt;■DivideAndShift(Easy)&lt;/p&gt;答えをf(n,m)として，再帰的に解きました．&lt;br/&gt;素因数分解をして，素数のべき乗ごとに再帰するので，制限時間には余裕で間に合います．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class DivideAndShift {&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int rec(int n, int m){&lt;br /&gt;  if(m==0){&lt;br /&gt;   return 0;&lt;br /&gt;  }&lt;br /&gt;  HashMap&amp;lt;Integer,Integer&amp;gt; map=primeFactor(n);&lt;br /&gt;  int res=min(m,n-m);&lt;br /&gt;  for(int p:map.keySet()){&lt;br /&gt;   if(p==1){&lt;br /&gt;    continue;&lt;br /&gt;   }&lt;br /&gt;   res=min(res,rec(n/p,m%(n/p))+1);&lt;br /&gt;  }&lt;br /&gt;  return res;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public int getLeast(int n, int m) {&lt;br /&gt;  return rec(n,m-1);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; HashMap&amp;lt;Integer, Integer&amp;gt; primeFactor(int n){&lt;br /&gt;  HashMap&amp;lt;Integer, Integer&amp;gt; map=new HashMap&amp;lt;Integer, Integer&amp;gt;();&lt;br /&gt;  for(int i=2; i*i&amp;lt;=n; i++){&lt;br /&gt;   int c=0;&lt;br /&gt;   for(; n%i==0; n/=i)&lt;br /&gt;    c++;&lt;br /&gt;   if(c&amp;gt;0)&lt;br /&gt;    map.put(i, c);&lt;br /&gt;  }&lt;br /&gt;  if(n!=1)&lt;br /&gt;   map.put(n, 1);&lt;br /&gt;  return map;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Challenge Phase&lt;/p&gt;撃墜無し．&lt;p&gt;■Result&lt;/p&gt;o-- +0/-0&lt;br/&gt;125.55pts. 406th&lt;br/&gt;&lt;p&gt;■Rating&lt;/p&gt;1365 -&gt; 1414&lt;br/&gt;微増．目標の1500にはいつ到達できるのか…．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-4380779757195231102?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/4380779757195231102/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=4380779757195231102' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4380779757195231102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4380779757195231102'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/06/topcoder-srm-508.html' title='TopCoder SRM 508'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-4731002745986970723</id><published>2011-05-30T20:14:00.001+09:00</published><updated>2011-05-30T20:14:58.075+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeChef'/><title type='text'>CodeChef May Cook-off 2011</title><content type='html'>&lt;p&gt;CodeChef May Cook-off 2011（1:00~3:30)&lt;/p&gt;&lt;p&gt;■Popular Rice Recipe&lt;/p&gt;やるだけ．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  int caze=sc.nextInt();&lt;br /&gt;  for(int k=0; k&amp;lt;caze; k++){&lt;br /&gt;   int n=sc.nextInt();&lt;br /&gt;   HashMap&amp;lt;String, Integer&amp;gt; map=new HashMap&amp;lt;String, Integer&amp;gt;();&lt;br /&gt;   int ans=0;&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    String s=sc.next();&lt;br /&gt;    int p=sc.next().equals("+")?1:-1;&lt;br /&gt;    if(map.containsKey(s)){&lt;br /&gt;     ans-=map.get(s);&lt;br /&gt;    }&lt;br /&gt;    ans+=p;&lt;br /&gt;    map.put(s, p);&lt;br /&gt;   }&lt;br /&gt;   println(""+ans);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Distribute idlis Equally&lt;/p&gt;シミュレーションなので，やるだけですが，時間内にACを取れませんでした．&lt;br/&gt;原因はPriorityQueueにおいてremove()を使っていたことです．&lt;br/&gt;removeを使うと，計算量は，&lt;br/&gt;O((A number of times)*n*(A number of test cases))&lt;br/&gt;となり，TLEしてしまうのです．&lt;br/&gt;実際，removeを使わずに実装すれば，&lt;br/&gt;O((A number of times)*log(n)*(A number of test cases))&lt;br/&gt;となるので，余裕で間に合います．&lt;br/&gt;以下，Practiceにて通ったコード．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; int[] a;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  int t=sc.nextInt();&lt;br /&gt;  for(int j=0; j&amp;lt;t; j++){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   a=new int[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    a[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   println(solve()+"");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int solve(){&lt;br /&gt;  int sum=0;&lt;br /&gt;  for(int e : a){&lt;br /&gt;   sum+=e;&lt;br /&gt;  }&lt;br /&gt;  if(sum%n!=0){&lt;br /&gt;   return -1;&lt;br /&gt;  }&lt;br /&gt;  PriorityQueue&amp;lt;R&amp;gt; que1=new PriorityQueue&amp;lt;R&amp;gt;();&lt;br /&gt;  PriorityQueue&amp;lt;R&amp;gt; que2=new PriorityQueue&amp;lt;R&amp;gt;();&lt;br /&gt;  for(int e : a){&lt;br /&gt;   que1.add(new R(e));&lt;br /&gt;   que2.add(new R(-e));&lt;br /&gt;  }&lt;br /&gt;  int t;&lt;br /&gt;  for(t=0;; t++){&lt;br /&gt;   R p=que1.poll();&lt;br /&gt;   for(;p.f;){&lt;br /&gt;    p=que1.poll();&lt;br /&gt;   }&lt;br /&gt;   p.f=true;&lt;br /&gt;   R q=que2.poll();&lt;br /&gt;   for(;q.f;){&lt;br /&gt;    q=que2.poll();&lt;br /&gt;   }&lt;br /&gt;   q.f=true;&lt;br /&gt;   int min=p.v;&lt;br /&gt;   int max=-q.v;&lt;br /&gt;   if(min==max){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   int r=(int)((max-min+1)/2.0);&lt;br /&gt;   min+=r;&lt;br /&gt;   max-=r;&lt;br /&gt;   que1.add(new R(min));&lt;br /&gt;   que2.add(new R(-min));&lt;br /&gt;   que1.add(new R(max));&lt;br /&gt;   que2.add(new R(-max));&lt;br /&gt;  }&lt;br /&gt;  return t;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class R implements Comparable&amp;lt;R&amp;gt;{&lt;br /&gt;  int v;&lt;br /&gt;  boolean f;&lt;br /&gt;  R(int v){&lt;br /&gt;   this.v=v;&lt;br /&gt;  }&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(R r){&lt;br /&gt;   return v-r.v;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Result&lt;/p&gt;----o&lt;br/&gt;&lt;br/&gt;これは酷い…．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-4731002745986970723?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/4731002745986970723/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=4731002745986970723' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4731002745986970723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4731002745986970723'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/05/codechef-may-cook-off-2011.html' title='CodeChef May Cook-off 2011'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8619248562032503532</id><published>2011-05-29T17:25:00.000+09:00</published><updated>2011-05-29T17:25:50.036+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TopCoder SRM 507</title><content type='html'>&lt;p&gt;SRM 507(5/29 1:00~3:00)&lt;/p&gt;黄色くなれませんでした…．&lt;/br&gt;&lt;p&gt;■TheNumbersWithLuckyLastDigit(Easy)&lt;/p&gt;6～50枚の色タイルが与えられる．その中から，6枚を選び出し，立方体に貼り付ける．&lt;/br&gt;どの面についても，辺で接している面とは色が異なっていなければならない．&lt;/br&gt;そのようなタイルの貼り付けたは存在するか．&lt;/br&gt;&lt;/br&gt;最初にDFSで全探索しようと思ったのが間違いでした．&lt;/br&gt;実際，色ごとのタイルの枚数を調べて場合分けすれば求まるのです（もっと完結に書くことも出来ます）．&lt;/br&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class CubeStickers {&lt;br /&gt; // long INF=1L&amp;lt;&amp;lt;48;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public String isPossible(String[] ss) {&lt;br /&gt;  HashMap&amp;lt;String,Integer&amp;gt; map=new HashMap&amp;lt;String,Integer&amp;gt;();&lt;br /&gt;  for(String s:ss){&lt;br /&gt;   if(!map.containsKey(s)){&lt;br /&gt;    map.put(s,0);&lt;br /&gt;   }&lt;br /&gt;   map.put(s,map.get(s)+1);&lt;br /&gt;  }&lt;br /&gt;  if(map.size()&amp;gt;=5){&lt;br /&gt;   return "YES";&lt;br /&gt;  }&lt;br /&gt;  if(map.size()==4){&lt;br /&gt;   int c=0;&lt;br /&gt;   for(int e:map.values()){&lt;br /&gt;    if(e&amp;gt;=2){&lt;br /&gt;     c++;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   return c&amp;gt;=2?"YES":"NO";&lt;br /&gt;  }&lt;br /&gt;  if(map.size()==3){&lt;br /&gt;   for(int e:map.values()){&lt;br /&gt;    if(e&amp;lt;2){&lt;br /&gt;     return "NO";&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   return "YES";&lt;br /&gt;  }&lt;br /&gt;  return "NO";&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■CubePacking(Medium)&lt;/p&gt;1辺の長さが1の立方体Ns個と，1辺の長さがLの立方体Nb個とを詰めることが出来る直方体の最小体積を求めよ．&lt;br/&gt;実は結構簡単で，3辺の内の2辺を決めると，もう1辺はすぐ求まります．&lt;br/&gt;ですので，2辺を全探索しつつ，体積を算出し最小値を求めれば良いのです．&lt;br/&gt;本番中は解けませんでした…．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class CubePacking {&lt;br /&gt; long INF=1L&amp;lt;&amp;lt;32;&lt;br /&gt; // int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public int getMinimumVolume(int m, int n, int len) {&lt;br /&gt;  long ans=INF;&lt;br /&gt;  for(long a=1;a*a*a&amp;lt;=INF;a++){&lt;br /&gt;   for(long b=a;a*b*b&amp;lt;=INF;b++){&lt;br /&gt;    long base=(a/len)*(b/len);&lt;br /&gt;    if(base==0){&lt;br /&gt;     continue;&lt;br /&gt;    }&lt;br /&gt;    long c=((n-1)/base+1)*len;&lt;br /&gt;    long rest=m-(a*b*c-len*len*len*n);&lt;br /&gt;    if(rest&amp;gt;0){&lt;br /&gt;     c+=(rest-1)/(a*b)+1;&lt;br /&gt;    }&lt;br /&gt;    ans=min(ans,a*b*c);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return (int)ans;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Challenge Phase&lt;/p&gt;撃墜無し．SystemTestで落ちた人もRoom内には居ませんでした．&lt;p&gt;■Result&lt;/p&gt;o-- +0/-0&lt;br/&gt;144.37pts. 683th&lt;br/&gt;&lt;p&gt;■Rating&lt;/p&gt;1442 -&gt; 1365&lt;br/&gt;前々回のレートに戻ってしまいました…．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8619248562032503532?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8619248562032503532/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8619248562032503532' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8619248562032503532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8619248562032503532'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/05/topcoder-srm-507.html' title='TopCoder SRM 507'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-822437223973955781</id><published>2011-05-23T22:53:00.000+09:00</published><updated>2011-05-23T22:53:02.320+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Code Jam'/><title type='text'>Google Code Jam 2011 Round1B</title><content type='html'>せめて，Bは解いておこうかと．&lt;br/&gt;&lt;br/&gt;&lt;p&gt;■B. Revenge of the Hot Dogs&lt;/p&gt;ご想像のとおり二分探索．&lt;br/&gt;時間tに対して，各ホットドッグ屋がD離れることが出来るかを判定する必要がある．&lt;br/&gt;これは，ホットドッグ屋を左から見ていき，可能な限り左に寄せていくことで判定できる．&lt;br/&gt;二分探索の上限の見積もりが甘くLargeでWAってしまった…．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.util.Map.Entry;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class B{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; long INF=1L&amp;lt;&amp;lt;40;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int caze;&lt;br /&gt; int n, d;&lt;br /&gt; R[] rs;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  int tt=sc.nextInt();&lt;br /&gt;  for(caze=1; caze&amp;lt;=tt; caze++){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   d=sc.nextInt();&lt;br /&gt;   rs=new R[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    int p=sc.nextInt();&lt;br /&gt;    int m=sc.nextInt();&lt;br /&gt;    rs[i]=new R(p, m);&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  long left=0, right=INF;&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   rs[i].p*=2;&lt;br /&gt;  }&lt;br /&gt;  d*=2;&lt;br /&gt;&lt;br /&gt;  sort(rs, new Comparator&amp;lt;R&amp;gt;(){&lt;br /&gt;   @Override&lt;br /&gt;   public int compare(R r1, R r2){&lt;br /&gt;    return r1.p-r2.p;&lt;br /&gt;   }&lt;br /&gt;  });&lt;br /&gt;&lt;br /&gt;  for(int i=0; i&amp;lt;1000; i++){&lt;br /&gt;   long mid=(left+right)/2;&lt;br /&gt;   if(check(mid)){&lt;br /&gt;    right=mid;&lt;br /&gt;   }else{&lt;br /&gt;    left=mid;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  debug(right, right/2.0);&lt;br /&gt;  answer(String.format("%.1f", right/2.0));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; boolean check(long t){&lt;br /&gt;  long left=-INF;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;rs[j].m; i++){&lt;br /&gt;    if(rs[j].p+t&amp;lt;left+d){&lt;br /&gt;     return false;&lt;br /&gt;    }&lt;br /&gt;    left=max(left+d, rs[j].p-t);&lt;br /&gt;    // [left+d, INF) and [p-t , p+t]&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class R{&lt;br /&gt;  int p, m;&lt;br /&gt;  R(int p, int m){&lt;br /&gt;   this.p=p;&lt;br /&gt;   this.m=m;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void answer(String s){&lt;br /&gt;  println("Case #"+caze+": "+s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  try{&lt;br /&gt;   System.setIn(new FileInputStream(&lt;br /&gt;     "D:/contest_workspace/gcj_2011_round1b/dat/B-large.in"));&lt;br /&gt;   System.setOut(new PrintStream(new FileOutputStream(&lt;br /&gt;     "D:/contest_workspace/gcj_2011_round1b/dat/B-large.out")));&lt;br /&gt;  }catch(Exception e){}&lt;br /&gt;  new B().run();&lt;br /&gt;  System.out.flush();&lt;br /&gt;  System.out.close();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-822437223973955781?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/822437223973955781/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=822437223973955781' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/822437223973955781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/822437223973955781'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/05/google-code-jam-2011-round1b.html' title='Google Code Jam 2011 Round1B'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-1016723809291600242</id><published>2011-05-23T22:42:00.000+09:00</published><updated>2011-05-23T22:42:29.898+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Code Jam'/><title type='text'>Google Code Jam 2011 Round1A</title><content type='html'>遅ればせながら，報告．&lt;br/&gt;&lt;p&gt;■A. FreeCell Statistics&lt;/p&gt;まず，下記の2条件を満たすか調べる．&lt;br/&gt;・P&lt;sub&gt;G&lt;/sub&gt;=0の時は，P&lt;sub&gt;D&lt;/sub&gt;=0でないといけない．&lt;br/&gt;何故なら，P&lt;sub&gt;G&lt;/sub&gt;=0ならば，全てのゲームで負けているから．&lt;br/&gt;・P&lt;sub&gt;G&lt;/sub&gt;=100の時は，P&lt;sub&gt;D&lt;/sub&gt;=100でないといけない．&lt;br/&gt;理由は上とほぼ同じ．&lt;br/&gt;&lt;br/&gt;次に，勝率がP&lt;sub&gt;D&lt;/sub&gt;[%]となる（今日の）最小のゲーム数を求める．&lt;br/&gt;つまり，&lt;br/&gt;P&lt;sub&gt;D&lt;/sub&gt;/100*Dが整数となるような，最小のDを求める．&lt;br/&gt;つまり，&lt;br/&gt;D=100/gcd(P&lt;sub&gt;D&lt;/sub&gt;,100)&lt;br/&gt;である．&lt;br/&gt;D≦Nならば，"Possible"．&lt;br/&gt;P&lt;sub&gt;G&lt;/sub&gt;については，試合の勝敗を調整すれば基本的に実現可能．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class A{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int caze;&lt;br /&gt; int t;&lt;br /&gt; long n, nd, ng;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  t=sc.nextInt();&lt;br /&gt;  for(caze=1; caze&amp;lt;=t; caze++){&lt;br /&gt;   n=sc.nextLong();&lt;br /&gt;   nd=sc.nextLong();&lt;br /&gt;   ng=sc.nextLong();&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  long dd=100;&lt;br /&gt;  long dg=100;&lt;br /&gt;  if(ng==0&amp;&amp;nd&amp;gt;0){&lt;br /&gt;   answer("Broken");&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  if(ng==100&amp;&amp;nd&amp;lt;100){&lt;br /&gt;   answer("Broken");&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  long gcdD=gcd(nd, dd);&lt;br /&gt;  long gcdG=gcd(ng, dg);&lt;br /&gt;  debug(gcdD, gcdG);&lt;br /&gt;  nd/=gcdD;&lt;br /&gt;  dd/=gcdD;&lt;br /&gt;  ng/=gcdG;&lt;br /&gt;  dg/=gcdG;&lt;br /&gt;  debug(nd, dd, ng, dg);&lt;br /&gt;  long d=dd;&lt;br /&gt;  if(d&amp;gt;n){&lt;br /&gt;   answer("Broken");&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  answer("Possible");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void answer(String s){&lt;br /&gt;  println("Case #"+caze+": "+s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; long gcd(long m, long n){&lt;br /&gt;  for(; n!=0;){&lt;br /&gt;   long t=m%n;&lt;br /&gt;   m=n;&lt;br /&gt;   n=t;&lt;br /&gt;  }&lt;br /&gt;  return m;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  try{&lt;br /&gt;   System.setIn(new FileInputStream(&lt;br /&gt;     "D:/contest_workspace/gcj_2011_round1a/dat/A-large.in"));&lt;br /&gt;   System.setOut(new PrintStream(new FileOutputStream(&lt;br /&gt;     "D:/contest_workspace/gcj_2011_round1a/dat/A-large.out")));&lt;br /&gt;  }catch(Exception e){}&lt;br /&gt;&lt;br /&gt;  new A().run();&lt;br /&gt;  System.out.flush();&lt;br /&gt;  System.out.close();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■B. The Killer Word&lt;/p&gt;大雑把な方針は，DFSです．&lt;br/&gt;まず，辞書単語を文字列の長さで分類します．&lt;br/&gt;そして，リストの文字を順番に辞書全体に適用していきます．&lt;br/&gt;その際，それぞれの辞書単語の開示状態は変わります．&lt;br/&gt;この開示状態が等しいもので分類して，その集合で個々にDFSを行います．&lt;br/&gt;集合の要素数が1になったら終わりです．&lt;br/&gt;詳しい説明は，GCJ公式のContest Analysisを御覧下さい．&lt;br/&gt;ちなみに，本番では解けませんでした．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.util.Map.Entry;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class B{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int caze;&lt;br /&gt; int m, n;&lt;br /&gt; String[] dic, lis;&lt;br /&gt; String l;&lt;br /&gt;&lt;br /&gt; int[] bit;&lt;br /&gt; int[] opend;&lt;br /&gt; int[][] open;&lt;br /&gt; int[] loses;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  int tt=sc.nextInt();&lt;br /&gt;  for(caze=1; caze&amp;lt;=tt; caze++){&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   dic=new String[m];&lt;br /&gt;   lis=new String[n];&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    dic[i]=sc.next();&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    lis[i]=sc.next();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void dfs(TreeSet&amp;lt;Integer&amp;gt; set, int k, int exist){&lt;br /&gt;  if(set.size()&amp;lt;=1||k&amp;gt;=26){&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  if(((exist&amp;gt;&amp;gt;(l.charAt(k)-'a'))&amp;1)==0){&lt;br /&gt;   dfs(set, k+1, exist);&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  HashMap&amp;lt;Integer, TreeSet&amp;lt;Integer&amp;gt;&amp;gt; map=new HashMap&amp;lt;Integer, TreeSet&amp;lt;Integer&amp;gt;&amp;gt;();&lt;br /&gt;  HashMap&amp;lt;Integer, Integer&amp;gt; exists=new HashMap&amp;lt;Integer, Integer&amp;gt;();&lt;br /&gt;  for(int i : set){&lt;br /&gt;   opend[i]|=open[i][l.charAt(k)];&lt;br /&gt;   if(open[i][l.charAt(k)]==0){&lt;br /&gt;    loses[i]++;&lt;br /&gt;   }&lt;br /&gt;   if(!map.containsKey(opend[i])){&lt;br /&gt;    map.put(opend[i], new TreeSet&amp;lt;Integer&amp;gt;());&lt;br /&gt;    exists.put(opend[i], 0);&lt;br /&gt;   }&lt;br /&gt;   map.get(opend[i]).add(i);&lt;br /&gt;   exists.put(opend[i], exists.get(opend[i])|bit[i]);&lt;br /&gt;  }&lt;br /&gt;  for(Entry&amp;lt;Integer, TreeSet&amp;lt;Integer&amp;gt;&amp;gt; entry : map.entrySet()){&lt;br /&gt;   dfs(entry.getValue(), k+1, exists.get(entry.getKey()));&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  String ans="";&lt;br /&gt;  for(int k=0; k&amp;lt;n; k++){&lt;br /&gt;   TreeSet&amp;lt;Integer&amp;gt;[] sets=new TreeSet[10];&lt;br /&gt;   for(int i=0; i&amp;lt;10; i++){&lt;br /&gt;    sets[i]=new TreeSet&amp;lt;Integer&amp;gt;();&lt;br /&gt;   }&lt;br /&gt;   bit=new int[m];&lt;br /&gt;   opend=new int[m];&lt;br /&gt;   open=new int[m][256];&lt;br /&gt;   loses=new int[m];&lt;br /&gt;   int[] exists=new int[10];&lt;br /&gt;   for(int j=0; j&amp;lt;m; j++){&lt;br /&gt;    sets[dic[j].length()-1].add(j);&lt;br /&gt;    for(int i=0; i&amp;lt;dic[j].length(); i++){&lt;br /&gt;     bit[j]|=1&amp;lt;&amp;lt;(dic[j].charAt(i)-'a');&lt;br /&gt;     open[j][dic[j].charAt(i)]|=1&amp;lt;&amp;lt;i;&lt;br /&gt;     exists[dic[j].length()-1]|=1&amp;lt;&amp;lt;(dic[j].charAt(i)-'a');&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   l=lis[k];&lt;br /&gt;   for(int i=0; i&amp;lt;10; i++){&lt;br /&gt;    dfs(sets[i], 0, exists[i]);&lt;br /&gt;   }&lt;br /&gt;   int max=-1;&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    max=max(max, loses[i]);&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    if(loses[i]==max){&lt;br /&gt;     ans+=dic[i]+(k==n-1?"":" ");&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  answer(ans);&lt;br /&gt;  debug(ans);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void answer(String s){&lt;br /&gt;  println("Case #"+caze+": "+s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  try{&lt;br /&gt;   System.setIn(new FileInputStream(&lt;br /&gt;     "D:/contest_workspace/gcj_2011_round1a/dat/B-large.in"));&lt;br /&gt;   System.setOut(new PrintStream(new FileOutputStream(&lt;br /&gt;     "D:/contest_workspace/gcj_2011_round1a/dat/B-large.out")));&lt;br /&gt;  }catch(Exception e){}&lt;br /&gt;  new B().run();&lt;br /&gt;  System.out.flush();&lt;br /&gt;  System.out.close();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Result&lt;/p&gt;oo----&lt;br/&gt;20pts. 870th&lt;br/&gt;どうにかRound2へ進出出来ます．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-1016723809291600242?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/1016723809291600242/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=1016723809291600242' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1016723809291600242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1016723809291600242'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/05/google-code-jam-2011-round1a.html' title='Google Code Jam 2011 Round1A'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-9206183868737314701</id><published>2011-05-23T00:24:00.003+09:00</published><updated>2011-05-23T00:25:08.698+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technical book'/><title type='text'>専門書を読む #20</title><content type='html'>■コンピュータの数学5 二項係数pp.51-59&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-9206183868737314701?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/9206183868737314701/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=9206183868737314701' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/9206183868737314701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/9206183868737314701'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/05/blog-post.html' title='専門書を読む #20'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-3473884286167992783</id><published>2011-05-18T02:50:00.000+09:00</published><updated>2011-05-18T02:50:33.635+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TopCoder SRM 504.5</title><content type='html'>&lt;p&gt;SRM 504.5(5/18 0:00~2:00)&lt;/p&gt;多忙でしたが，折角なので参加することにしました．&lt;p&gt;■TheNumbersWithLuckyLastDigit(Easy)&lt;/p&gt;実際にいくつか試してみると，10で割った余りで"ほぼ"決まることが分かります．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class TheNumbersWithLuckyLastDigit {&lt;br /&gt; // long INF=1L&amp;lt;&amp;lt;48;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public int find(int n) {&lt;br /&gt;  int[] a={5,2,3,5,1,3,4,1,2,4};&lt;br /&gt;  boolean[] out=new boolean[20];&lt;br /&gt;  out[1]=out[2]=out[3]=out[5]=out[6]=out[9]=out[10]=out[13]=true;&lt;br /&gt;  if(n&amp;lt;20&amp;&amp;out[n]){&lt;br /&gt;   return -1;&lt;br /&gt;  }else{&lt;br /&gt;   return a[n%10];&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■TheJackpotDivOne(Medium)&lt;/p&gt;本番ではdoubleを使っていたので，アンダーフロー(?)による精度落ちで撃墜されました．下が修正コード．JavaならばBigIntegerが使えます．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class TheJackpotDivOne {&lt;br /&gt; // long INF=1L&amp;lt;&amp;lt;48;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public long[] find(long[] a, long m) {&lt;br /&gt;  int n=a.length;&lt;br /&gt;  for(;;){&lt;br /&gt;   int k=n-1;&lt;br /&gt;   BigInteger ave=BigInteger.ZERO;&lt;br /&gt;   boolean same=true;&lt;br /&gt;   for(int i=n-1;i&amp;gt;=0;i--){&lt;br /&gt;    if(a[i]&amp;lt;=a[k]){&lt;br /&gt;     k=i;&lt;br /&gt;    }&lt;br /&gt;    same&amp;=a[0]==a[i];&lt;br /&gt;    ave=ave.add(BigInteger.valueOf(a[i]));&lt;br /&gt;   }&lt;br /&gt;   if(same){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   long x=ave.divide(BigInteger.valueOf(n)).longValue()-a[k]+1;&lt;br /&gt;   if(m&amp;gt;=x){&lt;br /&gt;    a[k]+=x;&lt;br /&gt;    m-=x;&lt;br /&gt;   }else{&lt;br /&gt;    a[k]+=m;&lt;br /&gt;    sort(a);&lt;br /&gt;    return a;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(int i=0;i&amp;lt;n;i++){&lt;br /&gt;   a[i]+=m/n;&lt;br /&gt;   if(i&amp;lt;m%n){&lt;br /&gt;    a[i]++;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  sort(a);&lt;br /&gt;  return a;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Challenge Phase&lt;/p&gt;Easyで一人撃墜．&lt;p&gt;■Result&lt;/p&gt;ox- +1/-0&lt;br/&gt;241.3pts. 299th&lt;br/&gt;前回の教訓を生かし，1撃墜に止めました．&lt;p&gt;■Rating&lt;/p&gt;1360 -&gt; 1442&lt;br/&gt;黄色くなれるか…?!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-3473884286167992783?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/3473884286167992783/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=3473884286167992783' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3473884286167992783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3473884286167992783'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/05/topcoder-srm-5045.html' title='TopCoder SRM 504.5'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-2116201236713747902</id><published>2011-05-15T03:13:00.002+09:00</published><updated>2011-05-18T02:46:57.963+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TCO11 Algo Qual1</title><content type='html'>&lt;p&gt;TCO11 Algo Qual1(5/15 1:00~3:00)&lt;/p&gt;&lt;p&gt;■MinimumLiars(Easy)&lt;/p&gt;考えられる全ケースを試すだけ．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;public class MinimumLiars {&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public int getMinimum(int[] a) {&lt;br /&gt;  int n=a.length;&lt;br /&gt;  for(int j=0;j&amp;lt;=n;j++){&lt;br /&gt;   int s=0;&lt;br /&gt;   for(int i=0;i&amp;lt;n;i++){&lt;br /&gt;    if(a[i]&amp;gt;j){&lt;br /&gt;     s++;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   if(j==s){&lt;br /&gt;    return j;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return -1;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  // MinimumLiars temp = new MinimumLiars();&lt;br /&gt;  // System.out.println(temp.getMinimum(int[] claim));&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■FoxListeningToMusic(Medium)&lt;/p&gt;O(Tn)じゃないとSystem Testで落ちます．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;public class FoxListeningToMusic {&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public double[] getProbabilities(int[] a, int t) {&lt;br /&gt;  int n=a.length;&lt;br /&gt;  double[] dp=new double[t+1];&lt;br /&gt;  dp[0]=1./n;&lt;br /&gt;  for(int k=0;k&amp;lt;t;k++){&lt;br /&gt;   double[] d=new double[n];&lt;br /&gt;   for(int i=0;i&amp;lt;n;i++){&lt;br /&gt;    d[i]+=dp[k]/n;&lt;br /&gt;   }&lt;br /&gt;   for(int i=0;i&amp;lt;n;i++){&lt;br /&gt;    if(k+a[i]&amp;lt;=t){&lt;br /&gt;     dp[k+a[i]]+=d[i];&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  // debug(dp);&lt;br /&gt;  double[] res=new double[n];&lt;br /&gt;  for(int i=0;i&amp;lt;n;i++){&lt;br /&gt;   for(int j=t;j&amp;gt;t-a[i]&amp;&amp;j&amp;gt;=0;j--){&lt;br /&gt;    res[i]+=dp[j];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return res;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Challenge Phase&lt;/p&gt;Mediumにて，O(Tn&lt;sup&gt;2&lt;/sup&gt;)の人を狙ったのですが，3回もミスしてしまいました．&lt;br/&gt;&lt;p&gt;■Result&lt;/p&gt;○○× +1 -3&lt;br/&gt;478.98pts. 332th&lt;br/&gt;&lt;p&gt;■Rating&lt;/p&gt;1279 -&gt; 1360&lt;br/&gt;600位以内なので，次のラウンドへ．Round1も残りたいですね．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-2116201236713747902?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/2116201236713747902/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=2116201236713747902' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2116201236713747902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2116201236713747902'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/05/tco-algorithm-qual1.html' title='TCO11 Algo Qual1'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8455875752339700270</id><published>2011-05-14T19:01:00.001+09:00</published><updated>2011-05-14T19:02:13.233+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UTPC'/><title type='text'>UTPC 2011(東京大学プログラミングコンテスト)</title><content type='html'>&lt;p&gt;UTPC 2011(05/14 12:00~17:00)&lt;/p&gt;久し振りの投稿．&lt;/br&gt;&lt;p&gt;■A プログラミングコンテスト&lt;/p&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, m;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  n=sc.nextInt();&lt;br /&gt;  m=sc.nextInt();&lt;br /&gt;  int max=0;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   int a=0;&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    a+=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   max=max(max, a);&lt;br /&gt;  }&lt;br /&gt;  println(""+max);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■B (iwi)&lt;/p&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  String s=sc.next();&lt;br /&gt;  int ans=0;&lt;br /&gt;  if(s.length()%2==1){&lt;br /&gt;   if(!Character.isLetter(s.charAt(s.length()/2))){&lt;br /&gt;    ans++;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  boolean[][] check=new boolean[256][256];&lt;br /&gt;  check['i']['i']=true;&lt;br /&gt;  check['w']['w']=true;&lt;br /&gt;  check['('][')']=true;&lt;br /&gt;  check[')']['(']=true;&lt;br /&gt;  for(int i=0; i&amp;lt;s.length()/2; i++){&lt;br /&gt;   if(!check[s.charAt(i)][s.charAt(s.length()-1-i)]){&lt;br /&gt;    ans++;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println(""+ans);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■C [[iwi]]&lt;/p&gt;全探索による解法．LCSのような解法もあるようです．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  String ss=sc.next();&lt;br /&gt;  boolean[][] check=new boolean[256][256];&lt;br /&gt;  check['('][')']=true;&lt;br /&gt;  check[')']['(']=true;&lt;br /&gt;  check['{']['}']=true;&lt;br /&gt;  check['}']['{']=true;&lt;br /&gt;  check['['][']']=true;&lt;br /&gt;  check[']']['[']=true;&lt;br /&gt;  int k=ss.indexOf("iwi");&lt;br /&gt;  int m=k;&lt;br /&gt;  int n=ss.length()-(k+3);&lt;br /&gt;  String s=ss.substring(0, k);&lt;br /&gt;  String t=ss.substring(k+3, ss.length());&lt;br /&gt;  // debug(m, n);&lt;br /&gt;  // debug(s, t);&lt;br /&gt;  int max=0;&lt;br /&gt;  for(int sup1=0; sup1&amp;lt;1&amp;lt;&amp;lt;m; sup1++){&lt;br /&gt;   String s1="";&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    if(((sup1&amp;gt;&amp;gt;i)&amp;1)==1){&lt;br /&gt;     s1+=s.charAt(i);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   for(int sup2=0; sup2&amp;lt;1&amp;lt;&amp;lt;n; sup2++){&lt;br /&gt;    if(Integer.bitCount(sup1)==Integer.bitCount(sup2)){&lt;br /&gt;     String s2="";&lt;br /&gt;     for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;      if(((sup2&amp;gt;&amp;gt;j)&amp;1)==1){&lt;br /&gt;       s2+=t.charAt(j);&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;     boolean f=true;&lt;br /&gt;     for(int i=0; i&amp;lt;s1.length(); i++){&lt;br /&gt;      f&amp;=check[s1.charAt(i)][s2.charAt(s2.length()-1-i)];&lt;br /&gt;     }&lt;br /&gt;     if(f){&lt;br /&gt;      // debug(s1, s2);&lt;br /&gt;      max=max(max, s1.length()+3+s2.length());&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println(max+"");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■D 停止問題&lt;/p&gt;BFSによる解法．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, m;&lt;br /&gt; char[][] cs;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  n=sc.nextInt();&lt;br /&gt;  m=sc.nextInt();&lt;br /&gt;  cs=new char[n][m];&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   String s=sc.next();&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    cs[j][i]=s.charAt(i);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  int[] dx={0, 0, -1, 1};&lt;br /&gt;  int[] dy={-1, 1, 0, 0};&lt;br /&gt;  LinkedList&amp;lt;P&amp;gt; que=new LinkedList&amp;lt;P&amp;gt;();&lt;br /&gt;  boolean[][][][] visited=new boolean[m][n][16][4];&lt;br /&gt;&lt;br /&gt;  que.offer(new P(0, 0, 0, 3));&lt;br /&gt;  visited[0][0][0][3]=true;&lt;br /&gt;&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   P p=que.poll();&lt;br /&gt;   // debug(p.x, p.y, p.mem, p.dir);&lt;br /&gt;   if(cs[p.y][p.x]=='?'){&lt;br /&gt;    for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;     P q=new P(p.x, p.y, p.mem, p.dir);&lt;br /&gt;     q.dir=i;&lt;br /&gt;     q.x=(q.x+dx[q.dir]+m)%m;&lt;br /&gt;     q.y=(q.y+dy[q.dir]+n)%n;&lt;br /&gt;     if(!visited[q.x][q.y][q.mem][q.dir]){&lt;br /&gt;      que.offer(q);&lt;br /&gt;      visited[q.x][q.y][q.mem][q.dir]=true;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    continue;&lt;br /&gt;   }&lt;br /&gt;   P q=new P(p.x, p.y, p.mem, p.dir);&lt;br /&gt;   switch(cs[p.y][p.x]){&lt;br /&gt;   case '&amp;lt;':&lt;br /&gt;    q.dir=2;&lt;br /&gt;    break;&lt;br /&gt;   case '&amp;gt;':&lt;br /&gt;    q.dir=3;&lt;br /&gt;    break;&lt;br /&gt;   case '^':&lt;br /&gt;    q.dir=0;&lt;br /&gt;    break;&lt;br /&gt;   case 'v':&lt;br /&gt;    q.dir=1;&lt;br /&gt;    break;&lt;br /&gt;   case '_':&lt;br /&gt;    if(q.mem==0){&lt;br /&gt;     q.dir=3;&lt;br /&gt;    }else{&lt;br /&gt;     q.dir=2;&lt;br /&gt;    }&lt;br /&gt;    break;&lt;br /&gt;   case '|':&lt;br /&gt;    if(q.mem==0){&lt;br /&gt;     q.dir=1;&lt;br /&gt;    }else{&lt;br /&gt;     q.dir=0;&lt;br /&gt;    }&lt;br /&gt;    break;&lt;br /&gt;   case '.':&lt;br /&gt;    break;&lt;br /&gt;   case '@':&lt;br /&gt;    println("YES");&lt;br /&gt;    return;&lt;br /&gt;   case '+':&lt;br /&gt;    q.mem=(q.mem+1)%16;&lt;br /&gt;    break;&lt;br /&gt;   case '-':&lt;br /&gt;    q.mem=(q.mem+15)%16;&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   if(Character.isDigit(cs[p.y][p.x])){&lt;br /&gt;    q.mem=cs[p.y][p.x]-'0';&lt;br /&gt;   }&lt;br /&gt;   q.x=(q.x+dx[q.dir]+m)%m;&lt;br /&gt;   q.y=(q.y+dy[q.dir]+n)%n;&lt;br /&gt;   if(!visited[q.x][q.y][q.mem][q.dir]){&lt;br /&gt;    que.offer(q);&lt;br /&gt;    visited[q.x][q.y][q.mem][q.dir]=true;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println("NO");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P{&lt;br /&gt;  int x, y;&lt;br /&gt;  int mem;&lt;br /&gt;  int dir;&lt;br /&gt;&lt;br /&gt;  P(int x, int y, int mem, int dir){&lt;br /&gt;   this.x=x;&lt;br /&gt;   this.y=y;&lt;br /&gt;   this.mem=mem;&lt;br /&gt;   this.dir=dir;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■E ファーストアクセプタンス&lt;/p&gt;System.arraycopyを何故か忘れていたため，競技中はWAでした．下は競技終了後のコード．ちなみに，bでソートすればいいので，aは関係ないです．&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; long INF=1L&amp;lt;&amp;lt;48;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; R[] rs;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  n=sc.nextInt();&lt;br /&gt;  rs=new R[n];&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   int a=sc.nextInt();&lt;br /&gt;   int b=sc.nextInt();&lt;br /&gt;   rs[i]=new R(a, b);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  sort(rs, new Comparator&amp;lt;R&amp;gt;(){&lt;br /&gt;   @Override&lt;br /&gt;   public int compare(R r1, R r2){&lt;br /&gt;    if(r1.b!=r2.b){&lt;br /&gt;     return r1.b-r2.b;&lt;br /&gt;    }else{&lt;br /&gt;     return r2.a-r1.a;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  });&lt;br /&gt;&lt;br /&gt;  long[][] dp=new long[n+1][n+1];&lt;br /&gt;  fill(dp[0], INF);&lt;br /&gt;  dp[0][0]=0;&lt;br /&gt;  for(int j=1; j&amp;lt;=n; j++){&lt;br /&gt;   System.arraycopy(dp[j-1], 0, dp[j], 0, n+1);&lt;br /&gt;   for(int i=0; i&amp;lt;j; i++){&lt;br /&gt;    long t=dp[j-1][i]+rs[j-1].a;&lt;br /&gt;    if(t&amp;lt;=rs[j-1].b){&lt;br /&gt;     dp[j][i+1]=min(dp[j][i+1], t);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   // debug(dp[j]);&lt;br /&gt;  }&lt;br /&gt;  for(int i=n; i&amp;gt;=0; i--){&lt;br /&gt;   if(dp[n][i]&amp;lt;INF){&lt;br /&gt;    println(i+"");&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class R{&lt;br /&gt;  int a, b;&lt;br /&gt;  R(int a, int b){&lt;br /&gt;   this.a=a;&lt;br /&gt;   this.b=b;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;■Result&lt;/p&gt;400pt. 77th&lt;/br&gt;&lt;/br&gt;途中で離脱してしまったので，簡単な問題しか解けず残念．&lt;/br&gt;Eは解法が合っていましたし，A~Dも1時間程度で解けていたので，わずかながらに成長しているようです．&lt;/br&gt;それにしても，沢山の強豪がいますね．今年のICPCが心配です．&lt;/br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8455875752339700270?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8455875752339700270/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8455875752339700270' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8455875752339700270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8455875752339700270'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/05/utpc-2011.html' title='UTPC 2011(東京大学プログラミングコンテスト)'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8383739029939235105</id><published>2011-04-30T18:23:00.000+09:00</published><updated>2011-04-30T18:23:31.323+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>今月の〇〇(2011年4月)</title><content type='html'>&lt;p&gt;■Aizu Online Judge&lt;/p&gt;Solved:254/46th&lt;br/&gt;Rating:203.75/50th&lt;br/&gt;Ratingは目標通り200に到達しましたが，そのせいでSolvedの順位が下がってしまいました．5月は，Solvedの順位を30位以上，願わくば20位以上にしたいです．&lt;br/&gt;&lt;br/&gt;&lt;p&gt;■TopCoder/Codeforces&lt;/p&gt;Codeforcesは，一旦Div.2に落ちたものの，再びDiv.1に復帰しました．&lt;br/&gt;TopCoderは，Rating微増．&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8383739029939235105?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8383739029939235105/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8383739029939235105' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8383739029939235105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8383739029939235105'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/20114.html' title='今月の〇〇(2011年4月)'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-7716637429528450018</id><published>2011-04-30T18:15:00.002+09:00</published><updated>2011-04-30T18:17:00.291+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1202 Mobile Phone Coverage</title><content type='html'>&lt;p&gt;■1202 Mobile Phone Coverage&lt;/p&gt;面倒な問題．下の画像のような感じに分割した．区間をマージする処理が面倒だった．&lt;br/&gt;&lt;a href="http://1.bp.blogspot.com/-vQ5viCT4a9g/TbvSdPB_NNI/AAAAAAAABLI/_dIL0DzTrCQ/s1600/1202.png"&gt;&lt;img height="150" width="300" src="http://1.bp.blogspot.com/-vQ5viCT4a9g/TbvSdPB_NNI/AAAAAAAABLI/_dIL0DzTrCQ/s1600/1202.png" /&gt;&lt;/a&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; R[] rs;&lt;br /&gt; int caze;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(caze=1;; caze++){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   rs=new R[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    double x=sc.nextDouble();&lt;br /&gt;    double y=sc.nextDouble();&lt;br /&gt;    double r=sc.nextDouble();&lt;br /&gt;    rs[i]=new R(x-r, y-r, x+r, y+r);&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  TreeSet&amp;lt;Double&amp;gt; setX=new TreeSet&amp;lt;Double&amp;gt;();&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   setX.add(rs[i].x1);&lt;br /&gt;   setX.add(rs[i].x2);&lt;br /&gt;  }&lt;br /&gt;  Double[] xs=setX.toArray(new Double[0]);&lt;br /&gt;  sort(xs);&lt;br /&gt;  int m=xs.length;&lt;br /&gt;  @SuppressWarnings("unchecked")&lt;br /&gt;  TreeSet&amp;lt;R&amp;gt;[] setR=new TreeSet[m];&lt;br /&gt;  for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;   setR[i]=new TreeSet&amp;lt;R&amp;gt;();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  for(int j=0; j&amp;lt;m-1; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    if(rs[i].x1&amp;lt;xs[j]+EPS&amp;&amp;xs[j]+EPS&amp;lt;rs[i].x2){&lt;br /&gt;     setR[j].add(rs[i]);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double sum=0;&lt;br /&gt;  for(int k=0; k&amp;lt;m-1; k++){&lt;br /&gt;   LinkedList&amp;lt;Double&amp;gt; seg=new LinkedList&amp;lt;Double&amp;gt;();&lt;br /&gt;   for(R r : setR[k]){&lt;br /&gt;    if(abs(r.y1-r.y2)&amp;lt;EPS){&lt;br /&gt;     continue;&lt;br /&gt;    }&lt;br /&gt;    int i=seg.size(), j=seg.size();&lt;br /&gt;    for(int p=seg.size()-1; p&amp;gt;=0; p--){&lt;br /&gt;     double y=seg.get(p);&lt;br /&gt;     if(y+EPS&amp;gt;r.y2){&lt;br /&gt;      j=p;&lt;br /&gt;     }&lt;br /&gt;     if(y+EPS&amp;gt;r.y1){&lt;br /&gt;      i=p;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    for(int p=i; p&amp;lt;j; p++){&lt;br /&gt;     seg.remove(i);&lt;br /&gt;    }&lt;br /&gt;    if(j%2==0){&lt;br /&gt;     seg.add(i, r.y2);&lt;br /&gt;    }&lt;br /&gt;    if(i%2==0){&lt;br /&gt;     seg.add(i, r.y1);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   double len=0;&lt;br /&gt;   for(int i=0; i&amp;lt;seg.size(); i+=2){&lt;br /&gt;    len+=seg.get(i+1)-seg.get(i);&lt;br /&gt;   }&lt;br /&gt;   sum+=len*(xs[k+1]-xs[k]);&lt;br /&gt;  }&lt;br /&gt;  println(String.format("%d %.2f", caze, sum+EPS));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class R implements Comparable&amp;lt;R&amp;gt;{&lt;br /&gt;  double x1, y1, x2, y2;&lt;br /&gt;&lt;br /&gt;  R(double x1, double y1, double x2, double y2){&lt;br /&gt;   this.x1=x1;&lt;br /&gt;   this.y1=y1;&lt;br /&gt;   this.x2=x2;&lt;br /&gt;   this.y2=y2;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(R arg0){&lt;br /&gt;   if(y1-y2+EPS&amp;lt;0){&lt;br /&gt;    return -1;&lt;br /&gt;   }else if(y1-y2&amp;gt;0+EPS){&lt;br /&gt;    return 1;&lt;br /&gt;   }else if(x1-x2+EPS&amp;lt;0){&lt;br /&gt;    return -1;&lt;br /&gt;   }else if(x1-x2&amp;gt;0+EPS){&lt;br /&gt;    return 1;&lt;br /&gt;   }else{&lt;br /&gt;    return 0;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  // System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-7716637429528450018?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/7716637429528450018/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=7716637429528450018' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7716637429528450018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7716637429528450018'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1202-mobile-phone.html' title='Aizu Online Judge 1202 Mobile Phone Coverage'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-vQ5viCT4a9g/TbvSdPB_NNI/AAAAAAAABLI/_dIL0DzTrCQ/s72-c/1202.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-7140016123709949657</id><published>2011-04-30T18:03:00.002+09:00</published><updated>2011-04-30T18:03:59.998+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1221 Numoeba</title><content type='html'>&lt;p&gt;■1221 Numoeba&lt;/p&gt;制限時間・メモリ共に余裕があるので，あとは気合で書くだけ．&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int k;&lt;br /&gt; int m;&lt;br /&gt; int mod=12345678;&lt;br /&gt; boolean[] visited=new boolean[10000];&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   k=sc.nextInt();&lt;br /&gt;   if(k==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  Cell leader=new Cell(k);&lt;br /&gt;  m=0;&lt;br /&gt;  int maxNum=1;&lt;br /&gt;  for(int k=1;; k++){&lt;br /&gt;   LinkedList&amp;lt;Cell&amp;gt; que=new LinkedList&amp;lt;Cell&amp;gt;();&lt;br /&gt;   que.offer(leader);&lt;br /&gt;   fill(visited, false);&lt;br /&gt;   visited[leader.v]=true;&lt;br /&gt;&lt;br /&gt;   for(; !que.isEmpty();){&lt;br /&gt;    Cell c=que.poll();&lt;br /&gt;    int n=c.n*3+1;&lt;br /&gt;    for(; n%2==0;){&lt;br /&gt;     n/=2;&lt;br /&gt;    }&lt;br /&gt;    n%=mod;&lt;br /&gt;    c.candidate=n&amp;gt;c.n&amp;&amp;(c.size()==0||(c.size()==1&amp;&amp;c!=leader));&lt;br /&gt;    c.n=n;&lt;br /&gt;    if(c.n==1){&lt;br /&gt;     if(c==leader){&lt;br /&gt;      println(k+" "+maxNum);&lt;br /&gt;      return;&lt;br /&gt;     }&lt;br /&gt;     Cell par=null;&lt;br /&gt;     for(Cell d : c){&lt;br /&gt;      if(visited[d.v]){&lt;br /&gt;       par=d;&lt;br /&gt;      }&lt;br /&gt;      d.remove(c);&lt;br /&gt;     }&lt;br /&gt;     c.remove(par);&lt;br /&gt;     if(c.size()==1){&lt;br /&gt;      Cell child=c.getFirst();&lt;br /&gt;      par.add(child);&lt;br /&gt;      child.add(par);&lt;br /&gt;      que.offer(child);&lt;br /&gt;      visited[child.v]=true;&lt;br /&gt;     }&lt;br /&gt;    }else{&lt;br /&gt;     for(Cell d : c){&lt;br /&gt;      if(!visited[d.v]){&lt;br /&gt;       que.offer(d);&lt;br /&gt;       visited[d.v]=true;&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   fill(visited, false);&lt;br /&gt;   Cell newLeader=new Cell(0);&lt;br /&gt;   boolean overlap=false;&lt;br /&gt;   int num=0;&lt;br /&gt;&lt;br /&gt;   que.offer(leader);&lt;br /&gt;   visited[leader.v]=true;&lt;br /&gt;   for(; !que.isEmpty();){&lt;br /&gt;    Cell c=que.poll();&lt;br /&gt;    num++;&lt;br /&gt;    for(Cell d : c){&lt;br /&gt;     if(!visited[d.v]){&lt;br /&gt;      que.offer(d);&lt;br /&gt;      visited[d.v]=true;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    if(c.n&amp;gt;newLeader.n){&lt;br /&gt;     newLeader=c;&lt;br /&gt;     overlap=false;&lt;br /&gt;    }else if(c.n==newLeader.n){&lt;br /&gt;     overlap=true;&lt;br /&gt;    }&lt;br /&gt;    if(c.candidate&amp;&amp;((c.size()==1&amp;&amp;c!=leader)||c.size()==0)){&lt;br /&gt;     Cell d=new Cell(((c.n+1)/2)|1);&lt;br /&gt;     if(d.n!=1){&lt;br /&gt;      c.add(d);&lt;br /&gt;      d.add(c);&lt;br /&gt;      num++;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   if(!overlap){&lt;br /&gt;    leader=newLeader;&lt;br /&gt;    Cell c=new Cell(((leader.n+1)/2-1)|1);&lt;br /&gt;    if(c.n!=1){&lt;br /&gt;     leader.add(c);&lt;br /&gt;     c.add(leader);&lt;br /&gt;     num++;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   maxNum=max(maxNum, num);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void dfs(Cell leader){&lt;br /&gt;  fill(visited, false);&lt;br /&gt;  dfs(leader, "");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void dfs(Cell c, String tab){&lt;br /&gt;  debug(tab, c.n, c.size(), c.v);&lt;br /&gt;  visited[c.v]=true;&lt;br /&gt;  for(Cell d : c){&lt;br /&gt;   if(!visited[d.v]){&lt;br /&gt;    dfs(d, tab+"  ");&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class Cell extends LinkedList&amp;lt;Cell&amp;gt;{&lt;br /&gt;  int n, v;&lt;br /&gt;  boolean candidate;&lt;br /&gt;&lt;br /&gt;  Cell(int n){&lt;br /&gt;   this.n=n;&lt;br /&gt;   this.v=m++;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int hashCode(){&lt;br /&gt;   return v;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public boolean equals(Object o){&lt;br /&gt;   return hashCode()==((Cell)o).hashCode();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-7140016123709949657?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/7140016123709949657/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=7140016123709949657' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7140016123709949657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7140016123709949657'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1221-numoeba.html' title='Aizu Online Judge 1221 Numoeba'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6972788723395347249</id><published>2011-04-30T18:03:00.001+09:00</published><updated>2011-04-30T18:03:58.812+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1215 Co-occurrence Search</title><content type='html'>&lt;p&gt;■1215 Co-occurrence Search&lt;/p&gt;しゃくとり法で解くことが出来る．入力がややこしく，無限ループによるTLEを連発してしまった．&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; char[] s, key;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   StringBuffer lines=new StringBuffer();&lt;br /&gt;   for(;;){&lt;br /&gt;    String line=sc.nextLine();&lt;br /&gt;    if(line.equals("")){&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;    lines.append(line);&lt;br /&gt;   }&lt;br /&gt;   s=lines.toString().toCharArray();&lt;br /&gt;   key=sc.nextLine().toCharArray();&lt;br /&gt;   solve();&lt;br /&gt;   if(sc.hasNext()){&lt;br /&gt;    sc.nextLine();&lt;br /&gt;   }else{&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  System.out.flush();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int i=0, j=0;&lt;br /&gt;  int num=0;&lt;br /&gt;  int n=s.length;&lt;br /&gt;&lt;br /&gt;  int min=INF;&lt;br /&gt;  int cMin=0, iMin=0, jMin=0;&lt;br /&gt;&lt;br /&gt;  int nKey=0;&lt;br /&gt;  boolean[] isKey=new boolean[256];&lt;br /&gt;  for(char c : key){&lt;br /&gt;   isKey[c]=true;&lt;br /&gt;  }&lt;br /&gt;  for(boolean b : isKey){&lt;br /&gt;   nKey+=b?1:0;&lt;br /&gt;  }&lt;br /&gt;  int[] count=new int[256];&lt;br /&gt;&lt;br /&gt;  for(;;){&lt;br /&gt;   for(; j&amp;lt;n&amp;&amp;num&amp;lt;nKey; j++){&lt;br /&gt;    if(isKey[s[j]]&amp;&amp;count[s[j]]++==0){&lt;br /&gt;     num++;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   if(num&amp;lt;nKey){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   if(j-i&amp;lt;min){&lt;br /&gt;    iMin=i;&lt;br /&gt;    jMin=j;&lt;br /&gt;    min=j-i;&lt;br /&gt;    cMin=1;&lt;br /&gt;   }else if(j-i==min){&lt;br /&gt;    cMin++;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   if(isKey[s[i]]&amp;&amp;--count[s[i]]==0){&lt;br /&gt;    num--;&lt;br /&gt;   }&lt;br /&gt;   i++;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  println(cMin+"\n");&lt;br /&gt;  if(cMin&amp;gt;0){&lt;br /&gt;   String ans=new String(s, iMin, jMin-iMin);&lt;br /&gt;   for(int k=0; k&amp;lt;(ans.length()-1)/72+1; k++){&lt;br /&gt;    println(ans.substring(k*72, min((k+1)*72, ans.length())));&lt;br /&gt;   }&lt;br /&gt;   println("");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6972788723395347249?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6972788723395347249/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6972788723395347249' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6972788723395347249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6972788723395347249'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1215-co-occurrence.html' title='Aizu Online Judge 1215 Co-occurrence Search'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-5373592749593883845</id><published>2011-04-30T18:03:00.000+09:00</published><updated>2011-04-30T18:03:58.232+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1226 Fishnet</title><content type='html'>&lt;p&gt;■1226 Fishnet&lt;/p&gt;全通り試す．面積はヘロンの公式を使えば簡単．&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; P[] a, b, c, d;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   n+=2;&lt;br /&gt;   a=new P[n];&lt;br /&gt;   b=new P[n];&lt;br /&gt;   c=new P[n];&lt;br /&gt;   d=new P[n];&lt;br /&gt;   a[0]=new P(0, 0);&lt;br /&gt;   b[0]=new P(0, 1);&lt;br /&gt;   c[0]=new P(0, 0);&lt;br /&gt;   d[0]=new P(1, 0);&lt;br /&gt;   for(int i=1; i&amp;lt;n-1; i++)&lt;br /&gt;    a[i]=new P(sc.nextDouble(), 0);&lt;br /&gt;   for(int i=1; i&amp;lt;n-1; i++)&lt;br /&gt;    b[i]=new P(sc.nextDouble(), 1);&lt;br /&gt;   for(int i=1; i&amp;lt;n-1; i++)&lt;br /&gt;    c[i]=new P(0, sc.nextDouble());&lt;br /&gt;   for(int i=1; i&amp;lt;n-1; i++)&lt;br /&gt;    d[i]=new P(1, sc.nextDouble());&lt;br /&gt;   a[n-1]=new P(1, 0);&lt;br /&gt;   b[n-1]=new P(1, 1);&lt;br /&gt;   c[n-1]=new P(0, 1);&lt;br /&gt;   d[n-1]=new P(1, 1);&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  double ans=0;&lt;br /&gt;  for(int j=0; j&amp;lt;n-1; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;n-1; i++){&lt;br /&gt;    P p1=isLL(a[i], b[i], c[j], d[j]);&lt;br /&gt;    P p2=isLL(a[i+1], b[i+1], c[j], d[j]);&lt;br /&gt;    P p3=isLL(a[i+1], b[i+1], c[j+1], d[j+1]);&lt;br /&gt;    P p4=isLL(a[i], b[i], c[j+1], d[j+1]);&lt;br /&gt;    ans=max(ans, area(p1, p2, p3)+area(p3, p4, p1));&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println(String.format("%.6f", ans+EPS));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; double area(P p1, P p2, P p3){&lt;br /&gt;  double a=p1.sub(p2).abs();&lt;br /&gt;  double b=p2.sub(p3).abs();&lt;br /&gt;  double c=p3.sub(p1).abs();&lt;br /&gt;  double s=(a+b+c)/2;&lt;br /&gt;  return Math.sqrt(s*(s-a)*(s-b)*(s-c));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // 直線と直線の交点&lt;br /&gt; P isLL(P p1, P p2, P q1, P q2){&lt;br /&gt;  double d=q2.sub(q1).det(p2.sub(p1));&lt;br /&gt;  if(abs(d)&amp;lt;EPS)&lt;br /&gt;   return null;&lt;br /&gt;  return p1.add(p2.sub(p1).mul(q2.sub(q1).det(q1.sub(p1))/d));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P{&lt;br /&gt;  double x, y;&lt;br /&gt;&lt;br /&gt;  P(){&lt;br /&gt;   this(0, 0);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P(double x, double y){&lt;br /&gt;   this.x=x;&lt;br /&gt;   this.y=y;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P add(P p){&lt;br /&gt;   return new P(x+p.x, y+p.y);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P sub(P p){&lt;br /&gt;   return new P(x-p.x, y-p.y);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P mul(double m){&lt;br /&gt;   return new P(x*m, y*m);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P div(double d){&lt;br /&gt;   return new P(x/d, y/d);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double abs(){&lt;br /&gt;   return Math.sqrt(abs2());&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double abs2(){&lt;br /&gt;   return x*x+y*y;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double arg(){&lt;br /&gt;   return Math.atan2(y, x);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // inner product&lt;br /&gt;  double dot(P p){&lt;br /&gt;   return x*p.x+y*p.y;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // outer product&lt;br /&gt;  double det(P p){&lt;br /&gt;   return x*p.y-y*p.x;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P rot90(){&lt;br /&gt;   return new P(-y, x);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // conjugation&lt;br /&gt;  P conj(){&lt;br /&gt;   return new P(x, -y);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public String toString(){&lt;br /&gt;   return "("+x+", "+y+")";&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-5373592749593883845?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/5373592749593883845/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=5373592749593883845' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5373592749593883845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5373592749593883845'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1226-fishnet.html' title='Aizu Online Judge 1226 Fishnet'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-5660706870726997251</id><published>2011-04-21T22:53:00.000+09:00</published><updated>2011-04-21T22:53:18.765+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1217 Family Tree</title><content type='html'>&lt;p&gt;■ 1217 Family Tree&lt;/p&gt;入力の解析が少し面倒．クエリに対する判定は，ある人の親さえ分かれば非常に簡単に出来る．&lt;br/&gt;下記のコードではchildrenも記録していたけど全く必要なかった．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, m;&lt;br /&gt; HashMap&amp;lt;String, String&amp;gt; parent;&lt;br /&gt; HashMap&amp;lt;String, LinkedList&amp;lt;String&amp;gt;&amp;gt; children;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   if((n|m)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   parent=new HashMap&amp;lt;String, String&amp;gt;();&lt;br /&gt;   children=new HashMap&amp;lt;String, LinkedList&amp;lt;String&amp;gt;&amp;gt;();&lt;br /&gt;   sc.nextLine();&lt;br /&gt;   String p="", r=""; // 親, 1つ前&lt;br /&gt;   children.put(p, new LinkedList&amp;lt;String&amp;gt;());&lt;br /&gt;   int x=-1;&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    String s=sc.nextLine();&lt;br /&gt;    int y=s.length()-s.replaceAll(" ", "").length();&lt;br /&gt;    s=s.replaceAll(" ", "");&lt;br /&gt;    // debug(s, r, p);&lt;br /&gt;    if(y&amp;gt;x){&lt;br /&gt;     p=r;&lt;br /&gt;    }else if(y&amp;lt;x){&lt;br /&gt;     for(int i=y; i&amp;lt;x; i++){&lt;br /&gt;      p=parent.get(p);&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    parent.put(s, p);&lt;br /&gt;    children.get(p).add(s);&lt;br /&gt;    children.put(s, new LinkedList&amp;lt;String&amp;gt;());&lt;br /&gt;    x=y;&lt;br /&gt;    r=s;&lt;br /&gt;   }&lt;br /&gt;   // dfs("", "");&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    String s=sc.next();&lt;br /&gt;    sc.next();&lt;br /&gt;    sc.next();&lt;br /&gt;    char c=sc.next().charAt(0);&lt;br /&gt;    sc.next();&lt;br /&gt;    String t=sc.next();&lt;br /&gt;    t=t.substring(0, t.length()-1);&lt;br /&gt;    boolean f=false;&lt;br /&gt;    switch(c){&lt;br /&gt;    case 'c':&lt;br /&gt;     f=parent.containsKey(s)&amp;&amp;parent.get(s).equals(t);&lt;br /&gt;     break;&lt;br /&gt;    case 'p':&lt;br /&gt;     f=parent.containsKey(t)&amp;&amp;parent.get(t).equals(s);&lt;br /&gt;     break;&lt;br /&gt;    case 's':&lt;br /&gt;     f=parent.containsKey(s)&amp;&amp;parent.containsKey(t)&lt;br /&gt;       &amp;&amp;parent.get(s).equals(parent.get(t));&lt;br /&gt;     break;&lt;br /&gt;    case 'd':&lt;br /&gt;     for(s=parent.get(s); s!=null; s=parent.get(s)){&lt;br /&gt;      f|=s.equals(t);&lt;br /&gt;     }&lt;br /&gt;     break;&lt;br /&gt;    case 'a':&lt;br /&gt;     for(t=parent.get(t); t!=null; t=parent.get(t)){&lt;br /&gt;      f|=t.equals(s);&lt;br /&gt;     }&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;    println(f?"True":"False");&lt;br /&gt;   }&lt;br /&gt;   println("");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void dfs(String s, String tab){&lt;br /&gt;  for(String t : children.get(s)){&lt;br /&gt;   debug(tab, t, parent.get(t));&lt;br /&gt;   dfs(t, tab+"\t");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  // System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-5660706870726997251?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/5660706870726997251/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=5660706870726997251' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5660706870726997251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5660706870726997251'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1217-family-tree.html' title='Aizu Online Judge 1217 Family Tree'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-3797983923239555540</id><published>2011-04-20T23:15:00.000+09:00</published><updated>2011-04-20T23:15:10.897+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Codeforces'/><title type='text'>Codeforces Beta Round #69 (Div. 2 Only)</title><content type='html'>&lt;p&gt;Codeforces Beta Round #69 (Div. 2 Only)&lt;/p&gt;Div. 1復帰が目標でした．&lt;p&gt;A. Panoramixs Prediction&lt;/p&gt;値が小さいので愚直に一つずつ試行．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class A{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int m, n;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  m=sc.nextInt();&lt;br /&gt;  n=sc.nextInt();&lt;br /&gt;  boolean f=true;&lt;br /&gt;  for(int i=m+1; i&amp;lt;n; i++){&lt;br /&gt;   f&amp;=!isP(i);&lt;br /&gt;  }&lt;br /&gt;  f&amp;=isP(n);&lt;br /&gt;  println(f?"YES":"NO");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; boolean isP(int n){&lt;br /&gt;  for(int i=2; i*i&amp;lt;=n; i++){&lt;br /&gt;   if(n%i==0){&lt;br /&gt;    return false;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return n!=1;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  new A().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;B. Depression&lt;/p&gt;%12を忘れないように気をつけるだけ．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class B{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  String[] ss=sc.next().split(":");&lt;br /&gt;  double h=Integer.parseInt(ss[0]);&lt;br /&gt;  double m=Integer.parseInt(ss[1]);&lt;br /&gt;  h=(h%12)/12.0*360;&lt;br /&gt;  m=m/60.0*360;&lt;br /&gt;  h=(h+m/12)%360;&lt;br /&gt;  println(h+" "+m);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  new B().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;C. Heroes&lt;p/&gt;全探索で解くことが出来るが，ちょっとしたミスをしたためSystem Test落ち．下は修正版．&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class C{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, a, b, c;&lt;br /&gt; int[] p, q;&lt;br /&gt; HashMap&amp;lt;String, Integer&amp;gt; map;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  int m=7;&lt;br /&gt;&lt;br /&gt;  map=new HashMap&amp;lt;String, Integer&amp;gt;();&lt;br /&gt;  map.put("Anka", 0);&lt;br /&gt;  map.put("Chapay", 1);&lt;br /&gt;  map.put("Cleo", 2);&lt;br /&gt;  map.put("Troll", 3);&lt;br /&gt;  map.put("Dracul", 4);&lt;br /&gt;  map.put("Snowy", 5);&lt;br /&gt;  map.put("Hexadecimal", 6);&lt;br /&gt;&lt;br /&gt;  n=sc.nextInt();&lt;br /&gt;  p=new int[n];&lt;br /&gt;  q=new int[n];&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   p[i]=map.get(sc.next());&lt;br /&gt;   sc.next();&lt;br /&gt;   q[i]=map.get(sc.next());&lt;br /&gt;  }&lt;br /&gt;  a=sc.nextInt();&lt;br /&gt;  b=sc.nextInt();&lt;br /&gt;  c=sc.nextInt();&lt;br /&gt;&lt;br /&gt;  long dmin=1L&amp;lt;&amp;lt;32;&lt;br /&gt;  int lmax=0;&lt;br /&gt;  for(int k=1; k&amp;lt;1&amp;lt;&amp;lt;m; k++){&lt;br /&gt;   for(int j=1; j&amp;lt;1&amp;lt;&amp;lt;m; j++){&lt;br /&gt;    int i=((1&amp;lt;&amp;lt;m)-1)&amp;~(k^j);&lt;br /&gt;    if((k^j)==(k|j)&amp;&amp;i&amp;gt;0){&lt;br /&gt;     int x=a/Integer.bitCount(i);&lt;br /&gt;     int y=b/Integer.bitCount(j);&lt;br /&gt;     int z=c/Integer.bitCount(k);&lt;br /&gt;     int d=max(abs(x-y), max(abs(y-z), abs(z-x)));&lt;br /&gt;&lt;br /&gt;     int l=0;&lt;br /&gt;     for(int e=0; e&amp;lt;n; e++){&lt;br /&gt;      if(((k&amp;gt;&amp;gt;p[e])&amp;1)!=0&amp;&amp;((k&amp;gt;&amp;gt;q[e])&amp;1)!=0)&lt;br /&gt;       l++;&lt;br /&gt;      else if(((j&amp;gt;&amp;gt;p[e])&amp;1)!=0&amp;&amp;((j&amp;gt;&amp;gt;q[e])&amp;1)!=0)&lt;br /&gt;       l++;&lt;br /&gt;      else if(((i&amp;gt;&amp;gt;p[e])&amp;1)!=0&amp;&amp;((i&amp;gt;&amp;gt;q[e])&amp;1)!=0)&lt;br /&gt;       l++;&lt;br /&gt;     }&lt;br /&gt;     if(d&amp;lt;dmin){&lt;br /&gt;      dmin=d;&lt;br /&gt;      lmax=l;&lt;br /&gt;     }else if(d==dmin){&lt;br /&gt;      lmax=max(lmax, l);&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println(dmin+" "+lmax);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  new C().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;D. Falling Anvils&lt;/p&gt;x&lt;sup&gt;2&lt;/sup&gt;+√px+q=0は，p≧4qならば実解が存在する．&lt;br/&gt;つまり，(p,q)∈[0,a]×[-b,b]の長方形内においてp≧4qを満たす領域の面積を計算し，それを長方形の面積で割った値が，実解が存在する確率．a=0やb=0の時は，0除算を避けるために例外処理を追加する必要がある．&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class D{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int t;&lt;br /&gt; double a, b;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  t=sc.nextInt();&lt;br /&gt;  for(int i=0; i&amp;lt;t; i++){&lt;br /&gt;   a=sc.nextInt();&lt;br /&gt;   b=sc.nextInt();&lt;br /&gt;   double area;&lt;br /&gt;   if(4*b&amp;lt;a+EPS){&lt;br /&gt;    area=2*b*(a-b);&lt;br /&gt;   }else{&lt;br /&gt;    area=a*(b+a/8);&lt;br /&gt;   }&lt;br /&gt;   if(abs(b)&amp;lt;EPS){&lt;br /&gt;    println("1");&lt;br /&gt;   }else if(abs(a)&amp;lt;EPS){&lt;br /&gt;    println("0.5");&lt;br /&gt;   }else{&lt;br /&gt;    println(area/(2*a*b)+"");&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  new D().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;ooxo- 2726p 46位&lt;br/&gt;1624 -&gt; 1654&lt;br/&gt;復帰完了…というところです．&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-3797983923239555540?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/3797983923239555540/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=3797983923239555540' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3797983923239555540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3797983923239555540'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/codeforces-beta-round-69-div-2-only.html' title='Codeforces Beta Round #69 (Div. 2 Only)'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-1689745892716327936</id><published>2011-04-20T21:40:00.000+09:00</published><updated>2011-04-20T21:40:26.507+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1218 Push!!</title><content type='html'>&lt;p&gt;■1218 Push!!&lt;/p&gt;人の座標と荷物の座標を状態とし，距離を荷物を押した回数としたダイクストラで解ける．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int m, n;&lt;br /&gt; int[][] a;&lt;br /&gt; int mx0, my0, cx0, cy0, gx, gy;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if((m|n)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   a=new int[n][m];&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;     a[j][i]=sc.nextInt();&lt;br /&gt;     if(a[j][i]==2){&lt;br /&gt;      cx0=i;&lt;br /&gt;      cy0=j;&lt;br /&gt;      a[j][i]=0;&lt;br /&gt;     }else if(a[j][i]==3){&lt;br /&gt;      gx=i;&lt;br /&gt;      gy=j;&lt;br /&gt;      a[j][i]=0;&lt;br /&gt;     }else if(a[j][i]==4){&lt;br /&gt;      mx0=i;&lt;br /&gt;      my0=j;&lt;br /&gt;      a[j][i]=0;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  PriorityQueue&amp;lt;P&amp;gt; que=new PriorityQueue&amp;lt;P&amp;gt;();&lt;br /&gt;  boolean[][][][] visited=new boolean[m][n][m][n];&lt;br /&gt;  int[][][][] d=new int[m][n][m][n];&lt;br /&gt;&lt;br /&gt;  for(int k=0; k&amp;lt;m; k++){&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;     fill(d[k][j][i], INF);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  que.add(new P(mx0, my0, cx0, cy0));&lt;br /&gt;  visited[mx0][my0][cx0][cy0]=true;&lt;br /&gt;  d[mx0][my0][cx0][cy0]=0;&lt;br /&gt;&lt;br /&gt;  int[] dx={0, 0, -1, 1};&lt;br /&gt;  int[] dy={1, -1, 0, 0};&lt;br /&gt;&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   P p=que.poll();&lt;br /&gt;   if(d[p.mx][p.my][p.cx][p.cy]&amp;lt;p.d){&lt;br /&gt;    continue;&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;    P q=new P(p.mx+dx[i], p.my+dy[i], p.cx, p.cy);&lt;br /&gt;    int push=0;&lt;br /&gt;    // 人が画面外or移動不可&lt;br /&gt;    if(q.mx&amp;lt;0||q.mx&amp;gt;=m||q.my&amp;lt;0||q.my&amp;gt;=n||a[q.my][q.mx]==1){&lt;br /&gt;     continue;&lt;br /&gt;    }&lt;br /&gt;    // 人の移動先がブロック&lt;br /&gt;    if(q.mx==q.cx&amp;&amp;q.my==q.cy){&lt;br /&gt;     q.cx+=dx[i];&lt;br /&gt;     q.cy+=dy[i];&lt;br /&gt;     push=1;&lt;br /&gt;    }&lt;br /&gt;    // ブロックが画面外or配置不可&lt;br /&gt;    if(q.cx&amp;lt;0||q.cx&amp;gt;=m||q.cy&amp;lt;0||q.cy&amp;gt;=n||a[q.cy][q.cx]==1){&lt;br /&gt;     continue;&lt;br /&gt;    }&lt;br /&gt;    // 訪問していない&lt;br /&gt;    if(!visited[q.mx][q.my][q.cx][q.cy]){&lt;br /&gt;     q.d=d[q.mx][q.my][q.cx][q.cy]=d[p.mx][p.my][p.cx][p.cy]&lt;br /&gt;       +push;&lt;br /&gt;     visited[q.mx][q.my][q.cx][q.cy]=true;&lt;br /&gt;     que.offer(q);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  int min=INF;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    min=min(min, d[i][j][gx][gy]);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  println(""+(min==INF?-1:min));&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P implements Comparable&amp;lt;P&amp;gt;{&lt;br /&gt;  int mx, my, cx, cy;&lt;br /&gt;  int d;&lt;br /&gt;&lt;br /&gt;  P(int mx, int my, int cx, int cy){&lt;br /&gt;   this.mx=mx;&lt;br /&gt;   this.my=my;&lt;br /&gt;   this.cx=cx;&lt;br /&gt;   this.cy=cy;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(P p){&lt;br /&gt;   return d-p.d;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-1689745892716327936?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/1689745892716327936/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=1689745892716327936' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1689745892716327936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1689745892716327936'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1218-push.html' title='Aizu Online Judge 1218 Push!!'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6710872486957954543</id><published>2011-04-20T21:39:00.000+09:00</published><updated>2011-04-20T21:39:25.328+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1209 Square Coins</title><content type='html'>&lt;p&gt;■1209 Square Coins&lt;/p&gt;dp[i]を支払う金額がiの時のコインの組み合わせの数とする．&lt;br/&gt;コインa[0],…,a[j-1]までのdp[i]が求められていれば，a[j]についてのdp[i]を以下の式で求めていけばよい．&lt;br/&gt;dp[i]+=dp[i-a[j]]&lt;br/&gt;初期値は，&lt;br/&gt;dp[0]=1&lt;br/&gt;dp[i]=0 (i≠0)&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  int n=17;&lt;br /&gt;  int[] a=new int[n];&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   a[i]=(i+1)*(i+1);&lt;br /&gt;  }&lt;br /&gt;  int max=300;&lt;br /&gt;  int[] dp=new int[max];&lt;br /&gt;  dp[0]=1;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   for(int i=a[j]; i&amp;lt;max; i++){&lt;br /&gt;    dp[i]+=dp[i-a[j]];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(;;){&lt;br /&gt;   int k=sc.nextInt();&lt;br /&gt;   if(k==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   println(""+dp[k]);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6710872486957954543?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6710872486957954543/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6710872486957954543' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6710872486957954543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6710872486957954543'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1209-square-coins_20.html' title='Aizu Online Judge 1209 Square Coins'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-4488216797716160998</id><published>2011-04-19T22:03:00.000+09:00</published><updated>2011-04-19T22:03:28.734+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1209 Square Coins</title><content type='html'>&lt;p&gt;■1209 Square Coins&lt;/p&gt;dp[i]を支払う金額がiの時のコインの組み合わせの数とする．&lt;br/&gt;コインa[0],…,a[j-1]までのdp[i]が求められていれば，a[j]についてのdp[i]を以下の式で更新すれば良い．&lt;br/&gt;dp[i]+=dp[i-a[j]]&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  int n=17;&lt;br /&gt;  int[] a=new int[n];&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   a[i]=(i+1)*(i+1);&lt;br /&gt;  }&lt;br /&gt;  int max=300;&lt;br /&gt;  int[] dp=new int[max];&lt;br /&gt;  dp[0]=1;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   for(int i=a[j]; i&amp;lt;max; i++){&lt;br /&gt;    dp[i]+=dp[i-a[j]];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(;;){&lt;br /&gt;   int k=sc.nextInt();&lt;br /&gt;   if(k==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   println(""+dp[k]);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-4488216797716160998?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/4488216797716160998/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=4488216797716160998' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4488216797716160998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4488216797716160998'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1209-square-coins.html' title='Aizu Online Judge 1209 Square Coins'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-7042339517862521704</id><published>2011-04-19T00:47:00.000+09:00</published><updated>2011-04-19T00:47:53.642+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TopCoder Member SRM 503 Div1 Medium KingdomXCitiesandVillages</title><content type='html'>&lt;p&gt;■KingdomXCitiesandVillages&lt;/p&gt;問題・解説は，&lt;a href="http://apps.topcoder.com/wiki/display/tc/Algorithm+Problem+Set+Analysis"&gt;Match Editorial Archive&lt;/a&gt;を参考に．&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;public class KingdomXCitiesandVillages {&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int m, n;&lt;br /&gt;&lt;br /&gt; public double determineLength(int[] cx, int[] cy, int[] vx, int[] vy) {&lt;br /&gt;  m=cx.length;&lt;br /&gt;  n=vx.length;&lt;br /&gt;  double sum=0;&lt;br /&gt;  for(int j=0;j&amp;lt;n;j++){&lt;br /&gt;   LinkedList&amp;lt;R&amp;gt; list=new LinkedList&amp;lt;R&amp;gt;();&lt;br /&gt;   for(int i=0;i&amp;lt;n;i++){&lt;br /&gt;    if(i!=j){&lt;br /&gt;     list.add(new R(Math.hypot(vx[j]-vx[i], vy[j]-vy[i]), false));&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   for(int i=0;i&amp;lt;m;i++){&lt;br /&gt;    list.add(new R(Math.hypot(vx[j]-cx[i], vy[j]-cy[i]), true));&lt;br /&gt;   }&lt;br /&gt;   R[] rs=list.toArray(new R[0]);&lt;br /&gt;   Arrays.sort(rs);&lt;br /&gt;   for(int i=0;i&amp;lt;rs.length;i++){&lt;br /&gt;    if(rs[i].isCity){&lt;br /&gt;     sum+=rs[i].d/(i+1);&lt;br /&gt;     break;&lt;br /&gt;    }else{&lt;br /&gt;     sum+=rs[i].d/(i+1)/(i+2);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return sum;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class R implements Comparable&amp;lt;R&amp;gt;{&lt;br /&gt;  double d;&lt;br /&gt;  boolean isCity;&lt;br /&gt;  R(double d, boolean isCity){&lt;br /&gt;   this.d=d;&lt;br /&gt;   this.isCity=isCity;&lt;br /&gt;  }&lt;br /&gt;  public int compareTo(R r){&lt;br /&gt;   if(d-r.d+EPS&amp;lt;0){&lt;br /&gt;    return -1;&lt;br /&gt;   }else if(d-r.d&amp;gt;0+EPS){&lt;br /&gt;    return 1;&lt;br /&gt;   }else{&lt;br /&gt;    return 0;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Powered by FileEdit&lt;br /&gt;// Powered by TZTester 1.01 [25-Feb-2003]&lt;br /&gt;// Powered by CodeProcessor&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-7042339517862521704?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/7042339517862521704/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=7042339517862521704' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7042339517862521704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7042339517862521704'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/topcoder-member-srm-503-div1-medium.html' title='TopCoder Member SRM 503 Div1 Medium KingdomXCitiesandVillages'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-287253486093245726</id><published>2011-04-18T21:06:00.000+09:00</published><updated>2011-04-18T21:06:22.031+09:00</updated><title type='text'>Aizu Online Judge 1216 Lost in Space</title><content type='html'>&lt;p&gt;■1216 Lost in Space&lt;/p&gt;全探索で間に合う．&lt;br/&gt;元の三角形の辺の長さをd[i]とする．&lt;br/&gt;与えられた座標軍からある3点を選び，それぞれの辺の長さをe[i]とする．&lt;br/&gt;この時，それぞれの辺の比r[i]は，&lt;br/&gt;r[i]=e[i]/d[i]&lt;br/&gt;となる．&lt;br/&gt;それぞれの比の誤差が，0.1%以上になることは無い，というのだから，任意のi，jに対して，&lt;br/&gt;|r[i]-r[j]|/r[i] &lt; 0.1&lt;br/&gt;となる．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; double[] d;&lt;br /&gt; P[] ps;&lt;br /&gt; int n;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  d=new double[3];&lt;br /&gt;  for(int t=sc.nextInt(); t&amp;gt;0; t--){&lt;br /&gt;   for(int i=0; i&amp;lt;3; i++){&lt;br /&gt;    d[i]=sc.nextDouble();&lt;br /&gt;   }&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   ps=new P[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    double x=sc.nextDouble();&lt;br /&gt;    double y=sc.nextDouble();&lt;br /&gt;    double z=sc.nextDouble();&lt;br /&gt;    ps[i]=new P(x, y, z);&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  double[] len={0, 0, 0};&lt;br /&gt;  for(int c=0; c&amp;lt;n; c++){&lt;br /&gt;   for(int b=0; b&amp;lt;n; b++){&lt;br /&gt;    if(b==c){&lt;br /&gt;     continue;&lt;br /&gt;    }&lt;br /&gt;    for(int a=0; a&amp;lt;n; a++){&lt;br /&gt;     if(a==b||a==c){&lt;br /&gt;      continue;&lt;br /&gt;     }&lt;br /&gt;     len[0]=ps[b].sub(ps[c]).abs()/d[0];&lt;br /&gt;     len[1]=ps[c].sub(ps[a]).abs()/d[1];&lt;br /&gt;     len[2]=ps[a].sub(ps[b]).abs()/d[2];&lt;br /&gt;     boolean error=false;&lt;br /&gt;     for(int i=0; i&amp;lt;3; i++){&lt;br /&gt;      int p=i;&lt;br /&gt;      int q=(i+1)%3;&lt;br /&gt;      error|=abs(len[p]-len[q])/len[p]+EPS&amp;gt;=0.001;&lt;br /&gt;     }&lt;br /&gt;     if(!error){&lt;br /&gt;      println((a+1)+" "+(b+1)+" "+(c+1));&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P{&lt;br /&gt;  double x, y, z;&lt;br /&gt;&lt;br /&gt;  P(){&lt;br /&gt;   this(0, 0, 0);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P(double x, double y, double z){&lt;br /&gt;   this.x=x;&lt;br /&gt;   this.y=y;&lt;br /&gt;   this.z=z;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P add(P p){&lt;br /&gt;   return new P(x+p.x, y+p.y, z+p.y);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P sub(P p){&lt;br /&gt;   return new P(x-p.x, y-p.y, z-p.z);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P mul(double m){&lt;br /&gt;   return new P(x*m, y*m, z*m);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P div(double d){&lt;br /&gt;   return new P(x/d, y/d, z/d);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double abs(){&lt;br /&gt;   return Math.sqrt(abs2());&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double abs2(){&lt;br /&gt;   return x*x+y*y+z*z;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // inner product&lt;br /&gt;  double dot(P p){&lt;br /&gt;   return x*p.x+y*p.y+z*p.y;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // outer product&lt;br /&gt;  P det(P p){&lt;br /&gt;   return new P(y*p.z-z*p.y, z*p.x-x*p.z, x*p.y-y*p.x);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public String toString(){&lt;br /&gt;   return x+", "+y+", "+z;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-287253486093245726?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/287253486093245726/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=287253486093245726' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/287253486093245726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/287253486093245726'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1216-lost-in-space.html' title='Aizu Online Judge 1216 Lost in Space'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-3258910559132477480</id><published>2011-04-18T21:05:00.001+09:00</published><updated>2011-04-18T21:05:41.812+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1214 Walking Ant</title><content type='html'>&lt;p&gt;■1214 Walking Ant&lt;/p&gt;BFSで解ける．但し状態を，(x, y, hp)とする．hpは現在の体力を表す．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int m, n;&lt;br /&gt; int sx, sy, gx, gy;&lt;br /&gt; int[][] a;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if((m|n)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   a=new int[n][m];&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;     a[j][i]=sc.nextInt();&lt;br /&gt;     if(a[j][i]==2){&lt;br /&gt;      sx=i;&lt;br /&gt;      sy=j;&lt;br /&gt;      a[j][i]=1;&lt;br /&gt;     }else if(a[j][i]==3){&lt;br /&gt;      gx=i;&lt;br /&gt;      gy=j;&lt;br /&gt;      a[j][i]=1;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int max=7;&lt;br /&gt;  int[][][] d=new int[n][m][max];&lt;br /&gt;  boolean[][][] visited=new boolean[n][m][max];&lt;br /&gt;  LinkedList&amp;lt;P&amp;gt; que=new LinkedList&amp;lt;P&amp;gt;();&lt;br /&gt;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    fill(d[j][i], INF);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  que.offer(new P(sx, sy, 6));&lt;br /&gt;  d[sy][sx][6]=0;&lt;br /&gt;  visited[sy][sx][6]=true;&lt;br /&gt;&lt;br /&gt;  int[] dx={0, 0, -1, 1};&lt;br /&gt;  int[] dy={-1, 1, 0, 0};&lt;br /&gt;&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   P p=que.poll();&lt;br /&gt;   for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;    P q=new P(p.x+dx[i], p.y+dy[i], p.hp-1);&lt;br /&gt;    if(q.x&amp;gt;=0&amp;&amp;q.x&amp;lt;m&amp;&amp;q.y&amp;gt;=0&amp;&amp;q.y&amp;lt;n&amp;&amp;a[q.y][q.x]!=0&amp;&amp;q.hp&amp;gt;0){&lt;br /&gt;     if(a[q.y][q.x]==4){&lt;br /&gt;      q.hp=6;&lt;br /&gt;     }&lt;br /&gt;     if(!visited[q.y][q.x][q.hp]){&lt;br /&gt;      que.offer(q);&lt;br /&gt;      d[q.y][q.x][q.hp]=d[p.y][p.x][p.hp]+1;&lt;br /&gt;      visited[q.y][q.x][q.hp]=true;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  int ans=INF;&lt;br /&gt;  for(int k=0; k&amp;lt;max; k++){&lt;br /&gt;   ans=min(ans, d[gy][gx][k]);&lt;br /&gt;  }&lt;br /&gt;  println((ans!=INF?ans:-1)+"");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P{&lt;br /&gt;  int x, y, hp;&lt;br /&gt;&lt;br /&gt;  P(int x, int y, int hp){&lt;br /&gt;   this.x=x;&lt;br /&gt;   this.y=y;&lt;br /&gt;   this.hp=hp;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-3258910559132477480?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/3258910559132477480/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=3258910559132477480' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3258910559132477480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3258910559132477480'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1214-walking-ant.html' title='Aizu Online Judge 1214 Walking Ant'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-7734782526327392831</id><published>2011-04-17T16:27:00.001+09:00</published><updated>2011-04-17T16:27:55.100+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TopCoder'/><title type='text'>TopCoder Member SRM 503</title><content type='html'>&lt;p&gt;SRM 503(12/19 1:00~3:00)&lt;/p&gt;&lt;p&gt;■FoxMakingDice(Div1 Easy)&lt;/p&gt;Toastmanは，パンを何枚か焼きたい．パンには幾つかの種類があり，ある種類のパンは，X分未満焼くとunder toasted，X分超過焼くとover toastedとなる．&lt;br/&gt;Toastmanは，パンを焼いたが，m&lt;sub&gt;i&lt;/sub&gt;分焼いてunder toastedだったもの，また，n&lt;sub&gt;i&lt;/sub&gt;分焼いてover toastedだったものが出来た．Toastmanは何種類のパンを用いたかを覚えていないが，ある種類のパンを焼いたときにunder toasted・over toastedだったものがそれぞれ少なくとも1枚以上はあったという．&lt;br/&gt;パンの種類の最小数を答えよ．&lt;br/&gt;&lt;br/&gt;under toastedだったものをU，over toastedだったものをOとし，それらを焼かれた時間の数直線にプロットする．例えば下図．&lt;br/&gt;UOUOOUOUOUOUO&lt;br/&gt;&lt;p&gt;・パンの種類が1つで良い場合．&lt;/p&gt;UUUUU | OOOOOO&lt;br/&gt;上のような場合．Xは，"|"で表される．&lt;br/&gt;&lt;p&gt;・パンが何種類あっても不可能な場合．&lt;/p&gt;O…………&lt;br/&gt;または，&lt;br/&gt;…………U&lt;br/&gt;の場合．&lt;br/&gt;&lt;p&gt;・パンの種類が2つで良い場合．&lt;/p&gt;上記のどれにも当てはまらない場合．&lt;br/&gt;何故なら，必ずパンの順列は，&lt;br/&gt;U[…………]O&lt;br/&gt;となり，&lt;br/&gt;U | […………]O&lt;br/&gt;で分けると，&lt;br/&gt;[…………]内のOは全て排除され．&lt;br/&gt;[U……U]O&lt;br/&gt;となる．その後，&lt;br/&gt;[U……U] | O&lt;br/&gt;で分ければ終了する．&lt;br/&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;public class ToastXToast {&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; public int bake(int[] a, int[] b) {&lt;br /&gt;  Arrays.sort(a); // o&lt;br /&gt;  Arrays.sort(b); // x&lt;br /&gt;  boolean f=true;&lt;br /&gt;  for(int j=0;j&amp;lt;b.length;j++){&lt;br /&gt;   for(int i=0;i&amp;lt;a.length;i++){&lt;br /&gt;    f&amp;=a[i]&amp;lt;b[j];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  if(f){&lt;br /&gt;   return 1;&lt;br /&gt;  }&lt;br /&gt;  else if(a[0]&amp;gt;b[0]||a[a.length-1]&amp;gt;b[b.length-1]){&lt;br /&gt;   return -1;&lt;br /&gt;  }&lt;br /&gt;  else if(a.length&amp;gt;=2&amp;&amp;b.length&amp;gt;=2){&lt;br /&gt;   return 2;&lt;br /&gt;  }&lt;br /&gt;  else{&lt;br /&gt;   return -1;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object...os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  ToastXToast temp = new ToastXToast();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;■Result&lt;/p&gt;○×× 0 0&lt;br/&gt;144.26pt.&lt;br/&gt;&lt;p&gt;■Rating&lt;/p&gt;1243 -&gt; 1279&lt;br/&gt;若干上昇．少しずつRatingを上げていきたいものです…．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-7734782526327392831?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/7734782526327392831/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=7734782526327392831' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7734782526327392831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7734782526327392831'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/topcoder-srm-491.html' title='TopCoder Member SRM 503'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8711314483151291191</id><published>2011-04-16T21:23:00.001+09:00</published><updated>2011-04-16T21:25:16.509+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1212 Mirror Illusion</title><content type='html'>&lt;p&gt;■1212 Mirror Illusion&lt;/p&gt;ある座標pから方向vを見ていたとする．ちなみに，初期条件は，p&lt;sub&gt;0&lt;/sub&gt;=(0.75, 0.25)，v&lt;sub&gt;0&lt;/sub&gt;=(1, 1)&lt;br/&gt;vのノルムを16以上にとれば，(p+v)が必ず室外に出るので，以下vをそういうベクトルとする．&lt;br/&gt;まず，(p, p+v)が人に当たるかを調べる．当たっていたらそこで終了．&lt;br/&gt;次に，(p, p+v)が鏡に当たるかを調べる．一つでも当たる鏡があれば，その内で交差点が最もpに近い鏡mを選ぶ．pを，(p, p+v)とmとの交差点とする．また，新しい方向ベクトルを，mが横置きだったらv'=(v&lt;sub&gt;x&lt;/sub&gt;, -v&lt;sub&gt;y&lt;/sub&gt;)，縦置きだったらv'=(-v&lt;sub&gt;x&lt;/sub&gt;, v&lt;sub&gt;y&lt;/sub&gt;)とする．&lt;br/&gt;一つも当たらなかった場合は，外壁のいずれかに当たっていることになるので，4つの壁それぞれについて当たっているかおよび交差点を計算．&lt;br/&gt;&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; int m;&lt;br /&gt; Seg[] segs;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  m=8;&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n&amp;lt;0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   segs=new Seg[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    char c=sc.next().charAt(0);&lt;br /&gt;    int x=sc.nextInt();&lt;br /&gt;    int y=sc.nextInt();&lt;br /&gt;    if(c=='x'){&lt;br /&gt;     segs[i]=new Seg(0, x, y, x+1, y);&lt;br /&gt;    }else{&lt;br /&gt;     segs[i]=new Seg(1, x, y, x, y+1);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  P p0=new P(0.75, 0.25);&lt;br /&gt;  P p=new P(0.75, 0.25);&lt;br /&gt;  P v=new P(1, 1);&lt;br /&gt;  Seg[] walls=new Seg[4];&lt;br /&gt;  walls[0]=new Seg(0, 0, 0, m, 0);&lt;br /&gt;  walls[1]=new Seg(0, 0, m, m, m);&lt;br /&gt;  walls[2]=new Seg(0, 0, 0, 0, m);&lt;br /&gt;  walls[3]=new Seg(0, m, 0, m, m);&lt;br /&gt;&lt;br /&gt;  for(int i=0; i&amp;lt;10; i++){&lt;br /&gt;   v=v.div(v.abs()).mul(2*m);&lt;br /&gt;&lt;br /&gt;   if(p.sub(p0).abs()&amp;gt;EPS&amp;&amp;disSP(p, p.add(v), p0)&amp;lt;EPS){&lt;br /&gt;    int x=(int)(p0.x*100+EPS);&lt;br /&gt;    int y=(int)(p0.y*100+EPS);&lt;br /&gt;    println(x+" "+y);&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   Seg seg=null;&lt;br /&gt;   P p2=null;&lt;br /&gt;   double min=INF;&lt;br /&gt;   for(Seg s : segs){&lt;br /&gt;    if(crsSS(p, p.add(v), s.p1, s.p2)){&lt;br /&gt;     P q=isLL(p, p.add(v), s.p1, s.p2);&lt;br /&gt;     double d=p.sub(q).abs();&lt;br /&gt;     if(d&amp;lt;min+EPS&amp;&amp;d&amp;gt;EPS){&lt;br /&gt;      seg=s;&lt;br /&gt;      p2=q;&lt;br /&gt;      min=p.sub(q).abs();&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   if(p2!=null){&lt;br /&gt;    p=p2;&lt;br /&gt;    if(seg.d==0){&lt;br /&gt;     v.y=-v.y;&lt;br /&gt;    }else{&lt;br /&gt;     v.x=-v.x;&lt;br /&gt;    }&lt;br /&gt;   }else{&lt;br /&gt;    for(Seg s : walls){&lt;br /&gt;     if(crsSS(p, p.add(v), s.p1, s.p2)){&lt;br /&gt;      P q=isLL(p, p.add(v), s.p1, s.p2);&lt;br /&gt;      if(p.sub(q).abs()&amp;gt;EPS){&lt;br /&gt;       int x=(int)(q.x*100+EPS);&lt;br /&gt;       int y=(int)(q.y*100+EPS);&lt;br /&gt;       println(x+" "+y);&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // 線分と点の距離&lt;br /&gt; double disSP(P p1, P p2, P q){&lt;br /&gt;  if(p2.sub(p1).dot(q.sub(p1))&amp;lt;EPS)&lt;br /&gt;   return q.sub(p1).abs();&lt;br /&gt;  if(p1.sub(p2).dot(q.sub(p2))&amp;lt;EPS)&lt;br /&gt;   return q.sub(p2).abs();&lt;br /&gt;  return disLP(p1, p2, q);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // 直線と点の距離&lt;br /&gt; double disLP(P p1, P p2, P q){&lt;br /&gt;  return abs(p2.sub(p1).det(q.sub(p1)))/p2.sub(p1).abs();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // 線分と線分の交差判定&lt;br /&gt; boolean crsSS(P p1, P p2, P q1, P q2){&lt;br /&gt;  if(max(p1.x, p2.x)+EPS&amp;lt;min(q1.x, q2.x))&lt;br /&gt;   return false;&lt;br /&gt;  if(max(q1.x, q2.x)+EPS&amp;lt;min(p1.x, p2.x))&lt;br /&gt;   return false;&lt;br /&gt;  if(max(p1.y, p2.y)+EPS&amp;lt;min(q1.y, q2.y))&lt;br /&gt;   return false;&lt;br /&gt;  if(max(q1.y, q2.y)+EPS&amp;lt;min(p1.y, p2.y))&lt;br /&gt;   return false;&lt;br /&gt;  return signum(p2.sub(p1).det(q1.sub(p1)))&lt;br /&gt;    *signum(p2.sub(p1).det(q2.sub(p1)))&amp;lt;EPS&lt;br /&gt;    &amp;&amp;signum(q2.sub(q1).det(p1.sub(q1)))&lt;br /&gt;      *signum(q2.sub(q1).det(p2.sub(q1)))&amp;lt;EPS;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // 直線と直線の交点&lt;br /&gt; P isLL(P p1, P p2, P q1, P q2){&lt;br /&gt;  double d=q2.sub(q1).det(p2.sub(p1));&lt;br /&gt;  if(abs(d)&amp;lt;EPS)&lt;br /&gt;   return null;&lt;br /&gt;  return p1.add(p2.sub(p1).mul(q2.sub(q1).det(q1.sub(p1))/d));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class Seg{&lt;br /&gt;  int d;&lt;br /&gt;  P p1, p2;&lt;br /&gt;&lt;br /&gt;  Seg(int d, int x1, int y1, int x2, int y2){&lt;br /&gt;   this.d=d;&lt;br /&gt;   p1=new P(x1, y1);&lt;br /&gt;   p2=new P(x2, y2);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // 2 dimensions&lt;br /&gt; class P{&lt;br /&gt;  double x, y;&lt;br /&gt;&lt;br /&gt;  P(){&lt;br /&gt;   this(0, 0);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P(double x, double y){&lt;br /&gt;   this.x=x;&lt;br /&gt;   this.y=y;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P add(P p){&lt;br /&gt;   return new P(x+p.x, y+p.y);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P sub(P p){&lt;br /&gt;   return new P(x-p.x, y-p.y);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P mul(double m){&lt;br /&gt;   return new P(x*m, y*m);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P div(double d){&lt;br /&gt;   return new P(x/d, y/d);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double abs(){&lt;br /&gt;   return Math.sqrt(abs2());&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double abs2(){&lt;br /&gt;   return x*x+y*y;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double arg(){&lt;br /&gt;   return Math.atan2(y, x);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // inner product&lt;br /&gt;  double dot(P p){&lt;br /&gt;   return x*p.x+y*p.y;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // outer product&lt;br /&gt;  double det(P p){&lt;br /&gt;   return x*p.y-y*p.x;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P rot90(){&lt;br /&gt;   return new P(-y, x);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // conjugation&lt;br /&gt;  P conj(){&lt;br /&gt;   return new P(x, -y);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8711314483151291191?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8711314483151291191/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8711314483151291191' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8711314483151291191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8711314483151291191'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1212-mirror-illusion.html' title='Aizu Online Judge 1212 Mirror Illusion'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6069830979596525849</id><published>2011-04-16T21:13:00.000+09:00</published><updated>2011-04-16T21:13:54.187+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1211 Trapezoids</title><content type='html'>&lt;p&gt;■1211 Trapezoids&lt;/p&gt;下のような入力が与えられたとする．&lt;table cellspacing="1" cellpadding="1"&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;***&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;**********&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;*&amp;nbsp;***&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;*&amp;nbsp;*&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;*&amp;nbsp;*****&amp;nbsp;&amp;nbsp;*&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&lt;br/&gt;**********&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;************&lt;br/&gt;&lt;/tt&gt;&lt;/tr&gt;&lt;/td&gt;&lt;/table&gt;まず，四角形の内部となりえない所をある値（ここでは'-'）で埋める．&lt;br/&gt;&lt;table cellspacing="1" cellpadding="1"&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;-----------***---------&lt;br/&gt;-----------*&amp;nbsp;&amp;nbsp;*--------&lt;br/&gt;**********-*&amp;nbsp;&amp;nbsp;&amp;nbsp;*-------&lt;br/&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*-*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*------&lt;br/&gt;*&amp;nbsp;***&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*-*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*-----&lt;br/&gt;*&amp;nbsp;*&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;*-*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*----&lt;br/&gt;*&amp;nbsp;*****&amp;nbsp;&amp;nbsp;*-*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*---&lt;br/&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*-*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*--&lt;br/&gt;**********-*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*-&lt;br/&gt;-----------************&lt;br/&gt;&lt;/tt&gt;&lt;/tr&gt;&lt;/td&gt;&lt;/table&gt;(i, j)が'*'となる(i, j)をラスタスキャン．輪郭をたどり，たどった点を' 'に変更する．&lt;br/&gt;&lt;table cellspacing="1" cellpadding="1"&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;-----------***---------&lt;br/&gt;-----------*&amp;nbsp;&amp;nbsp;*--------&lt;br/&gt;-----------*&amp;nbsp;&amp;nbsp;&amp;nbsp;*-------&lt;br/&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*------&lt;br/&gt;-&amp;nbsp;***&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*-----&lt;br/&gt;-&amp;nbsp;*&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;--*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*----&lt;br/&gt;-&amp;nbsp;*****&amp;nbsp;&amp;nbsp;--*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*---&lt;br/&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*--&lt;br/&gt;-----------*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*-&lt;br/&gt;-----------************&lt;br/&gt;&lt;/tt&gt;&lt;/tr&gt;&lt;/td&gt;&lt;/table&gt;'-'のみを壁として(i, j)からBFS．この時の探索回数が領域の面積．&lt;br/&gt;(i, j)からBFSで0を'-'に塗りつぶしていく&lt;br/&gt;&lt;table cellspacing="1" cellpadding="1"&gt;&lt;tr&gt;&lt;td&gt;&lt;tt&gt;-----------***---------&lt;br/&gt;-----------*&amp;nbsp;&amp;nbsp;*--------&lt;br/&gt;-----------*&amp;nbsp;&amp;nbsp;&amp;nbsp;*-------&lt;br/&gt;-----------*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*------&lt;br/&gt;--***------*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*-----&lt;br/&gt;--*&amp;nbsp;&amp;nbsp;*-----*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*----&lt;br/&gt;--*****----*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*---&lt;br/&gt;-----------*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*--&lt;br/&gt;-----------*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*-&lt;br/&gt;-----------************&lt;br/&gt;&lt;/tt&gt;&lt;/tr&gt;&lt;/td&gt;&lt;/table&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, m;&lt;br /&gt; int[][] a;&lt;br /&gt; int c;&lt;br /&gt; boolean[] wall;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(int k=0;; k++){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   if(k&amp;gt;0){&lt;br /&gt;    println("----------");&lt;br /&gt;   }&lt;br /&gt;   sc.nextLine();&lt;br /&gt;   m=0;&lt;br /&gt;   String[] ss=new String[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    ss[i]=sc.nextLine();&lt;br /&gt;    m=max(m, ss[i].length());&lt;br /&gt;   }&lt;br /&gt;   a=new int[n][m];&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    for(int i=0; i&amp;lt;ss[j].length(); i++){&lt;br /&gt;     a[j][i]=ss[j].charAt(i)=='*'?1:0;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  c=2;&lt;br /&gt;  wall=new boolean[]{false, true, true};&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   if(a[j][0]==0){&lt;br /&gt;    bfs(0, j);&lt;br /&gt;   }&lt;br /&gt;   if(a[j][m-1]==0){&lt;br /&gt;    bfs(m-1, j);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;   if(a[0][i]==0){&lt;br /&gt;    bfs(i, 0);&lt;br /&gt;   }&lt;br /&gt;   if(a[n-1][i]==0){&lt;br /&gt;    bfs(i, n-1);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  HashMap&amp;lt;Integer, Integer&amp;gt; map=new HashMap&amp;lt;Integer, Integer&amp;gt;();&lt;br /&gt;  int[] dx={1, 1, 0, -1, -1, -1, 0, 1};&lt;br /&gt;  int[] dy={0, 1, 1, 1, 0, -1, -1, -1};&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    if(a[j][i]==1){&lt;br /&gt;     int outline=0;&lt;br /&gt;     int d=0;&lt;br /&gt;     int x=i, y=j;&lt;br /&gt;     for(;;){&lt;br /&gt;      outline++;&lt;br /&gt;      a[y][x]=0;&lt;br /&gt;      boolean f=false;&lt;br /&gt;      d=(d+5)%8;&lt;br /&gt;      for(int k=0; k&amp;lt;8; k++, d=(d+1)%8){&lt;br /&gt;       int x2=x+dx[d];&lt;br /&gt;       int y2=y+dy[d];&lt;br /&gt;       if(x2&amp;gt;=0&amp;&amp;x2&amp;lt;m&amp;&amp;y2&amp;gt;=0&amp;&amp;y2&amp;lt;n&amp;&amp;a[y2][x2]==1){&lt;br /&gt;        x=x2;&lt;br /&gt;        y=y2;&lt;br /&gt;        f=true;&lt;br /&gt;        break;&lt;br /&gt;       }&lt;br /&gt;      }&lt;br /&gt;      if(!f){&lt;br /&gt;       break;&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;     c=-1;&lt;br /&gt;     wall=new boolean[]{false, false, true};&lt;br /&gt;     int area=bfs(x, y);&lt;br /&gt;     if(!map.containsKey(area)){&lt;br /&gt;      map.put(area, 0);&lt;br /&gt;     }&lt;br /&gt;     map.put(area, map.get(area)+1);&lt;br /&gt;&lt;br /&gt;     c=2;&lt;br /&gt;     wall=new boolean[]{false, true, true};&lt;br /&gt;     bfs(x, y);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  Integer[] is=map.keySet().toArray(new Integer[0]);&lt;br /&gt;  sort(is);&lt;br /&gt;  for(int key : is){&lt;br /&gt;   println(key+" "+map.get(key));&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int bfs(int x, int y){&lt;br /&gt;  int[] dx={0, 0, -1, 1};&lt;br /&gt;  int[] dy={-1, 1, 0, 0};&lt;br /&gt;  LinkedList&amp;lt;P&amp;gt; que=new LinkedList&amp;lt;P&amp;gt;();&lt;br /&gt;  boolean[][] visited=new boolean[n][m];&lt;br /&gt;  que.add(new P(x, y));&lt;br /&gt;  visited[y][x]=true;&lt;br /&gt;  int res=0;&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   P p=que.poll();&lt;br /&gt;   if(c&amp;gt;=0){&lt;br /&gt;    a[p.y][p.x]=c;&lt;br /&gt;   }&lt;br /&gt;   res++;&lt;br /&gt;   for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;    P q=new P(p.x+dx[i], p.y+dy[i]);&lt;br /&gt;    if(q.x&amp;gt;=0&amp;&amp;q.x&amp;lt;m&amp;&amp;q.y&amp;gt;=0&amp;&amp;q.y&amp;lt;n&amp;&amp;!visited[q.y][q.x]&lt;br /&gt;      &amp;&amp;!wall[a[q.y][q.x]]){&lt;br /&gt;     que.add(q);&lt;br /&gt;     visited[q.y][q.x]=true;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return res;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P{&lt;br /&gt;  int x, y;&lt;br /&gt;&lt;br /&gt;  P(int x, int y){&lt;br /&gt;   this.x=x;&lt;br /&gt;   this.y=y;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6069830979596525849?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6069830979596525849/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6069830979596525849' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6069830979596525849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6069830979596525849'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1211-trapezoids.html' title='Aizu Online Judge 1211 Trapezoids'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8257961614917878743</id><published>2011-04-05T23:38:00.000+09:00</published><updated>2011-04-05T23:38:03.509+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1208 Rational Irrationals</title><content type='html'>&lt;p&gt;■1208 Rational Irrationals&lt;/p&gt;全探索を行うと，O(n&lt;sup&gt;2&lt;/sup&gt;)でかなりキツイ．そこで二部探索を使う．&lt;br/&gt;具体的には，分数をm/dとした時，dを1~nまで回し，√pに近くなるようなmを求める．&lt;br/&gt;探索の幅として[1,n]を設定し，m/d&amp;lt;√pを条件とすれば，&lt;br/&gt;m/d&amp;lt;√p&amp;lt;(m+1)/d&lt;br/&gt;もしくは，&lt;br/&gt;m/d&amp;lt;(m+1)/d&amp;lt;√p (ただし，m+1&amp;gt;n)&lt;br/&gt;となる．&lt;br/&gt;事実上計算量はO(n)．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int p, m;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   p=sc.nextInt();&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   if((p|m)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  long n1=0, d1=1;&lt;br /&gt;  long n2=m, d2=1;&lt;br /&gt;  for(long d=1; d&amp;lt;=m; d++){&lt;br /&gt;   double left=1, right=m;&lt;br /&gt;   for(int i=0; i&amp;lt;100; i++){&lt;br /&gt;    double mid=(left+right)/2;&lt;br /&gt;    if(mid*mid&amp;lt;p*d*d+EPS){&lt;br /&gt;     left=mid;&lt;br /&gt;    }else{&lt;br /&gt;     right=mid;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   int n=(int)(left+EPS);&lt;br /&gt;   if(n1*d&amp;lt;n*d1&amp;&amp;n*n&amp;lt;p*d*d){&lt;br /&gt;    n1=n;&lt;br /&gt;    d1=d;&lt;br /&gt;   }&lt;br /&gt;   if(++n&amp;lt;=m){&lt;br /&gt;    if(p*d*d&amp;lt;n*n&amp;&amp;n*d2&amp;lt;n2*d){&lt;br /&gt;     n2=n;&lt;br /&gt;     d2=d;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  long gcd=gcd(n1, d1);&lt;br /&gt;  n1/=gcd;&lt;br /&gt;  d1/=gcd;&lt;br /&gt;  gcd=gcd(n2, d2);&lt;br /&gt;  n2/=gcd;&lt;br /&gt;  d2/=gcd;&lt;br /&gt;  println(n2+"/"+d2+" "+n1+"/"+d1);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; long gcd(long m, long n){&lt;br /&gt;  for(; n!=0;){&lt;br /&gt;   m=m%n;&lt;br /&gt;   long t=m;&lt;br /&gt;   m=n;&lt;br /&gt;   n=t;&lt;br /&gt;  }&lt;br /&gt;  return m;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8257961614917878743?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8257961614917878743/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8257961614917878743' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8257961614917878743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8257961614917878743'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1208-rational.html' title='Aizu Online Judge 1208 Rational Irrationals'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8826838758431082409</id><published>2011-04-04T20:25:00.000+09:00</published><updated>2011-04-04T20:25:09.983+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge</title><content type='html'>&lt;p&gt;■1204 Pipeline Scheduling&lt;/p&gt;再帰を用いて実際にシミュレートする．左端から詰めていくようにして，簡単な枝刈り（現時点でのサイクル数が，暫定の最短より長い場合は中断）を付け加えれば通る．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, t, u;&lt;br /&gt; int[][] a, b;&lt;br /&gt; int ans;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  t=10;&lt;br /&gt;  u=5;&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   a=new int[u][n];&lt;br /&gt;   for(int j=0; j&amp;lt;u; j++){&lt;br /&gt;    String s=sc.next();&lt;br /&gt;    for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;     a[j][i]=s.charAt(i)=='.'?0:1;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void rec(int k, int p){&lt;br /&gt;  if(p&amp;gt;=ans){&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  if(k==t+1){&lt;br /&gt;   ans=min(ans, p+n-1);&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  for(int q=p; q&amp;lt;p+n; q++){&lt;br /&gt;   boolean f=true;&lt;br /&gt;   for(int j=0; j&amp;lt;u; j++){&lt;br /&gt;    for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;     f&amp;=a[j][i]==0||b[j][q+i]==0;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   if(f){&lt;br /&gt;    for(int j=0; j&amp;lt;u; j++){&lt;br /&gt;     for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;      if(a[j][i]==1){&lt;br /&gt;       b[j][q+i]=k;&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    rec(k+1, q+1);&lt;br /&gt;    for(int j=0; j&amp;lt;u; j++){&lt;br /&gt;     for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;      if(a[j][i]==1){&lt;br /&gt;       b[j][q+i]=0;&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  ans=INF;&lt;br /&gt;  b=new int[u][(n+1)*(t+1)];&lt;br /&gt;  rec(1, 0);&lt;br /&gt;  println(""+ans);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8826838758431082409?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8826838758431082409/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8826838758431082409' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8826838758431082409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8826838758431082409'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge.html' title='Aizu Online Judge'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-2733163718553176805</id><published>2011-04-03T14:35:00.001+09:00</published><updated>2011-04-03T14:36:17.992+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1203 Napoleon's Grumble</title><content type='html'>&lt;p&gt;■1203 Napoleon's Grumble&lt;/p&gt;回文の中心点jを0~n-1まで動かしながら，&lt;br/&gt;c&lt;sub&gt;j-i&lt;/sub&gt;,…,c&lt;sub&gt;j+i&lt;/sub&gt;&lt;br/&gt;c&lt;sub&gt;j-i&lt;/sub&gt;,…,c&lt;sub&gt;j+i+1&lt;/sub&gt;&lt;br/&gt;が回文となる最大のiを探す．&lt;br/&gt;片っ端から回文候補をリストに入れた後，冗長のものを省く．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; String s;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(; sc.hasNextLine();){&lt;br /&gt;   s=sc.nextLine();&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  s=s.toUpperCase().replaceAll("[^A-Z]", "");&lt;br /&gt;  int n=s.length();&lt;br /&gt;  TreeSet&amp;lt;String&amp;gt; set=new TreeSet&amp;lt;String&amp;gt;();&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   int i;&lt;br /&gt;   for(i=0; j-i&amp;gt;=0&amp;&amp;j+i&amp;lt;n&amp;&amp;s.charAt(j-i)==s.charAt(j+i); i++);&lt;br /&gt;   i--;&lt;br /&gt;   if(i&amp;gt;=1){&lt;br /&gt;    set.add(s.substring(j-i, j+i+1));&lt;br /&gt;   }&lt;br /&gt;   for(i=0; j-i&amp;gt;=0&amp;&amp;j+i+1&amp;lt;n&amp;&amp;s.charAt(j-i)==s.charAt(j+i+1); i++);&lt;br /&gt;   i--;&lt;br /&gt;   if(i&amp;gt;=1){&lt;br /&gt;    set.add(s.substring(j-i, j+i+2));&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(Iterator&amp;lt;String&amp;gt; i=set.iterator(); i.hasNext();){&lt;br /&gt;   String s=i.next();&lt;br /&gt;   for(Iterator&amp;lt;String&amp;gt; j=set.iterator(); j.hasNext();){&lt;br /&gt;    String t=j.next();&lt;br /&gt;    if((s.length()+t.length())%2==0&amp;&amp;t.length()&amp;gt;s.length()){&lt;br /&gt;     int k=(t.length()-s.length())/2;&lt;br /&gt;     if(t.substring(k, t.length()-k).equals(s)){&lt;br /&gt;      i.remove();&lt;br /&gt;      break;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(; !set.isEmpty();){&lt;br /&gt;   print(set.pollFirst());&lt;br /&gt;   if(!set.isEmpty()){&lt;br /&gt;    print(" ");&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println("");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-2733163718553176805?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/2733163718553176805/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=2733163718553176805' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2733163718553176805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2733163718553176805'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1203-napoleons.html' title='Aizu Online Judge 1203 Napoleon&apos;s Grumble'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6165222605652145898</id><published>2011-04-02T23:13:00.001+09:00</published><updated>2011-04-03T14:36:55.865+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 1201 Lattice Practices</title><content type='html'>&lt;p&gt;■1201 Lattice Practices&lt;/p&gt;まず，10枚の板から5枚を選び，その5枚で構成出来るパターンを全て列挙．列挙の際，反転させても変わらない板がある場合があるので，重複を考慮する必要がある．それぞれのパターンに対応するパターンを残りの5枚で構成できうるかを判定する．10個から5個選ぶ…&lt;sub&gt;10&lt;/sub&gt;P&lt;sub&gt;5&lt;/sub&gt;=30240反転の種類…2&lt;sup&gt;5&lt;/sup&gt;=32&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int[] a, rev;&lt;br /&gt; int n, m;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  n=10;&lt;br /&gt;  m=n/2;&lt;br /&gt;  a=new int[n];&lt;br /&gt;  rev=new int[1&amp;lt;&amp;lt;m];&lt;br /&gt;  for(int i=0; i&amp;lt;1&amp;lt;&amp;lt;m; i++){&lt;br /&gt;   int x=i;&lt;br /&gt;   x=(x&amp;0x55555555)&amp;lt;&amp;lt;1|(x&amp;gt;&amp;gt;1)&amp;0x55555555;&lt;br /&gt;   x=(x&amp;0x33333333)&amp;lt;&amp;lt;2|(x&amp;gt;&amp;gt;2)&amp;0x33333333;&lt;br /&gt;   x=(x&amp;0x0f0f0f0f)&amp;lt;&amp;lt;4|(x&amp;gt;&amp;gt;4)&amp;0x0f0f0f0f;&lt;br /&gt;   x=(x&amp;lt;&amp;lt;24)|((x&amp;0xff00)&amp;lt;&amp;lt;8)|((x&amp;gt;&amp;gt;8)&amp;0xff00)|(x&amp;gt;&amp;gt;24);&lt;br /&gt;   rev[i]=(int)(x&amp;gt;&amp;gt;(32-m))&amp;((1&amp;lt;&amp;lt;m)-1);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  for(;;){&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    String s=sc.next();&lt;br /&gt;    if(s.equals("END")){&lt;br /&gt;     return;&lt;br /&gt;    }&lt;br /&gt;    a[i]=Integer.parseInt(s, 2);&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int ans=0;&lt;br /&gt;  int[] b=new int[m];&lt;br /&gt;  int[] c=new int[m];&lt;br /&gt;  int comb=(1&amp;lt;&amp;lt;m)-1;&lt;br /&gt;  boolean[] used=new boolean[m];&lt;br /&gt;&lt;br /&gt;  for(; comb&amp;lt;1&amp;lt;&amp;lt;n;){&lt;br /&gt;   // 2^(反転させても同じものの個数)で割る&lt;br /&gt;   int div=1;&lt;br /&gt;   for(int i=0, j=0, k=0; k&amp;lt;10; k++){&lt;br /&gt;    if((comb&amp;gt;&amp;gt;k&amp;1)==1){&lt;br /&gt;     b[i++]=a[k];&lt;br /&gt;     if(rev[a[k]]==a[k]){&lt;br /&gt;      div*=2;&lt;br /&gt;     }&lt;br /&gt;    }else{&lt;br /&gt;     c[j++]=a[k];&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   Arrays.sort(b);&lt;br /&gt;   int sum=0;&lt;br /&gt;   for(;;){&lt;br /&gt;    // 2^n通り反転させる&lt;br /&gt;    for(int sup=0; sup&amp;lt;1&amp;lt;&amp;lt;m; sup++){&lt;br /&gt;     for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;      if((sup&amp;gt;&amp;gt;i&amp;1)==1){&lt;br /&gt;       b[i]=rev[b[i]];&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;     // bの並びをcで構築できるか&lt;br /&gt;     Arrays.fill(used, false);&lt;br /&gt;     sum++;&lt;br /&gt;     for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;      int bits=0;&lt;br /&gt;      for(int j=0; j&amp;lt;m; j++){&lt;br /&gt;       bits=(bits&amp;lt;&amp;lt;1)|(b[j]&amp;gt;&amp;gt;i&amp;1);&lt;br /&gt;      }&lt;br /&gt;      int k=-1;&lt;br /&gt;      for(int j=0; j&amp;lt;m; j++){&lt;br /&gt;       if(!used[j]&lt;br /&gt;         &amp;&amp;((c[j]^bits)==(1&amp;lt;&amp;lt;m)-1||(rev[c[j]]^bits)==(1&amp;lt;&amp;lt;m)-1)){&lt;br /&gt;        k=j;&lt;br /&gt;       }&lt;br /&gt;      }&lt;br /&gt;      if(k&amp;gt;=0){&lt;br /&gt;       used[k]=true;&lt;br /&gt;      }else{&lt;br /&gt;       sum--;&lt;br /&gt;       break;&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;     for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;      if((sup&amp;gt;&amp;gt;i&amp;1)==1){&lt;br /&gt;       b[i]=rev[b[i]];&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    if(!nextPermutation(b)){&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   ans+=sum/div;&lt;br /&gt;&lt;br /&gt;   int x=comb&amp;-comb, y=comb+x;&lt;br /&gt;   comb=((comb&amp;~y)/x&amp;gt;&amp;gt;1)|y;&lt;br /&gt;  }&lt;br /&gt;  ans/=8; // 鏡像反転*回転&lt;br /&gt;  println(""+ans);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; boolean nextPermutation(int[] is){&lt;br /&gt;  int n=is.length;&lt;br /&gt;  for(int i=n-1; i&amp;gt;0; i--){&lt;br /&gt;   if(is[i-1]&amp;lt;is[i]){&lt;br /&gt;    int j=n;&lt;br /&gt;    while(is[i-1]&amp;gt;=is[--j]);&lt;br /&gt;    swap(is, i-1, j);&lt;br /&gt;    rev(is, i, n);&lt;br /&gt;    return true;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  rev(is, 0, n);&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void swap(int[] is, int i, int j){&lt;br /&gt;  int t=is[i];&lt;br /&gt;  is[i]=is[j];&lt;br /&gt;  is[j]=t;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void rev(int[] is, int i, int j){&lt;br /&gt;  for(j--; i&amp;lt;j; i++, j--){&lt;br /&gt;   int t=is[i];&lt;br /&gt;   is[i]=is[j];&lt;br /&gt;   is[j]=t;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6165222605652145898?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6165222605652145898/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6165222605652145898' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6165222605652145898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6165222605652145898'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/04/aizu-online-judge-1201-lattice.html' title='Aizu Online Judge 1201 Lattice Practices'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8390035447081350956</id><published>2011-03-31T23:18:00.002+09:00</published><updated>2011-03-31T23:19:58.333+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>今月の〇〇(2011年3月)</title><content type='html'>&lt;p&gt;■Aizu Online Judge&lt;/p&gt;Solved:235/43th&lt;br/&gt;Rating:151.76/67th&lt;br/&gt;簡単な問題ばかり解いていたので，Ratingの順位がやや低めです．ということで来月の目標はRating200にしました．&lt;br/&gt;&lt;p&gt;■TopCoder/Codeforces&lt;/p&gt;ほとんど参加できていません．そのためレーティングも代わり映えしていません．そのため来月は，レーティングの昇降は兎も角として，出来るだけ参加することを重視しようと思います．&lt;br/&gt;&lt;p&gt;■専門書&lt;/p&gt;「計算理論の基礎」を読み進めています．5章辺りを読んでいますが，練習問題に全く手を付けていないため，そちらにも着手する必要がありそうです．また，「コンピュータの数学」は今の自分なら十分読めると判断したため，そろそろ真面目に読もうかと考えている次第です．&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8390035447081350956?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8390035447081350956/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8390035447081350956' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8390035447081350956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8390035447081350956'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/20114.html' title='今月の〇〇(2011年3月)'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-5720138472580577624</id><published>2011-03-25T00:13:00.000+09:00</published><updated>2011-03-25T00:13:02.482+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0125 Day Count</title><content type='html'>&lt;p&gt;■0125 Day Count&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);;&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   int y1=sc.nextInt();&lt;br /&gt;   int m1=sc.nextInt();&lt;br /&gt;   int d1=sc.nextInt();&lt;br /&gt;   int y2=sc.nextInt();&lt;br /&gt;   int m2=sc.nextInt();&lt;br /&gt;   int d2=sc.nextInt();&lt;br /&gt;   if(y1&amp;lt;0||m1&amp;lt;0||d1&amp;lt;0||y2&amp;lt;0||m2&amp;lt;0||d2&amp;lt;0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   int a=day(y1, m1, d1);&lt;br /&gt;   int b=day(y2, m2, d2);&lt;br /&gt;   println((b-a)+"");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int day(int y, int m, int d){&lt;br /&gt;  int res=0;&lt;br /&gt;  int[] days={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};&lt;br /&gt;  for(int i=0; i&amp;lt;m-1; i++){&lt;br /&gt;   res+=days[i];&lt;br /&gt;  }&lt;br /&gt;  res+=y*365+d-1;&lt;br /&gt;  if((m==2&amp;&amp;d&amp;lt;=28)||m==1){&lt;br /&gt;   y--;&lt;br /&gt;  }&lt;br /&gt;  if(y&amp;gt;=0){&lt;br /&gt;   res+=y/4+1;&lt;br /&gt;   res-=y/100+1;&lt;br /&gt;   res+=y/400+1;&lt;br /&gt;  }&lt;br /&gt;  return res;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-5720138472580577624?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/5720138472580577624/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=5720138472580577624' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5720138472580577624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5720138472580577624'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0125-day-count.html' title='Aizu Online Judge 0125 Day Count'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-9165011247879918395</id><published>2011-03-25T00:12:00.001+09:00</published><updated>2011-03-25T00:14:26.282+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0121 Seven Puzzle</title><content type='html'>&lt;p&gt;■0121 Seven Puzzle&lt;/p&gt;&lt;pre&gt;先に，全てのパターンについて最小ステップ数を計算しておく．BFSで可能．&lt;/pre&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; HashMap&amp;lt;Integer, Integer&amp;gt; map;&lt;br /&gt; int[] a;&lt;br /&gt; int w=4, h=2;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  a=new int[w*h];&lt;br /&gt;  init();&lt;br /&gt;  for(; sc.hasNext();){&lt;br /&gt;   for(int i=0; i&amp;lt;w*h; i++){&lt;br /&gt;    a[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   println(""+map.get(id(a)));&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void init(){&lt;br /&gt;&lt;br /&gt;  LinkedList&amp;lt;S&amp;gt; que=new LinkedList&amp;lt;S&amp;gt;();&lt;br /&gt;  map=new HashMap&amp;lt;Integer, Integer&amp;gt;();&lt;br /&gt;&lt;br /&gt;  que.offer(new S(0, 0, new int[]{0, 1, 2, 3, 4, 5, 6, 7}));&lt;br /&gt;  map.put(id(que.peek().a), 0);&lt;br /&gt;  int[] dx={0, 0, -1, 1};&lt;br /&gt;  int[] dy={-1, 1, 0, 0};&lt;br /&gt;&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   S s=que.poll();&lt;br /&gt;   int p=s.y*w+s.x;&lt;br /&gt;   for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;    int x2=s.x+dx[i];&lt;br /&gt;    int y2=s.y+dy[i];&lt;br /&gt;    int p2=y2*w+x2;&lt;br /&gt;    if(x2&amp;gt;=0&amp;&amp;x2&amp;lt;w&amp;&amp;y2&amp;gt;=0&amp;&amp;y2&amp;lt;h){&lt;br /&gt;     int[] a2=s.a.clone();&lt;br /&gt;     int t=a2[p];&lt;br /&gt;     a2[p]=a2[p2];&lt;br /&gt;     a2[p2]=t;&lt;br /&gt;     S s2=new S(x2, y2, a2);&lt;br /&gt;     if(!map.containsKey(id(s2.a))){&lt;br /&gt;      que.offer(s2);&lt;br /&gt;      map.put(id(s2.a), map.get(id(s.a))+1);&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int id(int[] a){&lt;br /&gt;  int res=0;&lt;br /&gt;  for(int e : a){&lt;br /&gt;   res=res*10+e;&lt;br /&gt;  }&lt;br /&gt;  return res;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class S{&lt;br /&gt;  int x, y;&lt;br /&gt;  int[] a;&lt;br /&gt;&lt;br /&gt;  S(int x, int y, int[] a){&lt;br /&gt;   this.x=x;&lt;br /&gt;   this.y=y;&lt;br /&gt;   this.a=a;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-9165011247879918395?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/9165011247879918395/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=9165011247879918395' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/9165011247879918395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/9165011247879918395'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0121-seven-puzzle.html' title='Aizu Online Judge 0121 Seven Puzzle'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-5757901289754463540</id><published>2011-03-25T00:11:00.000+09:00</published><updated>2011-03-25T00:11:41.509+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0120 Patisserie</title><content type='html'>&lt;p&gt;■0120 Patisserie&lt;/p&gt;r&lt;sub&gt;1&lt;/sub&gt;のロールケーキにr&lt;sub&gt;2&lt;/sub&gt;のロールケーキを並べると，&lt;br/&gt;長さが2√(r&lt;sub&gt;1&lt;/sub&gt;r&lt;sub&gt;2&lt;/sub&gt;)-r&lt;sub&gt;1&lt;/sub&gt;+r&lt;sub&gt;2&lt;/sub&gt;だけ増える．&lt;br/&gt;dp[k][S]=右端がロールケーキk，集合Sのロールケーキを既に並べたとしたときの最小の長さ&lt;br/&gt;としてDP．計算量はO(2&lt;sup&gt;n&lt;/sup&gt;n&lt;sup&gt;2&lt;/sup&gt;)．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int len, n;&lt;br /&gt; int[] a;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;sc.hasNext();){&lt;br /&gt;   String[] ss=sc.nextLine().split(" ");&lt;br /&gt;   len=Integer.parseInt(ss[0]);&lt;br /&gt;   n=ss.length-1;&lt;br /&gt;   a=new int[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    a[i]=Integer.parseInt(ss[i+1]);&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  double[][] dp=new double[1&amp;lt;&amp;lt;n][n];&lt;br /&gt;  for(int j=0; j&amp;lt;1&amp;lt;&amp;lt;n; j++){&lt;br /&gt;   fill(dp[j], INF);&lt;br /&gt;  }&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   dp[1&amp;lt;&amp;lt;i][i]=2*a[i];&lt;br /&gt;  }&lt;br /&gt;  for(int s=1; s&amp;lt;1&amp;lt;&amp;lt;n; s++){&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    if((s&amp;gt;&amp;gt;j&amp;1)==0){&lt;br /&gt;     continue;&lt;br /&gt;    }&lt;br /&gt;    for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;     if((s&amp;gt;&amp;gt;i&amp;1)==0){&lt;br /&gt;      dp[s|1&amp;lt;&amp;lt;i][i]=min(dp[s|1&amp;lt;&amp;lt;i][i],&lt;br /&gt;        dp[s][j]+2*sqrt(a[j]*a[i])-a[j]+a[i]);&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  double min=INF;&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   min=min(min, dp[(1&amp;lt;&amp;lt;n)-1][i]);&lt;br /&gt;  }&lt;br /&gt;  println(min&amp;lt;len+EPS?"OK":"NA");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-5757901289754463540?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/5757901289754463540/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=5757901289754463540' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5757901289754463540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5757901289754463540'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0120-patisserie.html' title='Aizu Online Judge 0120 Patisserie'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-4164069022098749190</id><published>2011-03-25T00:10:00.000+09:00</published><updated>2011-03-25T00:10:03.965+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0514 Quality Checking</title><content type='html'>&lt;p&gt;■0514 Quality Checking&lt;/p&gt;&lt;pre&gt;合格&lt;/pre&gt;&lt;pre&gt;→3つ共正常&lt;/pre&gt;&lt;pre&gt;失敗&lt;/pre&gt;&lt;pre&gt;→2つが正常なら残り1つが失敗&lt;/pre&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   int na, nb, nc;&lt;br /&gt;   na=sc.nextInt();&lt;br /&gt;   nb=sc.nextInt();&lt;br /&gt;   nc=sc.nextInt();&lt;br /&gt;   if((na|nb|nc)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   int n=sc.nextInt();&lt;br /&gt;   int[] as=new int[na];&lt;br /&gt;   int[] bs=new int[nb];&lt;br /&gt;   int[] cs=new int[nc];&lt;br /&gt;   Arrays.fill(as, 2);&lt;br /&gt;   Arrays.fill(bs, 2);&lt;br /&gt;   Arrays.fill(cs, 2);&lt;br /&gt;&lt;br /&gt;   R[] rs=new R[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    int a=sc.nextInt()-1;&lt;br /&gt;    int b=sc.nextInt()-na-1;&lt;br /&gt;    int c=sc.nextInt()-na-nb-1;&lt;br /&gt;    int r=sc.nextInt();&lt;br /&gt;    rs[i]=new R(a, b, c, r);&lt;br /&gt;    if(r==1){&lt;br /&gt;     as[a]=1;&lt;br /&gt;     bs[b]=1;&lt;br /&gt;     cs[c]=1;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    if(rs[i].r==0){&lt;br /&gt;     int a=as[rs[i].a];&lt;br /&gt;     int b=bs[rs[i].b];&lt;br /&gt;     int c=cs[rs[i].c];&lt;br /&gt;     if(a==1&amp;&amp;b==1){&lt;br /&gt;      c=0;&lt;br /&gt;     }else if(b==1&amp;&amp;c==1){&lt;br /&gt;      a=0;&lt;br /&gt;     }else if(c==1&amp;&amp;a==1){&lt;br /&gt;      b=0;&lt;br /&gt;     }&lt;br /&gt;     as[rs[i].a]=a;&lt;br /&gt;     bs[rs[i].b]=b;&lt;br /&gt;     cs[rs[i].c]=c;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;na; i++){&lt;br /&gt;    println(as[i]+"");&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;nb; i++){&lt;br /&gt;    println(bs[i]+"");&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;nc; i++){&lt;br /&gt;    println(cs[i]+"");&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class R{&lt;br /&gt;  int a, b, c, r;&lt;br /&gt;&lt;br /&gt;  R(int a, int b, int c, int r){&lt;br /&gt;   this.a=a;&lt;br /&gt;   this.b=b;&lt;br /&gt;   this.c=c;&lt;br /&gt;   this.r=r;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-4164069022098749190?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/4164069022098749190/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=4164069022098749190' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4164069022098749190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4164069022098749190'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0514-quality-checking.html' title='Aizu Online Judge 0514 Quality Checking'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6752463127453752669</id><published>2011-03-25T00:07:00.001+09:00</published><updated>2011-03-25T00:08:11.929+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0231 Dangerous Bridge</title><content type='html'>&lt;p&gt;■0231 Dangerous Bridge&lt;/p&gt;&lt;pre&gt;時刻aと時刻b-1について調べるだけ．&lt;/pre&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; int[] m, a, b;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   m=new int[n];&lt;br /&gt;   a=new int[n];&lt;br /&gt;   b=new int[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    m[i]=sc.nextInt();&lt;br /&gt;    a[i]=sc.nextInt();&lt;br /&gt;    b[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   int sum1=0, sum2=0;&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    if(a[i]&amp;lt;=a[j]&amp;&amp;a[j]&amp;lt;b[i]){&lt;br /&gt;     sum1+=m[i];&lt;br /&gt;    }&lt;br /&gt;    if(a[i]&amp;lt;=b[j]-1&amp;&amp;b[j]-1&amp;lt;b[i]){&lt;br /&gt;     sum2+=m[i];&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   if(sum1&amp;gt;150||sum2&amp;gt;150){&lt;br /&gt;    println("NG");&lt;br /&gt;    return;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println("OK");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6752463127453752669?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6752463127453752669/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6752463127453752669' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6752463127453752669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6752463127453752669'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0231.html' title='Aizu Online Judge 0231 Dangerous Bridge'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-2081782355100010382</id><published>2011-03-08T16:12:00.001+09:00</published><updated>2011-03-08T16:39:30.422+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Codeforces'/><title type='text'>Codeforces Round #61 (Div. 2)</title><content type='html'>&lt;p&gt;コンテストが随分ご無沙汰だったので参加してきました．&lt;/p&gt;&lt;p&gt;Codeforces Round #61 (Div. 2)&lt;/p&gt;&lt;p&gt;A. Petya and Java&lt;/p&gt;面倒だったので，BigIntegerを使って読み込み．実は，入力は必ず正の数なので，負の方向へのチェックは必要ありませんでした…．&lt;/br&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class A{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  BigInteger b=sc.nextBigInteger();&lt;br /&gt;  long[] s={-128, -32768, -2147483648, -9223372036854775808L};&lt;br /&gt;  long[] e={127, 32767, 2147483647, 9223372036854775807L};&lt;br /&gt;  String[] ss={"byte", "short", "int", "long"};&lt;br /&gt;  for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;   if(b.compareTo(new BigInteger(s[i]+""))&amp;gt;=0&lt;br /&gt;     &amp;&amp;b.compareTo(new BigInteger(e[i]+""))&amp;lt;=0){&lt;br /&gt;    println(ss[i]);&lt;br /&gt;    return;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println("BigInteger");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  new A().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;B. Petya and Countryside&lt;/p&gt;全探索すればOK．&lt;/br&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class B{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; int[] a;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  n=sc.nextInt();&lt;br /&gt;  a=new int[n];&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   a[i]=sc.nextInt();&lt;br /&gt;  }&lt;br /&gt;  int max=0;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   int s=1;&lt;br /&gt;   for(int i=j-1; i&amp;gt;=0; i--){&lt;br /&gt;    if(a[i]&amp;lt;=a[i+1]){&lt;br /&gt;     s++;&lt;br /&gt;    }else{&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   for(int i=j+1; i&amp;lt;n; i++){&lt;br /&gt;    if(a[i-1]&amp;gt;=a[i]){&lt;br /&gt;     s++;&lt;br /&gt;    }else{&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   max=max(max, s);&lt;br /&gt;  }&lt;br /&gt;  println(max+"");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  new B().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;C. Petya and File System&lt;p/&gt;書けば通ると思いましたが，落ちてしまいました．&lt;/br&gt;&lt;p&gt;D. Petya and His Friends&lt;/p&gt;私が考えたのは以下のやり方．&lt;/br&gt;&lt;table border="1" cellpadding="3"&gt;&lt;tr&gt;&lt;td&gt;a&lt;sub&gt;1&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;a&lt;sub&gt;2&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;a&lt;sub&gt;3&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;a&lt;sub&gt;4&lt;/sub&gt;&lt;/td&gt;&lt;td&gt;…&lt;/td&gt;&lt;td&gt;a&lt;sub&gt;n&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;…&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;…&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;…&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;…&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/br&gt;これを縦に掛けたものがそれぞれ答え．&lt;/br&gt;&lt;/br&gt;実際には，6, 10, 15, 15*2, 15*3, …で十分だったようです．&lt;/br&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class D{&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  int n=sc.nextInt();&lt;br /&gt;  if(n==2){&lt;br /&gt;   println("-1");&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  BigInteger[] bis=new BigInteger[n];&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   bis[i]=BigInteger.ONE;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  int max=1000;&lt;br /&gt;  int p=0;&lt;br /&gt;  int[] prime=new int[max];&lt;br /&gt;  boolean[] isPrime=new boolean[max+1];&lt;br /&gt;  Arrays.fill(isPrime, true);&lt;br /&gt;  isPrime[0]=isPrime[1]=false;&lt;br /&gt;  for(int i=2; i&amp;lt;=max; i++){&lt;br /&gt;   if(isPrime[i]){&lt;br /&gt;    prime[p++]=i;&lt;br /&gt;    for(int j=2*i; j&amp;lt;=max; j+=i){&lt;br /&gt;     isPrime[j]=false;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   BigInteger bi=new BigInteger(prime[j]+"");&lt;br /&gt;   for(int i=0; i&amp;lt;n-1; i++){&lt;br /&gt;    bis[(j+i)%n]=bis[(j+i)%n].multiply(bi);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   if(bis[i].toString().length()&amp;gt;100){&lt;br /&gt;    println("-1");&lt;br /&gt;    return;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   println(bis[i]+"");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  new D().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;ooxo- 3226p 68位&lt;br/&gt;1506 -&gt; 1694&lt;br/&gt;紫コーダーになりました．&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-2081782355100010382?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/2081782355100010382/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=2081782355100010382' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2081782355100010382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2081782355100010382'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/codeforces-round-61-div-2.html' title='Codeforces Round #61 (Div. 2)'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-1277746595146601834</id><published>2011-03-07T01:06:00.000+09:00</published><updated>2011-03-07T01:06:14.756+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0212 Highway Express Bus</title><content type='html'>&lt;p&gt;■0212 Highway Express Bus&lt;/p&gt;&lt;p&gt;拡張Dijkstra．ノードを(今いる町, 残りチケット枚数)とする．後は次状態に遷移する際に，チケットを使った場合と使わなかった場合で更新．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int c, n, m, s, g;&lt;br /&gt; LinkedList&amp;lt;E&amp;gt;[] es;&lt;br /&gt;&lt;br /&gt; @SuppressWarnings("unchecked")&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   c=sc.nextInt();&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   s=sc.nextInt()-1;&lt;br /&gt;   g=sc.nextInt()-1;&lt;br /&gt;   if((c|n|m|(s+1)|(g+1))==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   es=new LinkedList[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    es[i]=new LinkedList&amp;lt;E&amp;gt;();&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    int u=sc.nextInt()-1;&lt;br /&gt;    int v=sc.nextInt()-1;&lt;br /&gt;    int w=sc.nextInt()/10;&lt;br /&gt;    es[u].add(new E(v, w));&lt;br /&gt;    es[v].add(new E(u, w));&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int[][] d=new int[n][c+1];&lt;br /&gt;  PriorityQueue&amp;lt;P&amp;gt; que=new PriorityQueue&amp;lt;P&amp;gt;();&lt;br /&gt;&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   Arrays.fill(d[i], INF);&lt;br /&gt;  }&lt;br /&gt;  d[s][c]=0;&lt;br /&gt;  que.offer(new P(s, c, 0));&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   P p=que.poll();&lt;br /&gt;   if(d[p.v][p.c]&amp;lt;p.d){&lt;br /&gt;    continue;&lt;br /&gt;   }&lt;br /&gt;   for(E e : es[p.v]){&lt;br /&gt;    if(d[e.to][p.c]&amp;gt;d[p.v][p.c]+e.cost){&lt;br /&gt;     d[e.to][p.c]=d[p.v][p.c]+e.cost;&lt;br /&gt;     que.offer(new P(e.to, p.c, d[e.to][p.c]));&lt;br /&gt;    }&lt;br /&gt;    if(p.c&amp;gt;0&amp;&amp;d[e.to][p.c-1]&amp;gt;d[p.v][p.c]+e.cost/2){&lt;br /&gt;     d[e.to][p.c-1]=d[p.v][p.c]+e.cost/2;&lt;br /&gt;     que.offer(new P(e.to, p.c-1, d[e.to][p.c-1]));&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  int min=INF;&lt;br /&gt;  for(int i=0; i&amp;lt;=c; i++){&lt;br /&gt;   min=min(min, d[g][i]);&lt;br /&gt;  }&lt;br /&gt;  min*=10;&lt;br /&gt;  println(""+min);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class E{&lt;br /&gt;  int to, cost;&lt;br /&gt;&lt;br /&gt;  E(int to, int cost){&lt;br /&gt;   this.to=to;&lt;br /&gt;   this.cost=cost;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P implements Comparable&amp;lt;P&amp;gt;{&lt;br /&gt;  int v, c, d;&lt;br /&gt;&lt;br /&gt;  P(int v, int c, int d){&lt;br /&gt;   this.v=v;&lt;br /&gt;   this.c=c;&lt;br /&gt;   this.d=d;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(P p){&lt;br /&gt;   return d-p.d;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-1277746595146601834?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/1277746595146601834/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=1277746595146601834' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1277746595146601834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1277746595146601834'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0212-highway-express.html' title='Aizu Online Judge 0212 Highway Express Bus'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-3404617841755444604</id><published>2011-03-07T01:04:00.000+09:00</published><updated>2011-03-07T01:04:55.535+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0209 Scene in a Picture</title><content type='html'>&lt;p&gt;■0209 Scene in a Picture&lt;/p&gt;&lt;p&gt;全探索．&lt;/p&gt;&lt;p&gt;計算量はO(m&lt;sup&gt;2&lt;/sup&gt;n&lt;sup&gt;2&lt;/sup&gt;)だが，100&lt;sup&gt;2&lt;/sup&gt;50&lt;sup&gt;2&lt;/sup&gt;=2.5*10&lt;sup&gt;7&lt;/sup&gt;なので余裕．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int m, n;&lt;br /&gt; int[][] a, b;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if((m|n)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   a=new int[m][m];&lt;br /&gt;   b=new int[n][n];&lt;br /&gt;   for(int j=0; j&amp;lt;m; j++){&lt;br /&gt;    for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;     a[j][i]=sc.nextInt();&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;     b[j][i]=sc.nextInt();&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int[][][] c=new int[4][n][n];&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    c[0][j][i]=b[j][i];&lt;br /&gt;    c[1][i][n-1-j]=b[j][i];&lt;br /&gt;    c[2][n-1-j][n-1-i]=b[j][i];&lt;br /&gt;    c[3][n-1-i][j]=b[j][i];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  int p=m*m;&lt;br /&gt;  for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;   p=min(p, match(c[i]));&lt;br /&gt;  }&lt;br /&gt;  if(p==m*m){&lt;br /&gt;   println("NA");&lt;br /&gt;  }else{&lt;br /&gt;   println((p%m+1)+" "+(p/m+1));&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int match(int[][] c){&lt;br /&gt;  for(int y=0; y+n&amp;lt;=m; y++){&lt;br /&gt;   for(int x=0; x+n&amp;lt;=m; x++){&lt;br /&gt;    boolean f=true;&lt;br /&gt;    for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;     for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;      f&amp;=c[j][i]==-1||c[j][i]==a[y+j][x+i];&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    if(f){&lt;br /&gt;     for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;      for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;       if(c[j][i]!=-1){&lt;br /&gt;        return (y+j)*m+(x+i);&lt;br /&gt;       }&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return m*m;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-3404617841755444604?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/3404617841755444604/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=3404617841755444604' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3404617841755444604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3404617841755444604'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0209-scene-in-picture.html' title='Aizu Online Judge 0209 Scene in a Picture'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-5259097003794870459</id><published>2011-03-07T01:03:00.001+09:00</published><updated>2011-03-07T01:03:58.124+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0207 Block</title><content type='html'>&lt;p&gt;■0207 Block&lt;/p&gt;&lt;p&gt;(xs,ys)から同じ色を持つブロックについてBFS．(xg,yg)が訪問済みであればOK．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int w, h;&lt;br /&gt; int sx, sy;&lt;br /&gt; int gx, gy;&lt;br /&gt; int[][] a;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   w=sc.nextInt();&lt;br /&gt;   h=sc.nextInt();&lt;br /&gt;   if((w|h)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   sx=sc.nextInt()-1;&lt;br /&gt;   sy=sc.nextInt()-1;&lt;br /&gt;   gx=sc.nextInt()-1;&lt;br /&gt;   gy=sc.nextInt()-1;&lt;br /&gt;   int n=sc.nextInt();&lt;br /&gt;   a=new int[h][w];&lt;br /&gt;   for(int k=0; k&amp;lt;n; k++){&lt;br /&gt;    int c=sc.nextInt();&lt;br /&gt;    int d=sc.nextInt();&lt;br /&gt;    int x=sc.nextInt()-1;&lt;br /&gt;    int y=sc.nextInt()-1;&lt;br /&gt;    for(int j=0; j&amp;lt;2; j++){&lt;br /&gt;     for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;      if(d==0){&lt;br /&gt;       a[y+j][x+i]=c;&lt;br /&gt;      }else{&lt;br /&gt;       a[y+i][x+j]=c;&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  LinkedList&amp;lt;P&amp;gt; que=new LinkedList&amp;lt;P&amp;gt;();&lt;br /&gt;  boolean[][] visited=new boolean[h][w];&lt;br /&gt;&lt;br /&gt;  int[] dx={0, 0, -1, 1};&lt;br /&gt;  int[] dy={-1, 1, 0, 0};&lt;br /&gt;&lt;br /&gt;  que.offer(new P(sx, sy));&lt;br /&gt;  visited[sy][sx]=true;&lt;br /&gt;&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   P p=que.poll();&lt;br /&gt;   for(int i=0; i&amp;lt;4; i++){&lt;br /&gt;    P q=new P(p.x+dx[i], p.y+dy[i]);&lt;br /&gt;    if(q.x&amp;gt;=0&amp;&amp;q.x&amp;lt;w&amp;&amp;q.y&amp;gt;=0&amp;&amp;q.y&amp;lt;h&amp;&amp;a[q.y][q.x]==a[sy][sx]&lt;br /&gt;      &amp;&amp;!visited[q.y][q.x]){&lt;br /&gt;     que.offer(q);&lt;br /&gt;     visited[q.y][q.x]=true;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println(visited[gy][gx]?"OK":"NG");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P{&lt;br /&gt;  int x, y;&lt;br /&gt;&lt;br /&gt;  P(int x, int y){&lt;br /&gt;   this.x=x;&lt;br /&gt;   this.y=y;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-5259097003794870459?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/5259097003794870459/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=5259097003794870459' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5259097003794870459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5259097003794870459'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0207-block.html' title='Aizu Online Judge 0207 Block'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-9038903190009182858</id><published>2011-03-07T01:03:00.000+09:00</published><updated>2011-03-07T01:03:08.118+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0203 A New Plan of Aizu Ski Resort</title><content type='html'>&lt;p&gt;■0203 A New Plan of Aizu Ski Resort&lt;/p&gt;dp[j][i]=(i,j)に到達するまでの滑り方のパターン数&lt;br/&gt;としてDP．&lt;br/&gt;dp[0][i]=&lt;br/&gt;0 - (i,0)に障害物がある&lt;br/&gt;1 - (i,0)に障害物がない&lt;br/&gt;あとは，説明通りに更新していく．dp[n]まで用意しておいて，dp[n-1]とdp[n]の総和が答え．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int m, n;&lt;br /&gt; int[][] a;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if((m|n)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   a=new int[n][m];&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;     a[j][i]=sc.nextInt();&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  long[][] dp=new long[n+1][m];&lt;br /&gt;  for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;   if(a[0][i]==0){&lt;br /&gt;    dp[0][i]=1;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(int j=0; j&amp;lt;n-1; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    switch(a[j][i]){&lt;br /&gt;    case 0:&lt;br /&gt;     if(i-1&amp;gt;=0&amp;&amp;a[j+1][i-1]==0)&lt;br /&gt;      dp[j+1][i-1]+=dp[j][i];&lt;br /&gt;     if(a[j+1][i]!=1)&lt;br /&gt;      dp[j+1][i]+=dp[j][i];&lt;br /&gt;     if(i+1&amp;lt;m&amp;&amp;a[j+1][i+1]==0)&lt;br /&gt;      dp[j+1][i+1]+=dp[j][i];&lt;br /&gt;     break;&lt;br /&gt;    case 2:&lt;br /&gt;     if(j&amp;gt;=n-2||a[j+2][i]!=1)&lt;br /&gt;      dp[j+2][i]+=dp[j][i];&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  long ans=0;&lt;br /&gt;  for(int j=n-1; j&amp;lt;n+1; j++){&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    ans+=dp[j][i];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println(ans+"");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-9038903190009182858?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/9038903190009182858/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=9038903190009182858' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/9038903190009182858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/9038903190009182858'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0203-new-plan-of-aizu.html' title='Aizu Online Judge 0203 A New Plan of Aizu Ski Resort'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-1271559704653368905</id><published>2011-03-05T00:14:00.002+09:00</published><updated>2011-03-05T00:14:58.388+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0202 At Boss's Expense</title><content type='html'>&lt;p&gt;■0202 At Boss's Expense&lt;/p&gt;&lt;p&gt;可能な合計金額と，素数全列挙．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, x;&lt;br /&gt; int[] a;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   x=sc.nextInt();&lt;br /&gt;   if((n|x)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   a=new int[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    a[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int max=1000000;&lt;br /&gt;  int p=0;&lt;br /&gt;  int[] prime=new int[max];&lt;br /&gt;  boolean[] isPrime=new boolean[max+1];&lt;br /&gt;  Arrays.fill(isPrime, true);&lt;br /&gt;  isPrime[0]=isPrime[1]=false;&lt;br /&gt;  for(int i=2; i&amp;lt;=max; i++){&lt;br /&gt;   if(isPrime[i]){&lt;br /&gt;    prime[p++]=i;&lt;br /&gt;    for(int j=2*i; j&amp;lt;=max; j+=i){&lt;br /&gt;     isPrime[j]=false;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  boolean[] dp=new boolean[max+1];&lt;br /&gt;  dp[0]=true;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   for(int i=a[j]; i&amp;lt;=max; i++){&lt;br /&gt;    dp[i]|=dp[i-a[j]];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  int ans=0;&lt;br /&gt;  for(int i=2; i&amp;lt;=x; i++){&lt;br /&gt;   if(dp[i]&amp;&amp;isPrime[i]){&lt;br /&gt;    ans=i;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  if(ans&amp;gt;0){&lt;br /&gt;   println(ans+"");&lt;br /&gt;  }else{&lt;br /&gt;   println("NA");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-1271559704653368905?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/1271559704653368905/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=1271559704653368905' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1271559704653368905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1271559704653368905'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0202-at-bosss-expense.html' title='Aizu Online Judge 0202 At Boss&apos;s Expense'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-3780631725785511872</id><published>2011-03-05T00:14:00.001+09:00</published><updated>2011-03-05T00:14:55.969+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0201 Wrought Gold Master</title><content type='html'>&lt;p&gt;■0201 Wrought Gold Master&lt;/p&gt;&lt;p&gt;DFS．あるアイテムについてそれ自身を買う，あるいはレシピを用いて錬金するという両手法を試し，最小を返す．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, m;&lt;br /&gt; HashMap&amp;lt;String, Integer&amp;gt; val;&lt;br /&gt; HashMap&amp;lt;String, LinkedList&amp;lt;String&amp;gt;&amp;gt; recipe;&lt;br /&gt; String item;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   val=new HashMap&amp;lt;String, Integer&amp;gt;();&lt;br /&gt;   recipe=new HashMap&amp;lt;String, LinkedList&amp;lt;String&amp;gt;&amp;gt;();&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    String s=sc.next();&lt;br /&gt;    int d=sc.nextInt();&lt;br /&gt;    val.put(s, d);&lt;br /&gt;   }&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   for(int j=0; j&amp;lt;m; j++){&lt;br /&gt;    String s=sc.next();&lt;br /&gt;    int k=sc.nextInt();&lt;br /&gt;    LinkedList&amp;lt;String&amp;gt; list=new LinkedList&amp;lt;String&amp;gt;();&lt;br /&gt;    for(int i=0; i&amp;lt;k; i++){&lt;br /&gt;     String t=sc.next();&lt;br /&gt;     list.add(t);&lt;br /&gt;    }&lt;br /&gt;    recipe.put(s, list);&lt;br /&gt;   }&lt;br /&gt;   item=sc.next();&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  println(dfs(item)+"");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int dfs(String s){&lt;br /&gt;  int res=INF;&lt;br /&gt;  if(val.containsKey(s)){&lt;br /&gt;   res=min(res, val.get(s));&lt;br /&gt;  }&lt;br /&gt;  if(recipe.containsKey(s)){&lt;br /&gt;   int sum=0;&lt;br /&gt;   for(String t : recipe.get(s)){&lt;br /&gt;    sum+=dfs(t);&lt;br /&gt;   }&lt;br /&gt;   res=min(res, sum);&lt;br /&gt;  }&lt;br /&gt;  return res;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-3780631725785511872?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/3780631725785511872/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=3780631725785511872' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3780631725785511872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3780631725785511872'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0201-wrought-gold.html' title='Aizu Online Judge 0201 Wrought Gold Master'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-2356695787053265491</id><published>2011-03-05T00:14:00.000+09:00</published><updated>2011-03-05T00:14:51.816+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0200 Traveling Alone: One-way Ticket of Youth</title><content type='html'>&lt;p&gt;■0200 Traveling Alone: One-way Ticket of Youth&lt;/p&gt;&lt;p&gt;Warshall-Floyd．O(n&lt;sup&gt;3&lt;/sup&gt;)でn=300なので，多分間に合うだろうという魂胆．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int[][] cost, time;&lt;br /&gt; int n, m, k;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   if((n|m)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   cost=new int[m][m];&lt;br /&gt;   time=new int[m][m];&lt;br /&gt;   for(int j=0; j&amp;lt;m; j++){&lt;br /&gt;    fill(cost[j], INF);&lt;br /&gt;    fill(time[j], INF);&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    int a=sc.nextInt()-1;&lt;br /&gt;    int b=sc.nextInt()-1;&lt;br /&gt;    int c=sc.nextInt();&lt;br /&gt;    int t=sc.nextInt();&lt;br /&gt;    cost[a][b]=cost[b][a]=c;&lt;br /&gt;    time[a][b]=time[b][a]=t;&lt;br /&gt;   }&lt;br /&gt;   for(int k=0; k&amp;lt;m; k++){&lt;br /&gt;    for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;     for(int j=0; j&amp;lt;m; j++){&lt;br /&gt;      cost[i][j]=min(cost[i][j], cost[i][k]+cost[k][j]);&lt;br /&gt;      time[i][j]=min(time[i][j], time[i][k]+time[k][j]);&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   k=sc.nextInt();&lt;br /&gt;   for(int i=0; i&amp;lt;k; i++){&lt;br /&gt;    int p=sc.nextInt()-1;&lt;br /&gt;    int q=sc.nextInt()-1;&lt;br /&gt;    int r=sc.nextInt();&lt;br /&gt;    if(r==0){&lt;br /&gt;     println(cost[p][q]+"");&lt;br /&gt;    }else{&lt;br /&gt;     println(time[p][q]+"");&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-2356695787053265491?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/2356695787053265491/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=2356695787053265491' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2356695787053265491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/2356695787053265491'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0200-traveling-alone.html' title='Aizu Online Judge 0200 Traveling Alone: One-way Ticket of Youth'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-381644161130555653</id><published>2011-03-04T00:02:00.003+09:00</published><updated>2011-03-04T00:02:44.735+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0197 Greatest Common Divisor: Euclidean Algorithm</title><content type='html'>&lt;p&gt;■0197 Greatest Common Divisor: Euclidean Algorithm&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   int x=sc.nextInt();&lt;br /&gt;   int y=sc.nextInt();&lt;br /&gt;   if((x|y)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   if(x&amp;lt;y){&lt;br /&gt;    int t=x;&lt;br /&gt;    x=y;&lt;br /&gt;    y=t;&lt;br /&gt;   }&lt;br /&gt;   for(int i=0;; i++){&lt;br /&gt;    if(y==0){&lt;br /&gt;     println(x+" "+i);&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;    x=x%y;&lt;br /&gt;    int t=x;&lt;br /&gt;    x=y;&lt;br /&gt;    y=t;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-381644161130555653?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/381644161130555653/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=381644161130555653' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/381644161130555653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/381644161130555653'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0197-greatest-common.html' title='Aizu Online Judge 0197 Greatest Common Divisor: Euclidean Algorithm'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-7420158461351627630</id><published>2011-03-04T00:02:00.002+09:00</published><updated>2011-03-04T00:02:42.111+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0196 Baseball Championship</title><content type='html'>&lt;p&gt;■0196 Baseball Championship&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   int n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   R[] rs=new R[n];&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    rs[j]=new R();&lt;br /&gt;    rs[j].name=sc.next();&lt;br /&gt;    for(int i=0; i&amp;lt;n-1; i++){&lt;br /&gt;     switch(sc.nextInt()){&lt;br /&gt;     case 0:&lt;br /&gt;      rs[j].win--;&lt;br /&gt;      break;&lt;br /&gt;     case 1:&lt;br /&gt;      rs[j].lose++;&lt;br /&gt;      break;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   Arrays.sort(rs);&lt;br /&gt;   for(R r : rs){&lt;br /&gt;    println(r.name);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class R implements Comparable&amp;lt;R&amp;gt;{&lt;br /&gt;  int win, lose;&lt;br /&gt;  String name;&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(R r){&lt;br /&gt;   if(win!=r.win){&lt;br /&gt;    return win-r.win;&lt;br /&gt;   }else{&lt;br /&gt;    return lose-r.lose;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-7420158461351627630?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/7420158461351627630/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=7420158461351627630' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7420158461351627630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7420158461351627630'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0196-baseball.html' title='Aizu Online Judge 0196 Baseball Championship'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-7078581779609762762</id><published>2011-03-04T00:02:00.001+09:00</published><updated>2011-03-04T00:02:38.860+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0195 What is the Most Popular Shop in Tokaichi?</title><content type='html'>&lt;p&gt;■0195 What is the Most Popular Shop in Tokaichi?&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   int n=5;&lt;br /&gt;   int max=0;&lt;br /&gt;   char c='A';&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    int a=sc.nextInt()+sc.nextInt();&lt;br /&gt;    if(a==0){&lt;br /&gt;     return;&lt;br /&gt;    }&lt;br /&gt;    if(a&amp;gt;max){&lt;br /&gt;     c=(char)('A'+i);&lt;br /&gt;     max=a;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   println(c+" "+max);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-7078581779609762762?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/7078581779609762762/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=7078581779609762762' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7078581779609762762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7078581779609762762'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0195-what-is-most.html' title='Aizu Online Judge 0195 What is the Most Popular Shop in Tokaichi?'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-5308274180906653549</id><published>2011-03-04T00:02:00.000+09:00</published><updated>2011-03-04T00:02:34.744+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0189 Convenient Location</title><content type='html'>&lt;p&gt;■0189 Convenient Location&lt;/p&gt;&lt;p&gt;各々のノードのついて，Dijkstraをやるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, m;&lt;br /&gt; LinkedList&amp;lt;E&amp;gt;[] es;&lt;br /&gt;&lt;br /&gt; @SuppressWarnings("unchecked")&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   es=new LinkedList[10];&lt;br /&gt;   for(int i=0; i&amp;lt;es.length; i++){&lt;br /&gt;    es[i]=new LinkedList&amp;lt;E&amp;gt;();&lt;br /&gt;   }&lt;br /&gt;   n=0;&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   if(m==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    int u=sc.nextInt();&lt;br /&gt;    int v=sc.nextInt();&lt;br /&gt;    int w=sc.nextInt();&lt;br /&gt;    es[u].add(new E(v, w));&lt;br /&gt;    es[v].add(new E(u, w));&lt;br /&gt;    n=max(n, u+1);&lt;br /&gt;    n=max(n, v+1);&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int min=INF;&lt;br /&gt;  int v=0;&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   int d=dijkstra(i);&lt;br /&gt;   if(d&amp;lt;min){&lt;br /&gt;    v=i;&lt;br /&gt;    min=d;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println(v+" "+min);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int dijkstra(int s){&lt;br /&gt;  int[] d=new int[n];&lt;br /&gt;  PriorityQueue&amp;lt;P&amp;gt; que=new PriorityQueue&amp;lt;P&amp;gt;();&lt;br /&gt;&lt;br /&gt;  Arrays.fill(d, INF);&lt;br /&gt;  d[s]=0;&lt;br /&gt;  que.offer(new P(s, 0));&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   P p=que.poll();&lt;br /&gt;   if(d[p.v]&amp;lt;p.d){&lt;br /&gt;    continue;&lt;br /&gt;   }&lt;br /&gt;   for(E e : es[p.v]){&lt;br /&gt;    if(d[e.to]&amp;gt;d[p.v]+e.cost){&lt;br /&gt;     d[e.to]=d[p.v]+e.cost;&lt;br /&gt;     que.offer(new P(e.to, d[e.to]));&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  int res=0;&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   res+=d[i];&lt;br /&gt;  }&lt;br /&gt;  return res;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class E{&lt;br /&gt;  int to, cost;&lt;br /&gt;&lt;br /&gt;  E(int to, int cost){&lt;br /&gt;   this.to=to;&lt;br /&gt;   this.cost=cost;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P implements Comparable&amp;lt;P&amp;gt;{&lt;br /&gt;  int v, d;&lt;br /&gt;&lt;br /&gt;  P(int v, int d){&lt;br /&gt;   this.v=v;&lt;br /&gt;   this.d=d;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(P p){&lt;br /&gt;   return d-p.d;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-5308274180906653549?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/5308274180906653549/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=5308274180906653549' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5308274180906653549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5308274180906653549'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/03/aizu-online-judge-0189-convenient.html' title='Aizu Online Judge 0189 Convenient Location'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-507949223086223071</id><published>2011-02-24T22:33:00.000+09:00</published><updated>2011-02-24T22:33:35.062+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0185 Goldbach's Conjecture II</title><content type='html'>&lt;p&gt;■0185 Goldbach's Conjecture II&lt;/p&gt;&lt;p&gt;入力が最大で10&lt;sup&gt;6&lt;/sup&gt;なので，最初にエラトステネスの篩で素数を生成しておくのが無難．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; int max=1000000;&lt;br /&gt; int[] prime;&lt;br /&gt; boolean[] isPrime;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  int p=0;&lt;br /&gt;  prime=new int[max];&lt;br /&gt;  isPrime=new boolean[max+1];&lt;br /&gt;  Arrays.fill(isPrime, true);&lt;br /&gt;  isPrime[0]=isPrime[1]=false;&lt;br /&gt;  for(int i=2; i&amp;lt;=max; i++){&lt;br /&gt;   if(isPrime[i]){&lt;br /&gt;    prime[p++]=i;&lt;br /&gt;    for(int j=2*i; j&amp;lt;=max; j+=i){&lt;br /&gt;     isPrime[j]=false;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   int ans=0;&lt;br /&gt;   for(int i=0; i&amp;lt;p; i++){&lt;br /&gt;    if(prime[i]&amp;gt;n/2){&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;    if(isPrime[n-prime[i]]){&lt;br /&gt;     ans++;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   println(""+ans);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-507949223086223071?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/507949223086223071/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=507949223086223071' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/507949223086223071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/507949223086223071'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0185-goldbachs.html' title='Aizu Online Judge 0185 Goldbach&apos;s Conjecture II'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-7415484415568354181</id><published>2011-02-24T22:30:00.013+09:00</published><updated>2011-02-24T22:32:54.751+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0184 Tsuruga Castle</title><content type='html'>&lt;p&gt;■0184 Tsuruga Castle&lt;/p&gt;&lt;p&gt;やるだけ．出力量がかなり多いので，バッファに貯めて最後に出力した．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   int n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   int[] h=new int[7];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    int a=sc.nextInt();&lt;br /&gt;    for(int k=0; k&amp;lt;7; k++){&lt;br /&gt;     if(a&amp;lt;(k+1)*10||k==6){&lt;br /&gt;      h[k]++;&lt;br /&gt;      break;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   for(int i=0; i&amp;lt;7; i++){&lt;br /&gt;    println(""+h[i]);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  System.out.flush();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-7415484415568354181?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/7415484415568354181/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=7415484415568354181' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7415484415568354181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7415484415568354181'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0184-tsuruga-castle.html' title='Aizu Online Judge 0184 Tsuruga Castle'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-4739748815923106031</id><published>2011-02-24T22:30:00.012+09:00</published><updated>2011-02-24T22:32:37.751+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0183 Black-and-White</title><content type='html'>&lt;p&gt;■0183 Black-and-White&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int[][] a;&lt;br /&gt; int n;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  n=3;&lt;br /&gt;  for(;;){&lt;br /&gt;   a=new int[n][n];&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    String s=sc.next();&lt;br /&gt;    if(s.equals("0")){&lt;br /&gt;     return;&lt;br /&gt;    }&lt;br /&gt;    for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;     switch(s.charAt(i)){&lt;br /&gt;     case 'b':&lt;br /&gt;      a[j][i]=0;&lt;br /&gt;      break;&lt;br /&gt;     case 'w':&lt;br /&gt;      a[j][i]=1;&lt;br /&gt;      break;&lt;br /&gt;     case '+':&lt;br /&gt;      a[j][i]=-1;&lt;br /&gt;      break;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  if(check(0)){&lt;br /&gt;   println("b");&lt;br /&gt;  }else if(check(1)){&lt;br /&gt;   println("w");&lt;br /&gt;  }else{&lt;br /&gt;   println("NA");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; boolean check(int e){&lt;br /&gt;  boolean f=false;&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   boolean f1=true, f2=true;&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    f1&amp;=a[j][i]==e;&lt;br /&gt;    f2&amp;=a[i][j]==e;&lt;br /&gt;   }&lt;br /&gt;   f|=f1|f2;&lt;br /&gt;  }&lt;br /&gt;  boolean f1=true, f2=true;&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   f1&amp;=a[i][i]==e;&lt;br /&gt;   f2&amp;=a[i][n-1-i]==e;&lt;br /&gt;  }&lt;br /&gt;  return f|f1|f2;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-4739748815923106031?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/4739748815923106031/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=4739748815923106031' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4739748815923106031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/4739748815923106031'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0183-black-and-white.html' title='Aizu Online Judge 0183 Black-and-White'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6880829120130934188</id><published>2011-02-24T00:10:00.002+09:00</published><updated>2011-02-24T00:10:49.020+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0181 Persistence</title><content type='html'>&lt;p&gt;■0181 Persistence&lt;/p&gt;&lt;p&gt;二分探索．&lt;/p&gt;本棚の幅をbとし，幅bの本棚に全て本を収納出来ることをC(b)で表す．&lt;br/&gt;この問題における答えは，C(b)となる最小のb(=b&lt;sub&gt;min&lt;/sub&gt;)であり，C(b)であるかどうかは容易に求まる，かつb&amp;lt;b&lt;sub&gt;min&lt;/sub&gt;なるbについては，C(b)は成立しないので二分探索を適用することが出来る．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int m, n;&lt;br /&gt; int[] a;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if((m|n)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   a=new int[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    a[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int left=0, right=1500000;&lt;br /&gt;  for(int i=0; i&amp;lt;100; i++){&lt;br /&gt;   int mid=(left+right)/2;&lt;br /&gt;   if(check(mid)){&lt;br /&gt;    right=mid;&lt;br /&gt;   }else{&lt;br /&gt;    left=mid;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println(""+right);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; boolean check(int b){&lt;br /&gt;  int d=1;&lt;br /&gt;  int sum=0;&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   if(a[i]&amp;gt;b){&lt;br /&gt;    return false;&lt;br /&gt;   }&lt;br /&gt;   sum+=a[i];&lt;br /&gt;   if(sum&amp;gt;b){&lt;br /&gt;    sum=a[i];&lt;br /&gt;    d++;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return d&amp;lt;=m;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6880829120130934188?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6880829120130934188/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6880829120130934188' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6880829120130934188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6880829120130934188'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0181-persistence.html' title='Aizu Online Judge 0181 Persistence'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-1015150897357906478</id><published>2011-02-24T00:10:00.000+09:00</published><updated>2011-02-24T00:10:05.618+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0180 Stellar Performance of the Debunkey Family</title><content type='html'>&lt;p&gt;■0180 Stellar Performance of the Debunkey Family&lt;/p&gt;&lt;p&gt;最小全域木．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n, m;&lt;br /&gt; LinkedList&amp;lt;E&amp;gt; list;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   if((n|m)==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   list=new LinkedList&amp;lt;E&amp;gt;();&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    int a=sc.nextInt();&lt;br /&gt;    int b=sc.nextInt();&lt;br /&gt;    int cost=sc.nextInt();&lt;br /&gt;    list.add(new E(a, b, cost));&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  E[] es=list.toArray(new E[0]);&lt;br /&gt;  Arrays.sort(es);&lt;br /&gt;  init();&lt;br /&gt;  int wt=0;&lt;br /&gt;  for(E e : es){&lt;br /&gt;   if(find(e.v1)!=find(e.v2)){&lt;br /&gt;    union(e.v1, e.v2);&lt;br /&gt;    wt+=e.w;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println(""+wt);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class E implements Comparable&amp;lt;E&amp;gt;{&lt;br /&gt;  int v1, v2, w;&lt;br /&gt;&lt;br /&gt;  E(int v1, int v2, int w){&lt;br /&gt;   this.v1=v1;&lt;br /&gt;   this.v2=v2;&lt;br /&gt;   this.w=w;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(E e){&lt;br /&gt;   return w-e.w;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int[] p, rank;&lt;br /&gt;&lt;br /&gt; void init(){&lt;br /&gt;  p=new int[n];&lt;br /&gt;  rank=new int[n];&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   p[i]=i;&lt;br /&gt;   rank[i]=0;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int find(int x){&lt;br /&gt;  if(p[x]==x)&lt;br /&gt;   return x;&lt;br /&gt;  else&lt;br /&gt;   return p[x]=find(p[x]);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void union(int x, int y){&lt;br /&gt;  x=find(x);&lt;br /&gt;  y=find(y);&lt;br /&gt;  if(rank[x]&amp;gt;rank[y]){&lt;br /&gt;   p[y]=x;&lt;br /&gt;  }else{&lt;br /&gt;   p[x]=y;&lt;br /&gt;   if(rank[x]==rank[y])&lt;br /&gt;    rank[y]++;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-1015150897357906478?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/1015150897357906478/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=1015150897357906478' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1015150897357906478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1015150897357906478'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0180-stellar.html' title='Aizu Online Judge 0180 Stellar Performance of the Debunkey Family'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8122952125749477721</id><published>2011-02-24T00:09:00.000+09:00</published><updated>2011-02-24T00:09:53.869+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0179 Mysterious Worm</title><content type='html'>&lt;p&gt;■0179 Mysterious Worm&lt;/p&gt;&lt;p&gt;深さ優先探索．同じ状態が何度も発生しないように，既に出た状態を集合に突っ込んでおくと良い(ただし，計算量がO(logn)であるものを用いないとTLEの可能性有)．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; String worm;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   worm=sc.next();&lt;br /&gt;   if(worm.equals("0")){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  LinkedList&amp;lt;String&amp;gt; que=new LinkedList&amp;lt;String&amp;gt;();&lt;br /&gt;  TreeSet&amp;lt;String&amp;gt; set=new TreeSet&amp;lt;String&amp;gt;();&lt;br /&gt;  HashMap&amp;lt;String, Integer&amp;gt; map=new HashMap&amp;lt;String, Integer&amp;gt;();&lt;br /&gt;  que.add(worm);&lt;br /&gt;  set.add(worm);&lt;br /&gt;  map.put(worm, 0);&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   String s=que.poll();&lt;br /&gt;   boolean f=true;&lt;br /&gt;   for(int i=0; i&amp;lt;s.length(); i++){&lt;br /&gt;    f&amp;=s.charAt(0)==s.charAt(i);&lt;br /&gt;   }&lt;br /&gt;   if(f){&lt;br /&gt;    println(""+map.get(s));&lt;br /&gt;    return;&lt;br /&gt;   }&lt;br /&gt;   for(String t : next(s)){&lt;br /&gt;    if(!set.contains(t)){&lt;br /&gt;     que.offer(t);&lt;br /&gt;     set.add(t);&lt;br /&gt;     map.put(t, map.get(s)+1);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println("NA");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; LinkedList&amp;lt;String&amp;gt; next(String s){&lt;br /&gt;  LinkedList&amp;lt;String&amp;gt; list=new LinkedList&amp;lt;String&amp;gt;();&lt;br /&gt;  for(int i=0; i&amp;lt;s.length()-1; i++){&lt;br /&gt;   if(s.charAt(i)!=s.charAt(i+1)){&lt;br /&gt;    char c='*';&lt;br /&gt;    switch(s.charAt(i)+s.charAt(i+1)){&lt;br /&gt;    case 'r'+'g':&lt;br /&gt;     c='b';&lt;br /&gt;     break;&lt;br /&gt;    case 'g'+'b':&lt;br /&gt;     c='r';&lt;br /&gt;     break;&lt;br /&gt;    case 'b'+'r':&lt;br /&gt;     c='g';&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;    list.add(s.substring(0, i)+c+c&lt;br /&gt;      +(i&amp;lt;s.length()-2?s.substring(i+2, s.length()):""));&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return list;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8122952125749477721?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8122952125749477721/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8122952125749477721' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8122952125749477721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8122952125749477721'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0179-mysterious-worm.html' title='Aizu Online Judge 0179 Mysterious Worm'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6755927895513596438</id><published>2011-02-22T23:10:00.001+09:00</published><updated>2011-02-22T23:10:35.021+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0176 What Color?</title><content type='html'>&lt;p&gt;■0176 What Color?&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   String s=sc.next();&lt;br /&gt;   if(s.equals("0")){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   int r=Integer.parseInt(s.substring(1, 3), 16);&lt;br /&gt;   int g=Integer.parseInt(s.substring(3, 5), 16);&lt;br /&gt;   int b=Integer.parseInt(s.substring(5, 7), 16);&lt;br /&gt;   int k=-1;&lt;br /&gt;   double min=INF;&lt;br /&gt;   for(int i=0; i&amp;lt;8; i++){&lt;br /&gt;    int dr=r-(i/4)*0xff;&lt;br /&gt;    int dg=g-((i/2)%2)*0xff;&lt;br /&gt;    int db=b-(i%2)*0xff;&lt;br /&gt;    double d=Math.sqrt(dr*dr+dg*dg+db*db);&lt;br /&gt;    if(d+EPS&amp;lt;min){&lt;br /&gt;     k=i;&lt;br /&gt;     min=d;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   println(new String[]{"black", "blue", "lime", "aqua", "red",&lt;br /&gt;     "fuchsia", "yellow", "white",}[k]);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6755927895513596438?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6755927895513596438/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6755927895513596438' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6755927895513596438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6755927895513596438'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0176-what-color.html' title='Aizu Online Judge 0176 What Color?'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-7899648139935062466</id><published>2011-02-22T23:10:00.000+09:00</published><updated>2011-02-22T23:10:11.479+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0175 A King in Hawaii</title><content type='html'>&lt;p&gt;■0175 A King in Hawaii&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   int n=sc.nextInt();&lt;br /&gt;   if(n==-1){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   println(Integer.toString(n, 4));&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-7899648139935062466?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/7899648139935062466/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=7899648139935062466' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7899648139935062466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7899648139935062466'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0175-king-in-hawaii.html' title='Aizu Online Judge 0175 A King in Hawaii'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8595850808924292521</id><published>2011-02-22T23:09:00.002+09:00</published><updated>2011-02-22T23:09:48.343+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0174 Badminton</title><content type='html'>&lt;p&gt;■0174 Badminton&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; String[] ss;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  ss=new String[3];&lt;br /&gt;  for(;;){&lt;br /&gt;   ss[0]=sc.next();&lt;br /&gt;   if(ss[0].equals("0")){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   ss[1]=sc.next();&lt;br /&gt;   ss[2]=sc.next();&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  for(int j=0; j&amp;lt;3; j++){&lt;br /&gt;   int a=0, b=0;&lt;br /&gt;   for(int i=0; i&amp;lt;ss[j].length()-1; i++){&lt;br /&gt;    if(ss[j].charAt(i+1)=='A'){&lt;br /&gt;     a++;&lt;br /&gt;    }else{&lt;br /&gt;     b++;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   if((a+1==11&amp;&amp;b&amp;lt;=9)||(a+1&amp;gt;=12&amp;&amp;a+1==b+2)){&lt;br /&gt;    a++;&lt;br /&gt;   }else{&lt;br /&gt;    b++;&lt;br /&gt;   }&lt;br /&gt;   println(a+" "+b);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8595850808924292521?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8595850808924292521/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8595850808924292521' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8595850808924292521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8595850808924292521'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0174-badminton.html' title='Aizu Online Judge 0174 Badminton'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-5802138580490061782</id><published>2011-02-22T23:09:00.001+09:00</published><updated>2011-02-22T23:09:29.458+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0173 Haunted House</title><content type='html'>&lt;p&gt;■0173 Haunted House&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(int i=0; i&amp;lt;9; i++){&lt;br /&gt;   String s=sc.next();&lt;br /&gt;   int a=sc.nextInt();&lt;br /&gt;   int b=sc.nextInt();&lt;br /&gt;   println(s+" "+(a+b)+" "+(a*200+b*300));&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-5802138580490061782?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/5802138580490061782/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=5802138580490061782' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5802138580490061782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/5802138580490061782'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0173-haunted-house.html' title='Aizu Online Judge 0173 Haunted House'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-8864290335218674027</id><published>2011-02-22T23:09:00.000+09:00</published><updated>2011-02-22T23:09:07.822+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0170 Lunch</title><content type='html'>&lt;p&gt;■0170 Lunch&lt;/p&gt;&lt;p&gt;全探索．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; String[] f;&lt;br /&gt; int[] w, s;&lt;br /&gt; int[] a, best;&lt;br /&gt; double bestG;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   f=new String[n];&lt;br /&gt;   w=new int[n];&lt;br /&gt;   s=new int[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    f[i]=sc.next();&lt;br /&gt;    w[i]=sc.nextInt();&lt;br /&gt;    s[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  a=new int[n];&lt;br /&gt;  best=new int[n];&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   a[i]=i;&lt;br /&gt;  }&lt;br /&gt;  bestG=INF;&lt;br /&gt;  rec(0);&lt;br /&gt;  for(int e : best){&lt;br /&gt;   println(f[e]);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void rec(int j){&lt;br /&gt;  if(j==n){&lt;br /&gt;   int sumW=0;&lt;br /&gt;   int nW=0;&lt;br /&gt;   for(int i=n-1; i&amp;gt;=0; i--){&lt;br /&gt;    if(s[a[i]]&amp;lt;sumW){&lt;br /&gt;     return;&lt;br /&gt;    }&lt;br /&gt;    sumW+=w[a[i]];&lt;br /&gt;    nW+=(i+1)*w[a[i]];&lt;br /&gt;   }&lt;br /&gt;   double g=(double)nW/sumW;&lt;br /&gt;   if(g+EPS&amp;lt;bestG){&lt;br /&gt;    System.arraycopy(a, 0, best, 0, n);&lt;br /&gt;    bestG=g;&lt;br /&gt;   }&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  for(int i=j; i&amp;lt;n; i++){&lt;br /&gt;   int t=a[i];&lt;br /&gt;   a[i]=a[j];&lt;br /&gt;   a[j]=t;&lt;br /&gt;   rec(j+1);&lt;br /&gt;   t=a[i];&lt;br /&gt;   a[i]=a[j];&lt;br /&gt;   a[j]=t;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-8864290335218674027?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/8864290335218674027/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=8864290335218674027' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8864290335218674027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/8864290335218674027'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0170-lunch.html' title='Aizu Online Judge 0170 Lunch'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-952975451858519379</id><published>2011-02-22T23:08:00.001+09:00</published><updated>2011-02-22T23:08:30.289+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0169 Blackjack</title><content type='html'>&lt;p&gt;■0169 Blackjack&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   Scanner s=new Scanner(sc.nextLine());&lt;br /&gt;   int count1=0;&lt;br /&gt;   int sum=0;&lt;br /&gt;   for(; s.hasNext();){&lt;br /&gt;    int a=s.nextInt();&lt;br /&gt;    if(a==0){&lt;br /&gt;     return;&lt;br /&gt;    }&lt;br /&gt;    if(a&amp;gt;10){&lt;br /&gt;     sum+=10;&lt;br /&gt;    }else{&lt;br /&gt;     sum+=a;&lt;br /&gt;    }&lt;br /&gt;    if(a==1){&lt;br /&gt;     count1++;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   int ans=0;&lt;br /&gt;   for(int i=0; i&amp;lt;=count1; i++){&lt;br /&gt;    if(sum&amp;lt;=21){&lt;br /&gt;     ans=sum;&lt;br /&gt;    }&lt;br /&gt;    sum+=10;&lt;br /&gt;   }&lt;br /&gt;   println(""+ans);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-952975451858519379?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/952975451858519379/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=952975451858519379' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/952975451858519379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/952975451858519379'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0169-blackjack.html' title='Aizu Online Judge 0169 Blackjack'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-199351741242815331</id><published>2011-02-22T23:08:00.000+09:00</published><updated>2011-02-22T23:08:12.596+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0168 Kannondou</title><content type='html'>&lt;p&gt;■0168 Kannondou&lt;/p&gt;&lt;p&gt;動的計画法．&lt;/p&gt;dp[段数]=組み合わせ&lt;br/&gt;dp[0]=1&lt;br/&gt;dp[i]=dp[i-1]+dp[i-2]+dp[i-3]&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   int n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   int[] dp=new int[n+4];&lt;br /&gt;   dp[0]=1;&lt;br /&gt;   for(int i=0; i&amp;lt;=n; i++){&lt;br /&gt;    dp[i+1]+=dp[i];&lt;br /&gt;    dp[i+2]+=dp[i];&lt;br /&gt;    dp[i+3]+=dp[i];&lt;br /&gt;   }&lt;br /&gt;   int ans=((dp[n]+9)/10+364)/365;&lt;br /&gt;   println(ans+"");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-199351741242815331?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/199351741242815331/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=199351741242815331' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/199351741242815331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/199351741242815331'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0168-kannondou.html' title='Aizu Online Judge 0168 Kannondou'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-9135744754394634823</id><published>2011-02-22T23:07:00.000+09:00</published><updated>2011-02-22T23:07:33.253+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0167 Bubble Sort</title><content type='html'>&lt;p&gt;■0167 Bubble Sort&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; int[] a;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   a=new int[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    a[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int swap=0;&lt;br /&gt;  for(int j=n-1; j&amp;gt;=0; j--){&lt;br /&gt;   for(int i=0; i&amp;lt;j; i++){&lt;br /&gt;    if(a[i]&amp;gt;a[i+1]){&lt;br /&gt;     int t=a[i];&lt;br /&gt;     a[i]=a[i+1];&lt;br /&gt;     a[i+1]=t;&lt;br /&gt;     swap++;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  println(""+swap);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-9135744754394634823?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/9135744754394634823/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=9135744754394634823' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/9135744754394634823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/9135744754394634823'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0167-bubble-sort.html' title='Aizu Online Judge 0167 Bubble Sort'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-3095860444802141335</id><published>2011-02-22T23:06:00.001+09:00</published><updated>2011-02-22T23:06:51.400+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0166 Area of Polygon</title><content type='html'>&lt;p&gt;■0166 Area of Polygon&lt;/p&gt;&lt;p&gt;中心角θの三角形の面積は，2sin(θ/2)&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   double[] area=new double[2];&lt;br /&gt;   for(int j=0; j&amp;lt;2; j++){&lt;br /&gt;    int m=sc.nextInt();&lt;br /&gt;    if(m==0){&lt;br /&gt;     return;&lt;br /&gt;    }&lt;br /&gt;    int sum=0;&lt;br /&gt;    for(int i=0; i&amp;lt;m-1; i++){&lt;br /&gt;     int deg=sc.nextInt();&lt;br /&gt;     area[j]+=Math.sin(Math.toRadians(deg/2))*2;&lt;br /&gt;     sum+=deg;&lt;br /&gt;    }&lt;br /&gt;    area[j]+=Math.sin(Math.toRadians(360-sum))/2;&lt;br /&gt;   }&lt;br /&gt;   if(area[0]&amp;gt;area[1]+EPS){&lt;br /&gt;    println("1");&lt;br /&gt;   }else if(area[0]+EPS&amp;lt;area[1]){&lt;br /&gt;    println("2");&lt;br /&gt;   }else{&lt;br /&gt;    println("0");&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-3095860444802141335?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/3095860444802141335/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=3095860444802141335' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3095860444802141335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3095860444802141335'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0166-area-of-polygon.html' title='Aizu Online Judge 0166 Area of Polygon'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-3457425942751654186</id><published>2011-02-22T23:06:00.000+09:00</published><updated>2011-02-22T23:06:03.589+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0164 Ohajiki Game</title><content type='html'>&lt;p&gt;■0164 Ohajiki Game&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   int n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   int[] a=new int[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    a[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   for(int r=31, i=0;; i=(i+1)%n){&lt;br /&gt;    println(""+r);&lt;br /&gt;    r-=a[i];&lt;br /&gt;    if(r&amp;lt;=0){&lt;br /&gt;     println("0");&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;    println(""+r);&lt;br /&gt;    r-=(r-1)%5;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-3457425942751654186?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/3457425942751654186/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=3457425942751654186' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3457425942751654186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3457425942751654186'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0164-ohajiki-game.html' title='Aizu Online Judge 0164 Ohajiki Game'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-7129715284603556939</id><published>2011-02-22T23:05:00.000+09:00</published><updated>2011-02-22T23:05:38.940+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0163 Highway Toll</title><content type='html'>&lt;p&gt;■0163 Highway Toll&lt;/p&gt;&lt;p&gt;やるだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  int[][] d={&lt;br /&gt;    //&lt;br /&gt;    {0, 6, 13, 18, 23, 43, 58}, //&lt;br /&gt;    {6, 0, 7, 12, 17, 37, 52}, //&lt;br /&gt;    {13, 7, 0, 5, 10, 30, 45}, //&lt;br /&gt;    {18, 12, 5, 0, 5, 25, 40}, //&lt;br /&gt;    {23, 17, 10, 5, 0, 20, 35}, //&lt;br /&gt;    {43, 37, 30, 25, 20, 0, 15}, //&lt;br /&gt;    {58, 52, 45, 40, 35, 15, 0}, //&lt;br /&gt;  };&lt;br /&gt;  int[][] c={&lt;br /&gt;    //&lt;br /&gt;    {0, 300, 500, 600, 700, 1350, 1650}, //&lt;br /&gt;    {300, 0, 350, 450, 600, 1150, 1500}, //&lt;br /&gt;    {500, 350, 0, 250, 400, 1000, 1350}, //&lt;br /&gt;    {600, 450, 250, 0, 250, 850, 1300}, //&lt;br /&gt;    {700, 600, 400, 250, 0, 600, 1150}, //&lt;br /&gt;    {1350, 1150, 1000, 850, 600, 0, 500}, //&lt;br /&gt;    {1650, 1500, 1350, 1300, 1150, 500, 0},}; //&lt;br /&gt;&lt;br /&gt;  for(;;){&lt;br /&gt;   int ic1=sc.nextInt()-1;&lt;br /&gt;   if(ic1==-1){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   int h1=sc.nextInt();&lt;br /&gt;   int m1=sc.nextInt()+h1*60;&lt;br /&gt;   int ic2=sc.nextInt()-1;&lt;br /&gt;   int h2=sc.nextInt();&lt;br /&gt;   int m2=sc.nextInt()+h2*60;&lt;br /&gt;   int s=17*60+30;&lt;br /&gt;   int g=19*60+30;&lt;br /&gt;   int ans=c[ic1][ic2];&lt;br /&gt;   if((s&amp;lt;=m1&amp;&amp;m1&amp;lt;=g)||(s&amp;lt;=m2&amp;&amp;m2&amp;lt;=g)){&lt;br /&gt;    if(d[ic1][ic2]&amp;lt;=40){&lt;br /&gt;     // 半額&lt;br /&gt;     ans=(int)(Math.ceil(ans/2./50.)*50+EPS);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   println(""+ans);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-7129715284603556939?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/7129715284603556939/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=7129715284603556939' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7129715284603556939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/7129715284603556939'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0163-highway-toll.html' title='Aizu Online Judge 0163 Highway Toll'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-1122778434246699748</id><published>2011-02-22T23:04:00.000+09:00</published><updated>2011-02-22T23:04:34.873+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0144 Packet Transportation</title><content type='html'>&lt;p&gt;■0144 Packet Transportation&lt;/p&gt;&lt;p&gt;BFSするだけ．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; int start, goal, ttl;&lt;br /&gt; LinkedList&amp;lt;Integer&amp;gt;[] graph;&lt;br /&gt;&lt;br /&gt; @SuppressWarnings("unchecked")&lt;br /&gt; void run(){&lt;br /&gt;  n=sc.nextInt();&lt;br /&gt;  graph=new LinkedList[n];&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   int u=sc.nextInt()-1;// ルータ番号&lt;br /&gt;   int m=sc.nextInt();&lt;br /&gt;   graph[u]=new LinkedList&amp;lt;Integer&amp;gt;();&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    int v=sc.nextInt()-1;&lt;br /&gt;    graph[u].add(v);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  int p=sc.nextInt();&lt;br /&gt;  for(int i=0; i&amp;lt;p; i++){&lt;br /&gt;   start=sc.nextInt()-1;&lt;br /&gt;   goal=sc.nextInt()-1;&lt;br /&gt;   ttl=sc.nextInt();&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  LinkedList&amp;lt;Integer&amp;gt; que=new LinkedList&amp;lt;Integer&amp;gt;();&lt;br /&gt;  boolean[] visited=new boolean[n];&lt;br /&gt;  int[] d=new int[n];&lt;br /&gt;  Arrays.fill(d, INF);&lt;br /&gt;  que.offer(start);&lt;br /&gt;  d[start]=1;&lt;br /&gt;  visited[start]=true;&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   int u=que.poll();&lt;br /&gt;   for(int v : graph[u]){&lt;br /&gt;    if(!visited[v]){&lt;br /&gt;     que.offer(v);&lt;br /&gt;     d[v]=d[u]+1;&lt;br /&gt;     visited[v]=true;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  if(d[goal]&amp;lt;=ttl){&lt;br /&gt;   println(""+d[goal]);&lt;br /&gt;  }else{&lt;br /&gt;   println("NA");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-1122778434246699748?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/1122778434246699748/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=1122778434246699748' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1122778434246699748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/1122778434246699748'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0144-packet.html' title='Aizu Online Judge 0144 Packet Transportation'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-3417945493459728818</id><published>2011-02-22T23:03:00.000+09:00</published><updated>2011-02-22T23:03:44.139+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0143 Altair and Vega</title><content type='html'>&lt;p&gt;■0143 Altair and Vega&lt;/p&gt;&lt;p&gt;牽牛と織女を結ぶ線分が，三角形を構成する線分と何回交差するかで答えは決まる．&lt;/p&gt;0，2回：遮断されていない&lt;br/&gt;1回：遮断されている&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; P ps1, ps2, ps3;&lt;br /&gt; P k, s;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  n=sc.nextInt();&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   int xp1=sc.nextInt();&lt;br /&gt;   int yp1=sc.nextInt();&lt;br /&gt;   int xp2=sc.nextInt();&lt;br /&gt;   int yp2=sc.nextInt();&lt;br /&gt;   int xp3=sc.nextInt();&lt;br /&gt;   int yp3=sc.nextInt();&lt;br /&gt;   int xk=sc.nextInt();&lt;br /&gt;   int yk=sc.nextInt();&lt;br /&gt;   int xs=sc.nextInt();&lt;br /&gt;   int ys=sc.nextInt();&lt;br /&gt;   ps1=new P(xp1, yp1);&lt;br /&gt;   ps2=new P(xp2, yp2);&lt;br /&gt;   ps3=new P(xp3, yp3);&lt;br /&gt;   k=new P(xk, yk);&lt;br /&gt;   s=new P(xs, ys);&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  if(crsSS(k, s, ps1, ps2)^crsSS(k, s, ps2, ps3)^crsSS(k, s, ps3, ps1)){&lt;br /&gt;   println("OK");&lt;br /&gt;  }else{&lt;br /&gt;   println("NG");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; boolean crsSS(P p1, P p2, P q1, P q2){&lt;br /&gt;  if(max(p1.x, p2.x)+EPS&amp;lt;min(q1.x, q2.x))&lt;br /&gt;   return false;&lt;br /&gt;  if(max(q1.x, q2.x)+EPS&amp;lt;min(p1.x, p2.x))&lt;br /&gt;   return false;&lt;br /&gt;  if(max(p1.y, p2.y)+EPS&amp;lt;min(q1.y, q2.y))&lt;br /&gt;   return false;&lt;br /&gt;  if(max(q1.y, q2.y)+EPS&amp;lt;min(p1.y, p2.y))&lt;br /&gt;   return false;&lt;br /&gt;  return signum(p2.sub(p1).det(q1.sub(p1)))&lt;br /&gt;    *signum(p2.sub(p1).det(q2.sub(p1)))&amp;lt;EPS&lt;br /&gt;    &amp;&amp;signum(q2.sub(q1).det(p1.sub(q1)))&lt;br /&gt;      *signum(q2.sub(q1).det(p2.sub(q1)))&amp;lt;EPS;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P{&lt;br /&gt;  double x, y;&lt;br /&gt;&lt;br /&gt;  P(){&lt;br /&gt;   this(0, 0);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P(double x, double y){&lt;br /&gt;   this.x=x;&lt;br /&gt;   this.y=y;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P add(P p){&lt;br /&gt;   return new P(x+p.x, y+p.y);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P sub(P p){&lt;br /&gt;   return new P(x-p.x, y-p.y);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P mul(double m){&lt;br /&gt;   return new P(x*m, y*m);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P div(double d){&lt;br /&gt;   return new P(x/d, y/d);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double abs(){&lt;br /&gt;   return Math.sqrt(abs2());&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double abs2(){&lt;br /&gt;   return x*x+y*y;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  double arg(){&lt;br /&gt;   return Math.atan2(y, x);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // inner product&lt;br /&gt;  double dot(P p){&lt;br /&gt;   return x*p.x+y*p.y;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // outer product&lt;br /&gt;  double det(P p){&lt;br /&gt;   return x*p.y-y*p.x;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  P rot90(){&lt;br /&gt;   return new P(-y, x);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // conjugation&lt;br /&gt;  P conj(){&lt;br /&gt;   return new P(x, -y);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-3417945493459728818?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/3417945493459728818/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=3417945493459728818' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3417945493459728818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/3417945493459728818'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0143-altair-and-vega.html' title='Aizu Online Judge 0143 Altair and Vega'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-6755985008068981661</id><published>2011-02-20T22:36:00.000+09:00</published><updated>2011-02-20T22:36:21.081+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0155 Spider Jin</title><content type='html'>&lt;p&gt;■0155 Spider Jin&lt;/p&gt;&lt;p&gt;最初にどのビルからどのビルへ移動することが出来るかの辺を張る．あとはDijkstraをしながら，あるビルの前に訪れるビルを逐一記録しておけば良い．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; int[] b, x, y;&lt;br /&gt; int m;&lt;br /&gt; int[] s, g;&lt;br /&gt; HashMap&amp;lt;Integer, Integer&amp;gt; map;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   b=new int[n];&lt;br /&gt;   x=new int[n];&lt;br /&gt;   y=new int[n];&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    b[i]=sc.nextInt();&lt;br /&gt;    x[i]=sc.nextInt();&lt;br /&gt;    y[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   s=new int[m];&lt;br /&gt;   g=new int[m];&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    s[i]=sc.nextInt();&lt;br /&gt;    g[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  map=new HashMap&amp;lt;Integer, Integer&amp;gt;();&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   map.put(b[i], i);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @SuppressWarnings("unchecked")&lt;br /&gt;  LinkedList&amp;lt;E&amp;gt;[] es=new LinkedList[n];&lt;br /&gt;  for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;   es[j]=new LinkedList&amp;lt;E&amp;gt;();&lt;br /&gt;   for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;    if(i==j){&lt;br /&gt;     continue;&lt;br /&gt;    }&lt;br /&gt;    double cost=Math.hypot(x[i]-x[j], y[i]-y[j]);&lt;br /&gt;    if(cost&amp;lt;50+EPS){&lt;br /&gt;     es[j].add(new E(i, cost));&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;   LinkedList&amp;lt;Integer&amp;gt; path=dijkstra(es, map.get(s[i]), map.get(g[i]));&lt;br /&gt;   if(path==null){&lt;br /&gt;    println("NA");&lt;br /&gt;   }else{&lt;br /&gt;    for(int k=0; k&amp;lt;path.size(); k++){&lt;br /&gt;     print(b[path.get(k)]+(k==path.size()-1?"\n":" "));&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; LinkedList&amp;lt;Integer&amp;gt; dijkstra(LinkedList&amp;lt;E&amp;gt;[] es, int s, int g){&lt;br /&gt;  int n=es.length;&lt;br /&gt;  double[] d=new double[n];&lt;br /&gt;  int[] pre=new int[n];&lt;br /&gt;  PriorityQueue&amp;lt;P&amp;gt; que=new PriorityQueue&amp;lt;P&amp;gt;();&lt;br /&gt;&lt;br /&gt;  Arrays.fill(d, INF);&lt;br /&gt;  Arrays.fill(pre, -1);&lt;br /&gt;  d[s]=0;&lt;br /&gt;  pre[s]=s;&lt;br /&gt;  que.offer(new P(s, 0));&lt;br /&gt;  for(; !que.isEmpty();){&lt;br /&gt;   P p=que.poll();&lt;br /&gt;   if(d[p.v]&amp;lt;p.d)&lt;br /&gt;    continue;&lt;br /&gt;   for(E e : es[p.v]){&lt;br /&gt;    if(d[e.to]&amp;gt;d[p.v]+e.cost){&lt;br /&gt;     pre[e.to]=p.v;&lt;br /&gt;     d[e.to]=d[p.v]+e.cost;&lt;br /&gt;     que.offer(new P(e.to, d[e.to]));&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  LinkedList&amp;lt;Integer&amp;gt; path=new LinkedList&amp;lt;Integer&amp;gt;();&lt;br /&gt;  for(int i=g;; i=pre[i]){&lt;br /&gt;   path.addFirst(i);&lt;br /&gt;   if(i==-1){&lt;br /&gt;    return null;&lt;br /&gt;   }&lt;br /&gt;   if(i==s){&lt;br /&gt;    return path;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class E{&lt;br /&gt;  int to;&lt;br /&gt;  double cost;&lt;br /&gt;&lt;br /&gt;  E(int to, double cost){&lt;br /&gt;   this.to=to;&lt;br /&gt;   this.cost=cost;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class P implements Comparable&amp;lt;P&amp;gt;{&lt;br /&gt;  int v;&lt;br /&gt;  double d;&lt;br /&gt;&lt;br /&gt;  P(int v, double d){&lt;br /&gt;   this.v=v;&lt;br /&gt;   this.d=d;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public int compareTo(P p){&lt;br /&gt;   if(d+EPS&amp;lt;p.d){&lt;br /&gt;    return -1;&lt;br /&gt;   }else if(d&amp;gt;p.d+EPS){&lt;br /&gt;    return 1;&lt;br /&gt;   }else{&lt;br /&gt;    return 0;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-6755985008068981661?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/6755985008068981661/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=6755985008068981661' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6755985008068981661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/6755985008068981661'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0155-spider-jin.html' title='Aizu Online Judge 0155 Spider Jin'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-110319317761427830</id><published>2011-02-20T22:35:00.000+09:00</published><updated>2011-02-20T22:35:04.257+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0154 Sum of Cards</title><content type='html'>&lt;p&gt;■0154 Sum of Cards&lt;/p&gt;&lt;p&gt;動的計画法による解法．&lt;/p&gt;dp[i]=総和がiとなるカードの組み合わせ&lt;br/&gt;とすればよい．更新方法は↓参照．&lt;br/&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int m, g;&lt;br /&gt; int[] a, b, n;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   m=sc.nextInt();&lt;br /&gt;   if(m==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   a=new int[m];&lt;br /&gt;   b=new int[m];&lt;br /&gt;   for(int i=0; i&amp;lt;m; i++){&lt;br /&gt;    a[i]=sc.nextInt();&lt;br /&gt;    b[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   g=sc.nextInt();&lt;br /&gt;   n=new int[g];&lt;br /&gt;   for(int i=0; i&amp;lt;g; i++){&lt;br /&gt;    n[i]=sc.nextInt();&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  int max=1001;&lt;br /&gt;  int[] dp=new int[max];&lt;br /&gt;  int[] dp2=new int[max];&lt;br /&gt;  dp[0]=1;&lt;br /&gt;  for(int j=0; j&amp;lt;m; j++){&lt;br /&gt;   System.arraycopy(dp, 0, dp2, 0, max);&lt;br /&gt;   for(int i=0; i&amp;lt;b[j]; i++){&lt;br /&gt;    for(int k=max-a[j]*(i+1)-1; k&amp;gt;=0; k--){&lt;br /&gt;     dp[k+a[j]*(i+1)]+=dp2[k];&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  for(int i=0; i&amp;lt;g; i++){&lt;br /&gt;   println(""+dp[n[i]]);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void debug(Object... os){&lt;br /&gt;  System.err.println(Arrays.deepToString(os));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void print(String s){&lt;br /&gt;  System.out.print(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void println(String s){&lt;br /&gt;  System.out.println(s);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));&lt;br /&gt;  new Main().run();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8407586297783126557-110319317761427830?l=mainly-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mainly-coding.blogspot.com/feeds/110319317761427830/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8407586297783126557&amp;postID=110319317761427830' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/110319317761427830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8407586297783126557/posts/default/110319317761427830'/><link rel='alternate' type='text/html' href='http://mainly-coding.blogspot.com/2011/02/aizu-online-judge-0154-sum-of-cards.html' title='Aizu Online Judge 0154 Sum of Cards'/><author><name>todo</name><uri>http://www.blogger.com/profile/11682750547504967746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-8CofkU23dmw/TnNPv-IWjbI/AAAAAAAABMw/fuwsrCuVms4/s220/todo.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8407586297783126557.post-255311845266409516</id><published>2011-02-20T22:33:00.001+09:00</published><updated>2011-02-20T22:33:20.742+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aizu Online Judge'/><title type='text'>Aizu Online Judge 0152 Bowling</title><content type='html'>&lt;p&gt;■0152 Bowling&lt;/p&gt;&lt;p&gt;簡単な実装ゲー．&lt;/p&gt;&lt;pre class="java" name="code"&gt;import java.util.*;&lt;br /&gt;import java.lang.*;&lt;br /&gt;import java.math.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import static java.lang.Math.*;&lt;br /&gt;import static java.util.Arrays.*;&lt;br /&gt;&lt;br /&gt;public class Main{&lt;br /&gt;&lt;br /&gt; Scanner sc=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int INF=1&amp;lt;&amp;lt;28;&lt;br /&gt; double EPS=1e-9;&lt;br /&gt;&lt;br /&gt; int n;&lt;br /&gt; R[] rs;&lt;br /&gt;&lt;br /&gt; void run(){&lt;br /&gt;  for(;;){&lt;br /&gt;   n=sc.nextInt();&lt;br /&gt;   if(n==0){&lt;br /&gt;    break;&lt;br /&gt;   }&lt;br /&gt;   sc.nextLine();&lt;br /&gt;   rs=new R[n];&lt;br /&gt;   for(int j=0; j&amp;lt;n; j++){&lt;br /&gt;    Scanner s=new Scanner(sc.nextLine());&lt;br /&gt;    rs[j]=new R();&lt;br /&gt;    rs[j].id=s.nextInt();&lt;br /&gt;    for(int i=0; s.hasNext(); i++){&lt;br /&gt;     rs[j].pins[i]=s.nextInt();&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   solve();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void solve(){&lt;br /&gt;  for(int i=0; i&amp;lt;n; i++){&lt;br /&gt;   rs[i].score=getScore(rs[i].pins);&lt;br /&gt;  }&lt;br /&gt;  Arrays.sort(rs);&lt;br /&gt;  for(R r : rs){&lt;br /&gt;   println(r.id+" "+r.score);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br
