<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="../../../../../css/rss/feedAtom.xsl" media="screen" type="text/xsl"?>

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss" version="0.3" xml:lang="utf-8">  
  <title>Yossi Survivor MAX</title>  
  <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp"/>  
  <modified>2012-05-15T02:59:25+09:00</modified>  
  <author>
    <name>ddrer-yossi</name>
  </author>  
  <tagline>某Yの中の人の趣味を綴った雑記。発狂放置なDDRerです。 2dxは等速9段 DDR(1106-7746)</tagline>  
  <generator url="http://www.exblog.jp/">Excite Blog</generator>  
  <link rel="start" href="http://rss.exblog.jp/rss/exblog/ddrer/atom.xml" type="application/rss+xml"/>  
  <entry> 
    <title>書けるうちに</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17541343/"/>  
    <id>http://ddrer.exblog.jp/17541343/</id>  
    <issued>2012-05-14T23:45:00+09:00</issued>  
    <modified>2012-05-15T02:59:25+09:00</modified>  
    <created>2012-05-15T02:52:24+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>日常生活</dc:subject>  
    <content type="html"><![CDATA[ 
今日は昼ごろからタイピングゲームの開発に。<br/>
Timerクラスを使って実装してみたものの、<br/>
途中で間隔を変化させることがどうやらできなさそうなので断念。<br/>
マルチスレッドを使った場合と、CPU使用率とメモリ使用率が大して変わらないのと、<br/>
１９ワードほど同時表示してみても使用率が２０％いくかどうかといった感じなので、<br/>
取り敢えずはこのままいくことにしました。<br/>
<br/>
実装途中に飲んでいたモンスター。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_252380.jpg" border="0" width="480" height="854"/></center><br/>
<br/>
問題は音声かな。もっと快適な感じの打鍵音にしたいかもしれない。<br/>
何かいいものがあれば。<br/>
<br/>
そして最近はJavaの根本的な構造の見直しということで、<br/>
Effective Javaとデザインパターン入門の本を読んでいます。<br/>
<br/>
デザインパターンを先にやっています。ここまできて漸く理解が進むようになってきた感じ。<br/>
１章　Iterator<br/>
２章　Adaptor<br/>
３章　Template Method まで。<br/>
<br/>
１９時ごろに帰宅し始め、２１時にゲーセン。<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_2504976.jpg" border="0" width="500" height="281"/></center><br/>
サイハテの感覚が少しずつつかめてきた。<br/>
<br/>
BEMANIも２クレ。１回目はreunionを74%。２回目は100%でクリア。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_251573.jpg" border="0" width="500" height="281"/></center>
        ]]></content> 
  </entry>  
  <entry> 
    <title>絶賛ひきこもりの一日</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17541333/"/>  
    <id>http://ddrer.exblog.jp/17541333/</id>  
    <issued>2012-04-30T23:59:00+09:00</issued>  
    <modified>2012-05-15T02:43:21+09:00</modified>  
    <created>2012-05-15T02:43:21+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>日常生活</dc:subject>  
    <content type="html"><![CDATA[ 
今日は休みだったので何をやったか思い出せない程度には・・・。<br/>
恐らく、タイピングゲームの開発をやりつつも、ぐだぐだしていたことは確かです。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_1595029.jpg" border="0" width="500" height="375"/></center><br/>
運動していた形跡はありました。
        ]]></content> 
  </entry>  
  <entry> 
    <title>最近は後ゲーセンが多い。</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17541293/"/>  
    <id>http://ddrer.exblog.jp/17541293/</id>  
    <issued>2012-05-01T23:54:00+09:00</issued>  
    <modified>2012-05-15T01:58:20+09:00</modified>  
    <created>2012-05-15T01:58:20+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>日常生活</dc:subject>  
    <content type="html"><![CDATA[ 
今日は１６時ぐらいまで講義、その後は少しジャグリングの練習に行きました。<br/>
戻ってきてから飯を食べようということでとんこつラーメンのお店へ。<br/>
割とこの味お気に入りかもしれません。<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_1562154.jpg" border="0" width="500" height="375"/></center><br/>
<br/>
その後はゲーセン。混み混みでした。<br/>
自分はDDRに並び、DDRを１クレでばてばて。<br/>
というかパネル間に微妙に隙間があって踏みづらいです。うーん。<br/>
その後はポップンをプレーし、後はリフレクとユビートを１クレずつ。<br/>
リフレクは友人のほうが強く、勝てる気がしなかったです。<br/>
iPadで復習せなあかんなあー。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_156536.jpg" border="0" width="500" height="281"/></center>
        ]]></content> 
  </entry>  
  <entry> 
    <title>仕事後ゲーセン。</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17541288/"/>  
    <id>http://ddrer.exblog.jp/17541288/</id>  
    <issued>2012-05-02T23:49:00+09:00</issued>  
    <modified>2012-05-15T01:53:35+09:00</modified>  
    <created>2012-05-15T01:53:35+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>日常生活</dc:subject>  
    <content type="html"><![CDATA[ 
今日は仕事に行きました。<br/>
お昼は白髪ネギ並。最近は全部並です。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_150372.jpg" border="0" width="500" height="375"/></center><br/>
<br/>
夜は友人とゲーセンへ。<br/>
まずはダーツ。<br/>
701できっちり勝利、スタンダードクリケットできっちり勝利、次の701で敗北、<br/>
最後の701は勝利といった感じ。調子はあんまり。たまに２回連続bullになる程度。<br/>
<br/>
その後はjubeat中心にプレー。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_1521117.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_1521868.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
終了後は地元ゲーセンでdiva。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_1525494.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_153197.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
残念ながらAtCoderには参加できませんでした。また機会があるときにでも。
        ]]></content> 
  </entry>  
  <entry> 
    <title>ナランハジャグリングまつり(1日目)</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17541278/"/>  
    <id>http://ddrer.exblog.jp/17541278/</id>  
    <issued>2012-05-03T23:43:00+09:00</issued>  
    <modified>2012-05-15T01:48:39+09:00</modified>  
    <created>2012-05-15T01:48:39+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>Juggling</dc:subject>  
    <content type="html"><![CDATA[ 
今日は朝は大雨で、行くのを辞めようかと思ったぐらいでしたが、<br/>
９時過ぎには止んできたので行ってきました。<br/>
<br/>
といってもワークショップにはほとんど参加せずに、<br/>
ボールジャグラーと主に交流していました。<br/>
後半はディアボロを少し教えてもらいましたが、<br/>
うーんやっぱりあんまり僕好みではない感じ。<br/>
<br/>
７ボールばくばく投げてるほうが楽しいです。<br/>
後は４ボールのキャリーを教えてもらいました。<br/>
これから少しずつ練習しようかと思います。<br/>
<br/>
ジャグリングセールでは５００円３個のボールが手に入る。<br/>
ぶっちゃけると、勝てると思わなかったので拍子抜けといった感じ。<br/>
家に帰ってから投げてみたら案外投げやすかった。<br/>
<br/>
昼飯も食べずにフリーパフォーマンスを見た。<br/>
カナダ人のカップルジャグラーがすごかった。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_148829.jpg" border="0" width="500" height="375"/></center><br/>
<br/>
１７時終了で、雨の中帰宅。<br/>
divaは１クレだけ。<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/15/46/f0019846_1471787.jpg" border="0" width="500" height="281"/></center>
        ]]></content> 
  </entry>  
  <entry> 
    <title>ナランハジャグリングまつり(2日目) Codeforces #118</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17537367/"/>  
    <id>http://ddrer.exblog.jp/17537367/</id>  
    <issued>2012-05-04T23:23:00+09:00</issued>  
    <modified>2012-05-14T03:58:23+09:00</modified>  
    <created>2012-05-14T03:35:07+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>codeforces</dc:subject>  
    <content type="html"><![CDATA[ 
今日も並んはジャグリングまつりに参加。<br/>
朝はクラブのワークショップに。<br/>
うん、やっぱり３つになるとほとんどできない。<br/>
<br/>
ボールの輪に入っていると、<br/>
7ボールのエンデュランスどうですかと声かけられたので、<br/>
久しぶりに参戦。できないのわかっていたけど。<br/>
結局まともに続かず終了。<br/>
ジャグリングセールに関しても、お金はほとんど使わないと決めていたのと、<br/>
勝利できなかったのとで何も買わず。<br/>
<br/>
10秒コンテストですが、うーん、まあ微妙なジャッジでした。<br/>
致し方ないのかもしれませんが・・・ね。<br/>
私だけでなく、知り合いも納得してなかったです。<br/>
<br/>
夕方までにかけてはディアボロなども触ってみました。<br/>
後はシャッフルに関しての極め方について、詳しい方に教えてもらいました。<br/>
<br/>
夜は友人と池袋のゲーセンへ。<br/>
さすがGW中、どこも混んでいて、プレーできる状況にありませんでした。<br/>
諦めてラーメン二郎へ。<br/>
これも、早めに行ったからよかったものの、後10分遅ければ高校生の団体のあとになり、<br/>
混み混みになっていました。<br/>
<br/>
さっそく食べる。が、思ったより箸が進まず、結局スープは飲まずに行きました。<br/>
歳かなあ・・・。<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_3273778.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
その後はmayoさんが代表のぁ～んの6周年記念記念イベントのニコ生を見ました。<br/>
テルさんとPocariさんの対談って、やっぱりいろいろな意味ですごい。<br/>
特にPocariさんがラスベガス中継とかありえん！と。<br/>
TypeRacerについて結構テルさんが熱く語ってました。<br/>
あれって今そんなに流行ってるのかーと最認識させられました。<br/>
後、キーボード紹介で金持ちーとか言われましたが、まったくの誤解です。<br/>
確かにリアフォ3台、HHKB Pro無刻印はありますが・・・。<br/>
<br/>
タイパー(過去形)だもの、キーボードに7万かけてなにがわるいっ！<br/>
<br/>
そして夜はcodeforcesへ。<br/>
<br/>
A問題　文字列が２つ与えられていて、<br/>
１つめから１回だけ入れ替えを行なって２つ目にできるかどうかという話。入れ替え回数が無制限でも、Pretestは通ってしまったので、それでhackされた。<br/>
直したソースを。<br/>
<br/>
import java.util.Scanner;<br/>
<br/>
    public class Test {<br/>
            public static void main(String args[]){<br/>
            Scanner input = new Scanner(System.in);<br/>
                    String s = input.nextLine();<br/>
                    String t = input.nextLine();<br/>
                    System.out.println(maximum(s,t));<br/>
            }<br/>
            <br/>
          public static String maximum(String s,String t){<br/>
          int[] ss = new int[26];<br/>
          int[] ts = new int[26];<br/>
          for(int i = 0 ; i < s.length() ; i++){<br/>
          ss[s.charAt(i)-97]++;<br/>
          }<br/>
          for(int i = 0 ; i < t.length() ; i++){<br/>
          ts[t.charAt(i)-97]++;<br/>
          }<br/>
          boolean isng = false;<br/>
          for(int i = 0 ; i < ss.length ; i++){<br/>
          if(ss[i] == ts[i]){<br/>
          continue;<br/>
          }else{<br/>
          isng = true;<br/>
          break;<br/>
          }<br/>
          }<br/>
      int differ = 0;<br/>
          if(s.length() != t.length()){<br/>
          isng = true;<br/>
          }else{<br/>
          for(int i = 0 ; i < s.length(); i++){<br/>
          if(s.charAt(i) != t.charAt(i))differ++;<br/>
          }<br/>
          }<br/>
          if(isng || differ > 2){<br/>
          return "NO";<br/>
          }else{<br/>
          return "YES";<br/>
          }<br/>
          }<br/>
    }<br/>
<br/>
<br/>
B問題。前半戦がt1、後半戦がt2与えられていて、<br/>
前半戦と後半戦の間に、値がk%になってしまう。<br/>
最大値となるように戦略を考え、値の大きい順に、人数番号も含めて提出せよ。<br/>
<br/>
<br/>
import java.math.BigDecimal;<br/>
import java.util.Arrays;<br/>
import java.util.Scanner;<br/>
<br/>
    public class Test {<br/>
            public static void main(String args[]){<br/>
            Scanner input = new Scanner(System.in);<br/>
                   int n = input.nextInt();<br/>
                   int t1 = input.nextInt();<br/>
                   int t2 = input.nextInt();<br/>
                   int k = input.nextInt();<br/>
                   int[] a = new int[n];<br/>
                   int[] b = new int[n];<br/>
                   for(int i = 0 ; i < n ; i++){<br/>
                   a[i] = input.nextInt();<br/>
                   b[i] = input.nextInt();<br/>
                   }<br/>
                    maximum(n,t1,t2,k,a,b);<br/>
            }<br/>
            <br/>
          public static void maximum(int n,int t1,int t2,int k,int[] a,int[] b){<br/>
          double[] swapped = new double[n];<br/>
          for(int i = 0 ; i < n ; i++){<br/>
          swapped[i] = Math.max((double)b[i]*t1*((double)(100-k)/100)+a[i]*t2,(double)a[i]*t1*((double)(100-k)/100)+b[i]*t2);<br/>
          }<br/>
          while(true){<br/>
              double max = -1;<br/>
              int index = -1;<br/>
              boolean flag = true;<br/>
              for(int i = 0 ; i < swapped.length ; i++){<br/>
              if(max < swapped[i]){<br/>
              index = i;<br/>
              flag = false;<br/>
              max = swapped[i];<br/>
              }<br/>
              }<br/>
              if(flag)break;<br/>
              BigDecimal bd = new BigDecimal(max);<br/>
              BigDecimal bd4 = bd.setScale(2, BigDecimal.ROUND_HALF_UP);<br/>
              System.out.println((index+1)+" "+bd4);<br/>
              swapped[index] = -1;<br/>
          }<br/>
          }<br/>
    }<br/>
<br/>
<br/>
戦略は両方共計算してみて大きい方を取る。それだけ。後は誤差に気をつける。<br/>
インデックスを記憶してソート。<br/>
<br/>
C問題<br/>
上三角形の中に下三角形を、下三角形の中に上三角形をn回入れるという動作を行う。上三角形となるような数を求めよ。<br/>
これは法則を探して漸化式を使って式を簡略化できる。<br/>
譬えばa[n]をn回目における上三角形の数、b[n]をn回目における下三角形の数とすると<br/>
<br/>
a[n+1] = 3*a[n]+b[n]<br/>
b[n+1] = a[n]+3*b[n]<br/>
両方を足すと　a[n+1]+b[n+1] = 4*(a[n]+b[n])となる。<br/>
a[n]+b[n] = 4^n<br/>
両方を引くと　a[n+1]-b[n+1] = 2*(a[n]-b[n])となる。<br/>
a[n]-b[n] = 2^n<br/>
これらを足すと　2*a[n] = 4^n+2^n = 2^n(2^n+1)<br/>
a[n] = 2^n(2^n+1)/2　が答えとなる。<br/>
<br/>
つまり、n=1 で答えが2*3/2 = 3 、 n=2 で答えが4*(4+1)/2 = 10　となり、辻褄が合う。<br/>
<br/>
後ほどmod(1000000007)をしたら通った。死にたい。<br/>
<br/>
import java.math.BigDecimal;<br/>
import java.math.BigInteger;<br/>
import java.util.Arrays;<br/>
import java.util.Scanner;<br/>
<br/>
    public class Test {<br/>
            public static void main(String args[]){<br/>
            Scanner input = new Scanner(System.in);<br/>
                   String s = input.nextLine();<br/>
                    maximum(s);<br/>
            }<br/>
            <br/>
          public static void maximum(String s){<br/>
          BigInteger a = new BigInteger(s);<br/>
          BigInteger b = new BigInteger("2");<br/>
          BigInteger mode = new BigInteger("1000000007");<br/>
          BigInteger d = new BigInteger("1");<br/>
          //BigInteger c = b.modPow(a,mode);<br/>
          BigInteger cs = b.modPow(a,mode);<br/>
          //System.out.println((c.multiply(c.add(d))).divide(b));<br/>
          if(cs.multiply(cs.add(d)).compareTo(d) <= 0){<br/>
              System.out.println(cs.multiply(cs.add(d)).mod(mode));<br/>
          }else{<br/>
          System.out.println(cs.multiply(cs.add(d)).divide(b).mod(mode));<br/>
          }<br/>
          <br/>
              //1000000007<br/>
          }<br/>
<br/>
    }<br/>
<br/>
<br/>
結局Bしか合っていないのでレートはガタ落ちです。泣きそう。
        ]]></content> 
  </entry>  
  <entry> 
    <title>TODやったりプログラミングしたり</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17537352/"/>  
    <id>http://ddrer.exblog.jp/17537352/</id>  
    <issued>2012-05-05T23:15:00+09:00</issued>  
    <modified>2012-05-14T03:59:30+09:00</modified>  
    <created>2012-05-14T03:11:14+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>日常生活</dc:subject>  
    <content type="html"><![CDATA[ 
朝は、自分の作っているタイピングゲームの<br/>
根本的な構成の見直しを行いました。<br/>
何かといいますと、複数ワードに対応するようにするにあたって、今の構成だと問題が起こるということです。<br/>
<br/>
今までの構成<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_2122237.png" border="0" width="500" height="145"/></center><br/>
<br/>
つまり、ワードの情報をすべてキー判別クラスに持たせていました。<br/>
この調子だと、複数ワードが出現した際に、それぞれの入力情報をもたせるのは厳しいです。<br/>
あくまでも、キー判別クラスは、そのキー判別だけを行うようにして、<br/>
ワードごとの情報は別のクラスで管理することが望ましいと。<br/>
後は問題生成クラスを作り、問題の生成過程や、個々にアニメーションで動かすことも考えてもよさそうです。ということで、下のような構成を考えました。<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_244589.png" border="0" width="500" height="348"/></center><br/>
<br/>
つまり、問題生成アルゴリズム用のクラスを作り、<br/>
その問題の状態を管理するクラスを作り、<br/>
機能の分離をはかりました。<br/>
パネルで今入力しているワードがどれなのかを判別し、<br/>
問題の状態をキー判別クラスに投げて、判定させるといった具合です。<br/>
<br/>
これにより、自分のやりたいことの実現に近くなって来ました。<br/>
<br/>
お昼は渋谷で話題の３５０円ピザ、ナポリスに行きました。<br/>
３５０円のピザではなく、６５０円の頼みましたけどね！<br/>
窯焼きピザが割と本格的でびっくりしました。<br/>
手軽に食べられるファストフード店といった具合です。<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_2515868.jpg" border="0" width="500" height="375"/></center><br/>
<br/>
その後は偶然にも渋谷TODで対戦を申し込まれたので、挑みました。(2P側)<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_2533938.jpg" border="0" width="500" height="375"/></center><br/>
<br/>
久しぶり過ぎて、ワード慣れが全然ダメでした。<br/>
土星語にしちゃったり、クイズで太陽にほえろ！シリーズが全然わからなかったりと。<br/>
<br/>
その後は渋谷をふらふら。しかし暑いので<br/>
DDRをしようと思ったものの、渋谷会館に行くことは諦める。<br/>
ヒカリエが途中にありましたが、かなり大きいですね。<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_2571074.jpg" border="0" width="500" height="375"/></center><br/>
甘いモノが食べたかったのでお近くのドトールで休憩。<br/>
セットで６００円だったかと思います。<br/>
<br/>
その後は再びTODへ突撃。１位を取りに行こうということで。<br/>
<br/>
１回目、太陽にほえろ！で撃沈。１クレ失敗（コンティニューせず）<br/>
２回目<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_2585132.jpg" border="0" width="500" height="375"/></center><br/>
<br/>
３回目<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_2591786.jpg" border="0" width="500" height="375"/></center><br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_259357.jpg" border="0" width="500" height="375"/></center><br/>
８０００いかずに１位です。<br/>
<br/>
その他もろもろ<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_3152471.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_3132162.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_3134958.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
帰宅後は、Google Code Jam Round1 Bに備えて若干眠る。<br/>
<br/>
そして１B構成をみる。これは、C問題が一番簡単に実装できるのかなー、やってみようと。<br/>
問題内容はこんな感じ。<br/>
・整数の配列が与えられている<br/>
・配列の要素を足した和を考える。<br/>
・足した和が同じ値になる組み合わせがあれば出力せよ<br/>
・smallは20個、largeは500個の配列とする。<br/>
<br/>
smallに関しては、全部調べてもいけそうということで全部調べる。<br/>
しかし、結構書き方に手間取ってしまった。<br/>
２進数でフラグ管理するかなーという方法をとったことで、結構面倒な事に。<br/>
当然全探索なのでLarge解は投げられるはずもなく。（そもそも提出していない）<br/>
<br/>
import java.util.*;<br/>
import java.io.*;<br/>
<br/>
public class Test {<br/>
<br/>
public static void main(String args[]) throws Exception{<br/>
Scanner input = new Scanner(new FileReader("./iothings/C-small-attempt.in"));<br/>
PrintWriter pw = new PrintWriter(new FileWriter("./iothings/output.txt"));<br/>
        int n = input.nextInt();<br/>
        for(int i = 0 ; i < n ; i++){<br/>
        int n2 = input.nextInt();<br/>
        int[] number = new int[n2];<br/>
        for(int j = 0 ; j < number.length ; j++){<br/>
        number[j] = input.nextInt();<br/>
        }<br/>
            pw.println("Case #"+(i+1)+":");<br/>
            num(n2,number,pw);<br/>
        }<br/>
input.close();<br/>
pw.flush();<br/>
pw.close();<br/>
}<br/>
    <br/>
    public static void num(int n,int[] number,PrintWriter pw){<br/>
    int num = 1;<br/>
    ArrayList list = new ArrayList();<br/>
    while(!Integer.toBinaryString(num).equals("100000000000000000000")){<br/>
    String s = Integer.toBinaryString(num);<br/>
    if(s.length() != 20){<br/>
    int zerolen = 20-s.length();<br/>
    String zero = "";<br/>
    for(int i = 0 ; i < zerolen ; i++){<br/>
    zero += "0";<br/>
    }<br/>
        s = zero+s;<br/>
    }<br/>
    //System.out.println(s);<br/>
    int sum = 0;<br/>
        ArrayList prelist = new ArrayList();<br/>
    for(int i = 0 ; i < s.length(); i++){<br/>
    if(s.charAt(i) == '1'){<br/>
    sum+=number[i];<br/>
    prelist.add(number[i]);<br/>
    //System.out.println(sum+"sum"+i);<br/>
    }<br/>
    }<br/>
    if(!list.contains(sum)){<br/>
    list.add(sum);<br/>
    }else{<br/>
    for(int i = 0 ; i < list.size(); i++){<br/>
    if(list.get(i) == sum){<br/>
    String nums = Integer.toBinaryString(i+1);<br/>
        if(nums.length() != 20){<br/>
        int zerolen = 20-nums.length();<br/>
        String zero = "";<br/>
        for(int j = 0 ; j < zerolen ; j++){<br/>
        zero += "0";<br/>
        }<br/>
            nums = zero+nums;<br/>
        }<br/>
        ArrayList kakolist = new ArrayList();<br/>
    for(int j = 0 ; j < nums.length() ; j++){<br/>
    if(nums.charAt(j) == '1'){<br/>
    kakolist.add(number[j]);<br/>
    }<br/>
    }<br/>
    for(int j = 0 ; j < prelist.size(); j++){<br/>
    if(j != prelist.size()-1){<br/>
    pw.print(prelist.get(j)+" ");<br/>
    }else{<br/>
    pw.println(prelist.get(j));<br/>
    }<br/>
    }<br/>
    for(int j = 0 ; j < kakolist.size(); j++){<br/>
    if(j != kakolist.size()-1){<br/>
    pw.print(kakolist.get(j)+" ");<br/>
    }else{<br/>
    pw.println(kakolist.get(j));<br/>
    }<br/>
    }<br/>
    break;<br/>
    }<br/>
    }<br/>
    break;<br/>
    }<br/>
    num++;<br/>
    }<br/>
    }<br/>
}<br/>
<br/>
４０分ほどかかりました。<br/>
<br/>
次にA問題をみる。<br/>
・演者ごとに得点があたえられている<br/>
・その得点の合計の数％を演者に加える<br/>
・最低点の人が落ちる<br/>
・最低点の人が複数入れば全員落ちない<br/>
・全員落ちないとき、パーセンテージの振り分け方を求めよ(全体100%)<br/>
<br/>
これはいろいろ試行錯誤しましたが、解けませんでした。結果は6点で2834位。<br/>
いよいよRound1Cが最後のチャンスとなってしまいました。<br/>
去年と同じ末路を辿らないためにも、1Cで予選通過を目指します。<br/>

        ]]></content> 
  </entry>  
  <entry> 
    <title>Google Code Jam 2012 Round1　突破！</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17537306/"/>  
    <id>http://ddrer.exblog.jp/17537306/</id>  
    <issued>2012-05-06T23:04:00+09:00</issued>  
    <modified>2012-05-14T04:00:29+09:00</modified>  
    <created>2012-05-14T02:12:29+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>日常生活</dc:subject>  
    <content type="html"><![CDATA[ 
今日はコーディングづくしの日でした。Round1 Bに関しては、同日１時に行われましたが、<br/>
これは5/5に書きます。<br/>
<br/>
ということで後がなくなった朝から夕方にかけては、タイピングゲームの開発を続行しました。<br/>
昨日直しきれなかった部分です。この日は非常に暑かったので、リビングで作業しました。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_2371435.jpg" border="0" width="500" height="375"/></center><br/>
室内は３０度オーバー。<br/>
更に、Tabキーでのワードの切り替え、Escキーでのカーソル解除、<br/>
また、複数ワードがある場合、入力したい先頭のワードを判別する仕組みを導入しました。<br/>
苦労したところとしましては、枠を作るところでしょうか。<br/>
座標を正確に作らないといけないのが苦しいです。<br/>
<br/>
夕方には天気が一時的に急激に悪化して、ひょうが降って来ました。<br/>
つくばに関していえば、竜巻が発生し、甚大な被害をもたらしたようです。<br/>
<br/>
さて、リリース直後に、入力の柔軟性が反映されていない、nullになるなどのバグがありましたが、<br/>
１８時にGoogle Code Jamを控えているので、後ほど訂正といったところで。<br/>
<br/>
まず、問題を見通す。うーん、A問題はsmallの得点が高くて難しそうだけど、<br/>
largeの得点も一緒だから、ここからやるのがよさそうかなー？<br/>
<br/>
ということでAから見る。どうやらダイヤモンドインヘリタンスという関係があって、<br/>
AからBへ向かうまでの経路が複数あれば、ダイヤモンドインヘリタンスというらしい。<br/>
んで、このダイヤモンドインヘリタンスが有るかどうかに関して判別するという問題でした。<br/>
最初はこれ、再帰使わないと無理じゃない・・・。と思い、絶望していました。<br/>
そして、その後にこれ、Queue使えばいけるんじゃないかと思いたち、<br/>
昔の記憶をたどってプログラミングする。<br/>
つまり、スタートの状態をpushして、ゴールに行くまでに、<br/>
既に通った（フラグをtrue）にした経路があればYesを返せば良いということ。<br/>
これで組んでみたらなんとかできました。<br/>
と思い、提出してみるとwrong answer。<br/>
なぜだー！と思い、問題文を確認。別にスタートが1からというふうに決まっているわけではなく、<br/>
これはただのCase:#1からですよということだったので、<br/>
全てに関してpushして判定してみればいいんじゃないかということで、for文増やす。<br/>
無事correctして、歓喜。Largeは時間大丈夫かなーという不安もありましたが、<br/>
まー１０００ノードぐらいなら実験やったことあるしなんとでもなるでしょうという自信があったので、<br/>
そのまま実行。これがうまくいって、提出終了。<br/>
<br/>
import java.util.*;<br/>
import java.io.*;<br/>
<br/>
public class Test {<br/>
<br/>
public static void main(String args[]) throws Exception{<br/>
Scanner input = new Scanner(new FileReader("./iothings/A-small-attempt1.in"));<br/>
PrintWriter pw = new PrintWriter(new FileWriter("./iothings/output.txt"));<br/>
        int n = input.nextInt();<br/>
        for(int i = 0 ; i < n ; i++){<br/>
        int n2 = input.nextInt();<br/>
        boolean[][] con = new boolean[n2][n2];<br/>
        for(int j = 0 ; j < n2 ; j++){<br/>
        int r = input.nextInt();<br/>
        for(int k = 0 ; k < r ; k++){<br/>
        int l = input.nextInt();<br/>
        con[j][l-1] = true;<br/>
        }<br/>
        }<br/>
            pw.println("Case #"+(i+1)+": "+num(n2,con));<br/>
        }<br/>
input.close();<br/>
pw.flush();<br/>
pw.close();<br/>
}<br/>
    <br/>
    public static String num(int n2,boolean[][] con){<br/>
    Queue q = new PriorityQueue();<br/>
    for(int k = 0 ; k < con.length ; k++){<br/>
    q.add(k);<br/>
    boolean[] isok = new boolean[n2];<br/>
    isok[k] = true;<br/>
    while(!q.isEmpty()){<br/>
    int st = q.poll();<br/>
    for(int i = 0 ; i < con[st].length ; i++){<br/>
    if(con[st][i] == true){<br/>
    if(isok[i] == true){<br/>
    return "Yes";<br/>
    }<br/>
    q.add(i);<br/>
    isok[i] = true;<br/>
    }<br/>
    }<br/>
    }<br/>
    }<br/>
    return "No";<br/>
    }<br/>
}<br/>
<br/>
これは結構綺麗に書けたなーと自分でも思っています。<br/>
<br/>
次にB問題を見る。文章長いし、なんか物理系の問題そう・・・。<br/>
だるい、無理！ということでC問題に移動。<br/>
<br/>
C問題は、箱が数種類あって、順番に連続で何個か流れる。<br/>
商品が数種類あって、順番に連続で何個か流れる。<br/>
<br/>
使える操作は以下のとおり<br/>
・箱を捨てる<br/>
・商品を捨てる<br/>
・箱と商品の番号が一致したときにのみ格納できる<br/>
<br/>
格納できる最大数を求めよ<br/>
<br/>
という問題。ちなみにsmallはかなり条件が緩く、流れてくるものは最大でも３区分だけです。<br/>
これはどうやって解けばいいんだろうと、相当悩みました。<br/>
そして何度もwronganswerを出しました。<br/>
時間が刻々と過ぎていき、順位は１２００位後半。もうだめか・・・と思っていたが、<br/>
smallは全探索でも十分いけそうということで、すべての状態に関してQueueを使って<br/>
網羅していった。結果、correctし、７００位代へ。後２５分といったところ。<br/>
<br/>
import java.util.*;<br/>
import java.io.*;<br/>
<br/>
public class Test {<br/>
<br/>
public static void main(String args[]) throws Exception{<br/>
Scanner input = new Scanner(new FileReader("./iothings/C-small-attempt2.in"));<br/>
PrintWriter pw = new PrintWriter(new FileWriter("./iothings/output.txt"));<br/>
        int n = input.nextInt();<br/>
        for(int i = 0 ; i < n ; i++){<br/>
        int n2 = input.nextInt();<br/>
        int m = input.nextInt();<br/>
        long a[] = new long[n2];<br/>
        int A[] = new int[n2];<br/>
        long b[] = new long[m];<br/>
        int B[] = new int[m];<br/>
        for(int j = 0 ; j < n2 ; j++){<br/>
        a[j] = input.nextLong();<br/>
        A[j] = input.nextInt();<br/>
        }<br/>
        for(int j = 0 ; j < m ; j++){<br/>
        b[j] = input.nextLong();<br/>
        B[j] = input.nextInt();<br/>
        }<br/>
            pw.println("Case #"+(i+1)+": "+num(n2,m,a,A,b,B));<br/>
        }<br/>
input.close();<br/>
pw.flush();<br/>
pw.close();<br/>
}<br/>
    <br/>
    public static long num(int n2,int m,long[] a,int[] A,long[] b,int[] B){<br/>
    long max = 0;<br/>
    Queue q = new PriorityQueue();<br/>
    q.add(0+","+0+","+0+","+a[0]+","+b[0]);<br/>
    while(!q.isEmpty()){<br/>
    String[] sl = q.poll().split(",");<br/>
        int aindex = Integer.parseInt(sl[0]);<br/>
        int bindex = Integer.parseInt(sl[1]);<br/>
        long sum = Long.parseLong(sl[2]);<br/>
        long rest = Long.parseLong(sl[3]);<br/>
        long restb = Long.parseLong(sl[4]);<br/>
    if(aindex == a.length || bindex == b.length){<br/>
    max = Math.max(max,sum);<br/>
    }else{<br/>
    if(A[aindex] == B[bindex]){<br/>
    if(rest > restb){<br/>
    if(bindex+1 != b.length){<br/>
    q.add(aindex+","+(bindex+1)+","+(sum+restb)+","+(rest-restb)+","+b[bindex+1]);<br/>
    }else{<br/>
        q.add(aindex+","+(bindex+1)+","+(sum+restb)+","+(rest-restb)+","+0);<br/>
    }<br/>
    }else{<br/>
    if(aindex+1 != a.length){<br/>
    q.add((aindex+1)+","+bindex+","+(sum+rest)+","+a[aindex+1]+","+(restb-rest));<br/>
    }else{<br/>
    q.add((aindex+1)+","+bindex+","+(sum+rest)+","+0+","+(restb-rest));<br/>
    }<br/>
    }<br/>
    }else{<br/>
    if(aindex+1 != a.length){<br/>
    q.add((aindex+1)+","+bindex+","+sum+","+a[aindex+1]+","+restb);<br/>
    }else{<br/>
    q.add((aindex+1)+","+bindex+","+sum+","+0+","+restb);<br/>
    }<br/>
    if(bindex+1 != b.length){<br/>
    q.add(aindex+","+(bindex+1)+","+sum+","+rest+","+b[bindex+1]);<br/>
    }else{<br/>
    q.add(aindex+","+(bindex+1)+","+sum+","+rest+","+0);    <br/>
    }<br/>
    }<br/>
    }<br/>
    }<br/>
    return max;<br/>
    <br/>
    }<br/>
}<br/>
<br/>
Largeもダメ元でやってみましたが、さすがに状態数が多すぎて、とてもじゃないですが<br/>
８分内に終わることはありませんでした。時間切れ。(Time Expired)<br/>
これを通したことで、相当満足してしまったのと、疲れきってしまったので、<br/>
B問題はほとんど読む気力がありませんでした。<br/>
<br/>
それよりかは、順位をきにし始め、どこまで落ちるか、１０００位以内に入ってくれ・・・と願うばかり。<br/>
結局残り０分のときには９４５位でした。<br/>
その後、状態を確認したところ、AのLargeが通っていました！<br/>
結構な人数が落ちていて、最終的に８２１位でした。<br/>
<br/>
Google Code Jam Round 1突破！<br/>
これは、世界上位３０００人に残ったことを意味します。嬉しすぎる。<br/>
次回R2で１０００位以内を取ると、Tシャツをゲットとなります。<br/>
５００位以上で予選通過です（かなり厳しい）<br/>
<br/>
Google Code Jam 2012についておさらい<br/>
Qualification Round 15193/17802 日本人610/696<br/>
Round 1 3000/15193　日本人 208/610<br/>
<br/>
倍率３倍を通過した気分です。この日は非常に満足したため、<br/>
もはや夜は遊んでいました。（バグは修正した上で。）<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_238122.jpg" border="0" width="480" height="640"/></center><br/>
中華急行　hard　のフルコンとか。
        ]]></content> 
  </entry>  
  <entry>
    <title type="text"><![CDATA[PR: 抽選で8組最大40名をアウトドアイベントに招待]]></title>
    <link rel="alternate" type="text/html" href="http://rss.rssad.jp/rss/ad/db0wKyRUD0f./TzUJrYv.0zG9?type=2&amp;ent=af1152917c2e16dc96398f4abfb0a940"/>
    <content type="html"><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/db0wKyRUD0f./TzUJrYv.0zG9?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://rss.rssad.jp/rss/img/db0wKyRUD0f./TzUJrYv.0zG9?type=3&ent=af1152917c2e16dc96398f4abfb0a940"/></a></td></tr><tr><td align="left" valign="top" > 1泊2日のアウトドアイベントFord SUV VILLAGEの募集がスタート！ </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div>]]></content>
    <created>2012-05-14T02:12:29+09:00</created>
    <modified>2012-05-14T04:00:29+09:00</modified>
    <issued>2012-05-06T23:04:00+09:00</issued>
    <author>
      <name>rssad.jp</name>
    </author>
    <id>af1152917c2e16dc96398f4abfb0a940</id>
  </entry>
  <entry> 
    <title>慌ただしい一日</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17537296/"/>  
    <id>http://ddrer.exblog.jp/17537296/</id>  
    <issued>2012-05-12T23:58:00+09:00</issued>  
    <modified>2012-05-14T02:03:43+09:00</modified>  
    <created>2012-05-14T02:03:43+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>日常生活</dc:subject>  
    <content type="html"><![CDATA[ 
今日は午前中は少し日記を書きました。３日分が重いせいで、9,10,11日を書くだけで終了。<br/>
お昼は某所で食事会に参加しました。<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_202447.jpg" border="0" width="500" height="375"/></center><br/>
<br/>
料理はとても多かったですね。あんまり食べられませんでしたし、時間もありませんでした。<br/>
１５時ごろに切り上げて、２時間かけて都内某所へ。<br/>
<br/>
そこで、仕事要件について少々お話をして、結局これが長くなって２０時ぐらいまで。<br/>
渋谷TODに立ち寄って、２クレ。うん、最近立ち寄り過ぎだわ・・・。<br/>
これからたまに立ち寄ることになりそうなので、TODタグたちあげてみます。
        ]]></content> 
  </entry>  
  <entry>
    <title type="text"><![CDATA[PR: FXなら、約定力No.1のマネーパートナーズ]]></title>
    <link rel="alternate" type="text/html" href="http://rss.rssad.jp/rss/ad/db0wKyRUD0f./CI3M.aKHTP6e?type=2&amp;ent=a0f52b93b80a9b088f7256bff983697e"/>
    <content type="html"><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/db0wKyRUD0f./CI3M.aKHTP6e?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://rss.rssad.jp/rss/img/db0wKyRUD0f./CI3M.aKHTP6e?type=3&ent=a0f52b93b80a9b088f7256bff983697e"/></a></td></tr><tr><td align="left" valign="top" > 大好評FXスマホアプリを、今すぐ無料ダウンロード！ </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div>]]></content>
    <created>2012-05-14T02:03:43+09:00</created>
    <modified>2012-05-14T02:03:43+09:00</modified>
    <issued>2012-05-12T23:58:00+09:00</issued>
    <author>
      <name>rssad.jp</name>
    </author>
    <id>a0f52b93b80a9b088f7256bff983697e</id>
  </entry>
  <entry> 
    <title>仕事後に渋谷TODへ。</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17537290/"/>  
    <id>http://ddrer.exblog.jp/17537290/</id>  
    <issued>2012-05-13T23:51:00+09:00</issued>  
    <modified>2012-05-14T01:58:12+09:00</modified>  
    <created>2012-05-14T01:58:12+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>日常生活</dc:subject>  
    <content type="html"><![CDATA[ 
今日は朝っぱらから仕事。といっても新しいジャンル。<br/>
XAMPPを導入し、phpMyAdminを使ったり、redmineを使ったり、<br/>
Codeigniterとdx_authを使ったりと。<br/>
まず最初にぶち当たった問題としては、apacheが起動しないという問題。<br/>
<br/>
原因はSkypeでした。音声着信に80番ポートを利用しているため、<br/>
apacheで使えなくなってしまうと。<br/>
Skypeのほうでポート番号を設定することが、楽で、<br/>
もちろんapache側のほうからでも設定は可能。<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_154248.jpg" border="0" width="500" height="375"/></center><br/>
お昼はマグロ漬け丼のセットです。<br/>
<br/>
４時に切り上げて渋谷のTODへ。<br/>
２章と３章で助けないことによるルート変化を楽しみました。<br/>
スコアが６章だけ反映されると知って、<br/>
無謀にも８体ノーミスを全力で挑戦してみたものの、１ワードしか取れず。<br/>
３プレー中、１回目はなんと１コインできずに終了してしまった。<br/>
<br/>
ぱとらっしゅぼくはもうつかれたよ<br/>
<br/>
結局３クレやって終了。地元ゲーセンへ。<br/>
ここでは、diva１クレ、ビーマニ１クレ、ミュージックガンガン２　１クレ、バスケもどき１クレをプレー。<br/>
特に目ぼしい更新はなかった。<br/>
<br/>
帰宅後は、非常に強い眠気に襲われて、２１：３０－２３：３０ぐらいまで寝ました。<br/>
<br/>
ちなみに　TOD　攻略と書くとテイルズのほうが出ますし、<br/>
TOD 攻略　分岐　とかでも一緒です。
        ]]></content> 
  </entry>  
  <entry> 
    <title>GWなんてなかった。マルチスレッドのお勉強。</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17537221/"/>  
    <id>http://ddrer.exblog.jp/17537221/</id>  
    <issued>2012-05-07T23:09:00+09:00</issued>  
    <modified>2012-05-14T01:19:46+09:00</modified>  
    <created>2012-05-14T01:19:46+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>日常生活</dc:subject>  
    <content type="html"><![CDATA[ 
終わりましたねー／(^o^)＼<br/>
今日は夕方頃からタイピングゲームの作りこみに。<br/>
音を導入しようと思い、AudioClipだかなんかを使ってみたが、<br/>
これはループ再生などが効かない感じだったので、<br/>
Java Sound APIを使う必要性に駆られました。<br/>
<br/>
どうやら結構導入には手間がかかるらしく、調べてみると、<br/>
簡単に再生、停止ができるライブラリを作った人がいらっしゃったので、<br/>
それを流用することにしました。助かります。<br/>
<br/>
これに停止用のメソッドを追加して一安心。<br/>
導入してみると・・・。<br/>
音に処理が奪われて、文字が消えて行くのが音が鳴り終わった後に一気に消えていく・・・！<br/>
ということで、爽快なタイピングを実現できそうにない感じでした。<br/>
<br/>
思い当たる節としては、シングルスレッドで回すことにより、処理を乗っ取られるということでしょうか。<br/>
ということで急遽マルチスレッドの勉強をする必要があると感じ、Javaスレッド完全制覇 (標準プログラマーライブラリ) をお借りして帰りました。<br/>
<br/>
後は朗報です。体重がなんと87.85kgまで減少しました。<br/>
WiiFitで2kg以上の差がありますが続けますか？と出るぐらいで、<br/>
あちゃー、GW中に太ったかーと思いましたが、そんなことはなかったようです。
        ]]></content> 
  </entry>  
  <entry> 
    <title>説明会とかゲーセンとか</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17537192/"/>  
    <id>http://ddrer.exblog.jp/17537192/</id>  
    <issued>2012-05-08T23:52:00+09:00</issued>  
    <modified>2012-05-14T01:05:37+09:00</modified>  
    <created>2012-05-14T01:05:37+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>日常生活</dc:subject>  
    <content type="html"><![CDATA[ 
今日は午前中は聴講、午後はとある何かの説明会に参加していました。<br/>
終わったのは１８時過ぎ、この後友人とゲーセンへ向かいました。<br/>
その前にラーメンをということで。<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/14/46/f0019846_0553346.jpg" border="0" width="500" height="375"/></center><br/>
<br/>
腹ごしらえをしてゲーセンへ。<br/>
DDRは高校生が占拠していてなんかアレでしたが、他の音ゲーも相当こんでいたので、<br/>
まずはDDRをしました。予想以上に疲れました。<br/>
その後はビーマニ２クレ、リフレク１クレの合計４クレで終了。<br/>
混んでいてあまりできませんでした。<br/>
<br/>
reunionがクリアできなかったなどと・・・。
        ]]></content> 
  </entry>  
  <entry> 
    <title>TopCoder SRM 542,行きつけのゲーセンが閉店</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17530781/"/>  
    <id>http://ddrer.exblog.jp/17530781/</id>  
    <issued>2012-05-09T23:32:00+09:00</issued>  
    <modified>2012-05-12T11:01:57+09:00</modified>  
    <created>2012-05-12T11:01:37+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>TopCoder</dc:subject>  
    <content type="html"><![CDATA[ 
今日は仕事。といいたいところですが、<br/>
少しずらしていただいて、TopCoder SRM542に参戦しました。<br/>
<br/>
easy。うさぎがn引きいて、仕事効率が与えられている。<br/>
平均仕事効率を求めよという問題。<br/>
まず0-1要素と1-0要素といったものは一致していると与えられているので、<br/>
調べるのは半分で良い。（全部調べて最後に２で割っても一緒）<br/>
<br/>
後は合計していってそれをカウントしていって割るだけ。<br/>
何故か０のときにカウントしないソースを書いている人が居たので、<br/>
challenge対象でしたが、残念なことにとろうとしたら取られました。<br/>
たとえば<br/>
0 0<br/>
0 0<br/>
で0のときカウントしないソースを書いてしまうと、<br/>
0/0となり、これはバグの温床となります。つまり0除算が起こってしまうのです。<br/>
242.71と、比較的早解きができました。というより他の問題が難しかったので<br/>
早解きの回となりました。<br/>
<br/>
public class WorkingRabbits {<br/>
 <br/>
  public double getEfficiency(String[] profit) {<br/>
    double count = 0;<br/>
    double sum = 0;<br/>
    for(int i = 0 ; i < profit.length ; i++){<br/>
      for(int j = i+1 ; j < profit[i].length(); j++){<br/>
        count++;<br/>
        sum += (profit[i].charAt(j))-48;<br/>
      }<br/>
    }<br/>
    return sum/count;<br/>
  }<br/>
 <br/>
}<br/>
<br/>
medium<br/>
高さと幅の二次元のフィールドが与えられていて、<br/>
そこで３点を決める。<br/>
この３点は、x,y座標ともに一致しない座標である。<br/>
移動にはユークリッド距離分の時間が必要である。<br/>
最小許容時間から最大許容時間の間でいけるルートが何通りあるか計算せよ。<br/>
数が多くなるのでmodで割ることも必須。<br/>
<br/>
これは、思いついたら解けるといった類の数学的な問題ですが、<br/>
図で色々書いてみて１時間近く考えてもまったく解けませんでした。<br/>
くやしいのう・・・。<br/>
<br/>
hard<br/>
問題開いただけ。こっち見たほうがよかったかもね。<br/>
<br/>
ということで昼頃出勤。時間もないのでカップヌードルで済ませました<br/>
夜はゲーセンへ。しかし、その行きつけだったゲーセンに5/27閉店のお知らせが。<br/>
<br/>
次はどこを探せばいいのやら、まったくもって検討がつかない状態です。<br/>
<br/>
DDRはDiamond dustを粘着。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_10515385.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
jubeatは何曲かフルコン。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_1053350.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_10531381.jpg" border="0" width="480" height="854"/></center><br/>
<br/>
満足したので帰る。<br/>
地元ゲーセンでdivaをやると、コンテストが開催されていたのでつい。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_10535234.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_1054773.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_10541670.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_10542887.jpg" border="0" width="500" height="281"/></center><br/>
fine0!<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_10544255.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_10545235.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
ということで少しまたタイピングゲームに使っている技術（？）について。<br/>
<br/>
スレッドをwhile(true)でぶんぶん回していると、リソースを食ってしまうので、<br/>
wait()で待たせて、どこかでnotifyしてあげるという手法が有効です。<br/>
無名クラスで書きます。<br/>
<br/>
Thread th = new Thread(){<br/>
    public void run(){<br/>
         synchronized(this){<br/>
               while(true){<br/>
                    wait();<br/>
                    System.out.println("test");<br/>
               }<br/>
         }<br/>
    }<br/>
};<br/>
th.start();<br/>
go();<br/>
<br/>
synchronized public void go(){<br/>
        nofity();<br/>
}<br/>
<br/>
起こすにはnotify()してあげます。<br/>
ただし、両方共synchronizedブロックかsynchronizedメソッド内に<br/>
書いてあることが条件です。<br/>
これは、モニタという機構を用いていて、モニタを獲得したオブジェクトだけに、<br/>
内容を処理する権限を与えています。同時に呼び出されるとまずいことが起こるからです。<br/>
<br/>

        ]]></content> 
  </entry>  
  <entry> 
    <title>Codeforces #119</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17530728/"/>  
    <id>http://ddrer.exblog.jp/17530728/</id>  
    <issued>2012-05-10T23:17:00+09:00</issued>  
    <modified>2012-05-12T11:02:16+09:00</modified>  
    <created>2012-05-12T10:31:06+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>codeforces</dc:subject>  
    <content type="html"><![CDATA[ 
今日は昼の講義後は、ずっとカービィのエクストラをやっていました。<br/>
4面まで終了ですが、4時間ほど。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_10312711.jpg" border="0" width="500" height="281"/></center><br/>
<br/>
帰宅後はcodeforcesの準備にとりかかりました。<br/>
<br/>
A問題。僕としては非常に苦手な問題でした。<br/>
紐の長さが与えられていて、a,b,cの数値の長さになるように切る。<br/>
なるべく沢山切った時の本数を求めよという問題。<br/>
つまり短いのを沢山生成しつつも、余りが出ないようにするということ。<br/>
1時間ほど悩んで提出した解答は、hackされました。<br/>
それを後日提出してみたところ、wrong answer 20。<br/>
少し一手間欠けたもののwrong answer 41なので、根本的な書き直しが必要かもしれません。<br/>
<br/>
B問題は、幅と高さが与えられていて、ひし形の数を数える問題。<br/>
軸が必ずマス目に並行になります。<br/>
これは計算するだけ。<br/>
<br/>
import java.util.Scanner;<br/>
    public class Test {<br/>
            public static void main(String args[]){<br/>
            Scanner input = new Scanner(System.in);<br/>
                    int w = input.nextInt();<br/>
                    int h = input.nextInt();<br/>
                    System.out.println(maximum(w,h));<br/>
            }<br/>
            <br/>
          public static long maximum(int w,int h){<br/>
          w += 1;<br/>
          h += 1;<br/>
          long count = 0;<br/>
          for(int i = 3 ; i <= w ; i+=2){<br/>
          for(int j = 3 ; j <= h ; j+=2){<br/>
          count += (w-i+1)*(h-j+1);<br/>
          }<br/>
          }<br/>
          return count;<br/>
          }<br/>
    }<br/>
<br/>
C問題は、Aの数字の並びからBの数字の並びにする<br/>
操作は、Aのいちばんうしろの数字を1個取って、Aのどこかに挿入するということ。<br/>
この操作でBにする際の最短回数を求めよという問題。<br/>
<br/>
たとえば 13245 12345であれば、13245→13524→13452→12345と3になります。<br/>
どういう法則かといいますと、Bの並びを順に見ていって、Aは1回だけ全部見ていって、<br/>
Bの並び順で1個でも該当しなくなった時点で終了ということです。<br/>
わかりづらいので例を解説に。<br/>
<br/>
A 13245<br/>
B 12345　１は一致する。<br/>
<br/>
A 13245<br/>
B 12345　A:3、B:2はダメ<br/>
<br/>
A 13245<br/>
B 12345 　２は一致する<br/>
<br/>
A 13245<br/>
B 12345　A:4、B:3はダメ<br/>
<br/>
A 13245<br/>
B 12345　A:5、B:3はダメ<br/>
<br/>
Aの配列を調べ終わったので終了。<br/>
<br/>
つまり１，２の２つの部分だけ一致するので、<br/>
長さの５からこの２を引いた３が答えになります。<br/>
オーダですが、Aの配列を読み終わるまでなので、<br/>
for文を見ると二重ですが、O(n)です。<br/>
非常に高速！それを踏まえてコードを。<br/>
<br/>
import java.util.Scanner;<br/>
<br/>
    public class Test {<br/>
            public static void main(String args[]){<br/>
            Scanner input = new Scanner(System.in);<br/>
                    int n = input.nextInt();<br/>
                    int[] bn = new int[n];<br/>
                    int[] an = new int[n];<br/>
                    for(int i = 0 ; i < bn.length ; i++){<br/>
                    bn[i] = input.nextInt();<br/>
                    }<br/>
                    for(int i = 0 ; i < an.length ; i++){<br/>
                    an[i] = input.nextInt();<br/>
                    }<br/>
                    System.out.println(maximum(n,an,bn));<br/>
            }<br/>
            <br/>
          public static int maximum(int n,int[] an,int[] bn){<br/>
          int stindex = 0;<br/>
          int count = 0;<br/>
          for(int i = 0 ; i < an.length ; i++){<br/>
          boolean falseflag = true;<br/>
          for(int j = stindex ; j < bn.length ; j++){<br/>
          if(bn[i] == an[j]){<br/>
          stindex = j+1;<br/>
          count++;<br/>
          falseflag = false;<br/>
          break;<br/>
          }<br/>
          }<br/>
          if(falseflag)break;<br/>
          }<br/>
          return an.length-count;<br/>
          }<br/>
    }
        ]]></content> 
  </entry>  
  <entry>
    <title type="text"><![CDATA[PR: 妻が見つけた！憧れ４ＬＤＫ超のマンションに住む！]]></title>
    <link rel="alternate" type="text/html" href="http://rss.rssad.jp/rss/ad/db0wKyRUD0f./wVzUv4TvcC44?type=2&amp;ent=cd5aaa695ffbd5f40d605ae2394dfe10"/>
    <content type="html"><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/db0wKyRUD0f./wVzUv4TvcC44?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://rss.rssad.jp/rss/img/db0wKyRUD0f./wVzUv4TvcC44?type=3&ent=cd5aaa695ffbd5f40d605ae2394dfe10"/></a></td></tr><tr><td align="left" valign="top" > 理想の間取りは…？多彩なプランから探せる！新築大規模マンション特集 </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div>]]></content>
    <created>2012-05-12T10:31:06+09:00</created>
    <modified>2012-05-12T11:02:16+09:00</modified>
    <issued>2012-05-10T23:17:00+09:00</issued>
    <author>
      <name>rssad.jp</name>
    </author>
    <id>cd5aaa695ffbd5f40d605ae2394dfe10</id>
  </entry>
  <entry> 
    <title>久しぶりにポップン</title>  
    <link rel="alternate" type="text/html" href="http://ddrer.exblog.jp/17530680/"/>  
    <id>http://ddrer.exblog.jp/17530680/</id>  
    <issued>2012-05-11T23:59:00+09:00</issued>  
    <modified>2012-05-12T10:11:17+09:00</modified>  
    <created>2012-05-12T10:11:17+09:00</created>  
    <author> 
      <name>ddrer-yossi</name> 
    </author>  
    <dc:subject>日常生活</dc:subject>  
    <content type="html"><![CDATA[ 
日記は10日分溜まる前に消化しておきたいのが本音ですが、<br/>
なかなか時間が取れず、今も早足で書いているところです(5/12 10:00)<br/>
<br/>
今日は仕事。お昼はすき家で高菜マヨの並盛。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_1011452.jpg" border="0" width="500" height="375"/></center><br/>
夜21時近くまで仕事をして、それからゲーセンへ。<br/>
内訳は DDR 1クレ、jubeat 1クレ、pop'n 2クレ　でした。<br/>
DDRはSigSigのDifficultを粘着する。<br/>
<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_10486.jpg" border="0" width="500" height="281"/></center><br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_1041791.jpg" border="0" width="500" height="281"/></center><br/>
5度目の正直といった感じ。<br/>
<br/>
jubeatは難易度10を色々と更新。1クレで人が増えたのでやめる。<br/>
その後はpop'n、38を1曲クリアという収穫だけに終わった。久しぶりなので許容範囲か。<br/>
<br/>
更に地元ゲーセンではdivaを1クレ。特に更新事項なし。<br/>
<br/>
帰宅後はDDR。WAKA LAKAまでフルコンペースだったのに、<br/>
油断したら一気に3ミスして撃沈した構図。<br/>
<center><img class="IMAGE_MID" src="http://pds2.exblog.jp/pds/1/201205/12/46/f0019846_1012274.jpg" border="0" width="500" height="375"/></center><br/>
<br/>
その後はWii　Fitで30分ほどジョギング。<br/>
体重が太り気味から標準になりました。BMI25を切ったのは久しぶりに快挙です。<br/>
体重も90→87まで減少しました。いい調子です。<br/>
初め二週間ぐらいは運動を続けてもなかなか体重が減らなかったのですが、<br/>
その後一気に減りました。<br/>
<br/>
タイピングゲームに関して少し語りましょう。<br/>
音を鳴らす側のスレッドは、常時while(true)で回すのではなく、<br/>
回しつつ、wait()で待機して、音を鳴らす時にnotifyさせるようにしました。<br/>
これにより、CPUの使用率が4コアで30%前後だったものを、<br/>
10%前後に低減することに成功しました。<br/>
アニメーション側はしょうがないので、問題ごとに生成して、repaint処理をさせるようにしました。<br/>
ちなみにスレッドの生成方法は、大きくわけて３つあります。<br/>
・Threadクラスを継承する<br/>
・Runnableクラスを実装する<br/>
・内部クラスを使う<br/>
<br/>
内部クラスを使うことで、run()内の記述を別々に作ることが出来ます。便利便利。<br/>
<br/>
Thread th1 = new Thread(){<br/>
    public void run(){<br/>
    //処理<br/>
　　}<br/>
};
        ]]></content> 
  </entry>
  <entry>
    <title type="text"><![CDATA[PR: 妻が見つけた！憧れ４ＬＤＫ超のマンションに住む！]]></title>
    <link rel="alternate" type="text/html" href="http://rss.rssad.jp/rss/ad/db0wKyRUD0f./4_tbThydf31L?type=2&amp;ent=3e2c68d8cef68431c7faf1f13fd2e8a4"/>
    <content type="html"><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/db0wKyRUD0f./4_tbThydf31L?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://rss.rssad.jp/rss/img/db0wKyRUD0f./4_tbThydf31L?type=3&ent=3e2c68d8cef68431c7faf1f13fd2e8a4"/></a></td></tr><tr><td align="left" valign="top" > 理想の沿線、田園都市線、東横線で住みたい間取りは…？新築マンション特集 </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div>]]></content>
    <created>2012-05-12T10:11:17+09:00</created>
    <modified>2012-05-12T10:11:17+09:00</modified>
    <issued>2012-05-11T23:59:00+09:00</issued>
    <author>
      <name>rssad.jp</name>
    </author>
    <id>3e2c68d8cef68431c7faf1f13fd2e8a4</id>
  </entry> 
</feed>

