<   2013年 12月 ( 31 )   > この月の画像一覧

 

おみそかー

今日はおおみそか。
特に何かあるわけでもないですが、お昼は海鮮丼を作りました。

f0019846_552355.jpg


f0019846_553427.jpg


そして17時に外出し、年賀はがきやスパークリングワインやら買いつつゲーセンへ。

f0019846_563937.jpg

Quick Silverフルコン

f0019846_565978.jpg

ZZ 92.2%

f0019846_572417.jpg

December Breeze 89.1%

帰宅後はすき焼きですー。
f0019846_582934.jpg


f0019846_585590.jpg


おいしかった。

テレビを観てのんびりしつつ、年越しそばを食べる。

f0019846_59191.jpg


飲み過ぎ食べ過ぎで気持ち悪かったので、3時頃にはダウンしてました。
くぅ~疲れましたwwwこれにて2013年終了です!

  by ddrer-yossi | 2013-12-31 23:04 | Beatmania | Comments(0)

着る毛布が届いた。Good bye 2013

今日は起きたら腰を痛めました。歳かな・・・。
そして、お昼ごろに着る毛布が届きました。来年かなーと思ってましたが。
しかし、今日は18度近くあり、普通に暖かめでした。

夜はピザを注文しようという話になり、ドミノ・ピザで。
1回目クイズに失敗したので、2回目やった結果こうなりました。

f0019846_4512395.jpg


お・・・おう。

f0019846_4513733.jpg


f0019846_451515.jpg


f0019846_452060.jpg


f0019846_452773.jpg


その後はゲーセンへ。

f0019846_4522514.jpg

灼熱91.3%

f0019846_4524355.jpg

Chaplet84.1%

f0019846_4531175.jpg

等速サイケデリック
f0019846_453293.jpg


f0019846_453447.jpg

DDRとかいう神ゲー。
2曲目にも選択して落ちましたけどね…。

f0019846_4542730.jpg

クッキーファンタジーフルコン。

f0019846_4544690.jpg

トリックポップフルコン

f0019846_455926.jpg

モフポップ銅★

f0019846_4553282.jpg

天空ワルツフルコン

f0019846_4555046.jpg

カプサイシン・・・。

夜はCodeforces Good Bye 2013に参加。

A問題。
最初にn本のろうそくがあり、この人はm本のろうそくのカスで1本ろうそくが作れる。
1本1時間もつとしたら、何時間分もたせられるか。
あまりの計算をちゃんとやりましょうというだけ。


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main2 {
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] st = br.readLine().split(" ");
int a = Integer.parseInt(st[0]);
int b = Integer.parseInt(st[1]);
int time = 0;
int kasu = 0;
while(a != 0){
time += a;
kasu += a;
a = kasu / b;
kasu %= b;
}
System.out.println(time);
}
}


B問題。ロボットが左端にいて、バッグの中に金貨をつめていく。
いくつ必要かが配列で与えられていて、このロボットは左に移動するか右に移動するか、
コインを置くかの動作ができる。
しかし、このロボットは連続してコインを置く動作が取れない。
必要な動作を出力せよという問題。
二回連続じゃなきゃいいので、左なり右なり移動して戻った後に置けば良い。


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main2 {
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String st = br.readLine();
int n = Integer.parseInt(st);
String[] str = br.readLine().split(" ");
int[] a = new int[n];
for(int i = 0 ; i < n ; i++){
a[i] = Integer.parseInt(str[i]);
}
int[] c = new int[n];
StringBuilder sb = new StringBuilder();
int rbindex = 0;
char ba = '-';
int nowindex = 0;
while(nowindex != n){
if(nowindex == rbindex){
if(c[rbindex] < a[rbindex]){
if(ba != 'P'){
sb.append("P");
c[rbindex]++;
ba = 'P';
}else{
if(rbindex + 1 == n){
sb.append("L");
rbindex--;
ba = 'L';
}else{
sb.append("R");
rbindex++;
ba = 'R';
}
}
}else{
if(nowindex != n-1){
sb.append("R");
ba = 'R';
nowindex++;
rbindex++;
}else{
nowindex++;
}
}
}else{
if(nowindex < rbindex){
sb.append("L");
rbindex--;
ba = 'L';
}else{
sb.append("R");
rbindex++;
ba = 'R';
}
}
}
System.out.println(sb.toString());
}
}


C問題は、欲しいと思ってるレートの配列が与えられていて、
運営側はそれを与えようと思っている。
しかし、各レートは独立でなければいけないが、なるべくあんまり多くのレートを与えたくない。
最小となるように与えた時のレートを出力せよ。答えが複数あればどれでもよい。

これは、レートと番号のペアを作ってソートして、
今まででかぶっている最低レートを更新させつつ、
そのレート以下になっていないかを見る。そのレート以下であれば、
そのレート+1を与えて、最低レートをそれに更新する。
かぶってなければ、最低レートを今の配列に更新する。

これをまた新たな配列にレートとして代入し、最後にその配列を出力する。
処理時間はわりとぎりぎり。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;

public class Main2 {
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String st = br.readLine();
int n = Integer.parseInt(st);
String[] str = br.readLine().split(" ");
int[] a = new int[n];
MyPair[] mp = new MyPair[n];
int[] lastnum = new int[n];
for(int i = 0 ; i < n ; i++){
a[i] = Integer.parseInt(str[i]);
mp[i] = new MyPair();
mp[i].setFirst(a[i]);
mp[i].setSecond(i);
}
Arrays.sort(mp);
int bfrate = -1;
for(int i = 0 ; i < mp.length ; i++){
if((Integer)mp[i].getFirst() <= bfrate){
mp[i].setFirst((Integer)mp[i].getFirst()+(bfrate-(Integer)mp[i].getFirst()+1));
}
bfrate = (Integer)mp[i].getFirst();
lastnum[(Integer)mp[i].getSecond()] = (Integer)mp[i].getFirst();
}

for(int i = 0 ; i < n ; i++){
if(i != n-1){
System.out.print(lastnum[i]+" ");
}else{
System.out.println(lastnum[i]);
}
}
}
}

class MyPair implements Cloneable,Comparable>, Serializable {
private static final long serialVersionUID = -553348920790587668L;
@Override
public MyPair clone() {
try {
return (MyPair) super.clone();
} catch (CloneNotSupportedException e) {
throw new IllegalStateException(e);
}
}
public MyPair(){//S first, T second) {
//this.first = first;
//this.second = second;
//return;
}
private S first;
private T second;
@SuppressWarnings("unchecked")
public MyPair(MyPair p) {
first = (S) p.getFirst();
second = (T) p.getSecond();
}
public S getFirst() {
return first;
}
public void setFirst(S first) {
this.first = first;
}
public T getSecond() {
return second;
}
public void setSecond(T second) {
this.second = second;
}
@Override
public boolean equals(Object obj) {
if (obj == this) { return true; }
if (!(obj instanceof MyPair)) { return false; }
MyPair pair = (MyPair) obj;
if (first == null) {
if (second == null) {
if (pair.first == null && pair.second == null) { return true; }
return false;
}
if (pair.first == null) { return second.equals(pair.second); }
return false;
}
if (second == null) {
if (first != null) {
if (pair.second == null) { return first.equals(pair.first); }
return false;
}
}
return first.equals(pair.first) && second.equals(pair.second);
}
/**
* hashcode
*/
@Override
public int hashCode() {
int result = 17;
result *= 31;
if (first != null) {
result += first.hashCode();
}
result *= 31;
if (second != null) {
result += second.hashCode();
}
return result;
}
@Override
public String toString() {
return "[" + (first != null ? first : "null") + ", " + (second != null ? second : "null") + "]";
}
@SuppressWarnings("unchecked")
public int compareTo(MyPair o) {// Comparable>
Comparable f = null;
Comparable s = null;
try {
f = (Comparable) first;
s = (Comparable) second;
} catch (ClassCastException e) {
throw new IllegalStateException(e);
}
if (f == null || s == null || o == null) throw new NullPointerException();
int c = f.compareTo(o.first);
if (c != 0) {return c; }
return s.compareTo(o.second);
}
}


D問題は、アルファベットの文字列s1,s2をつくり、
s3はs1+s2、s4はs2+s3というふうに作る。
ACの数が、s_kのとき丁度x個となるようなs1,s2を構成せよ。
なければHappy new year!を出力せよ という問題。
単なるフィボナッチと思いきや、端でACが作れる場合を考えなきゃいけないので、
かなり闇な問題です。無理でした。

くぅ~お疲れ様!これにて2013年Codeforces終了です!

  by ddrer-yossi | 2013-12-30 23:40 | codeforces | Comments(0)

なんともいえない一日になってしまった。Codeforces#222

今日は待ち合わせのためにぼんやりしてた感じ。
午前中という話から気づけば18時前でした。

Arcanos微更新
f0019846_4272849.jpg


まあ後はjubeatちょっとがんばりましたよってぐらい

f0019846_4274953.jpg


f0019846_4281727.jpg


f0019846_4282918.jpg

イイリザルトw

f0019846_4284961.jpg

ナイトメアメタル。なんとか一発目で。

f0019846_4292787.jpg

PUNISHER銅◆

f0019846_4294690.jpg

格ゲーフルコン

f0019846_430422.jpg

セツナトリップSS

f0019846_4302041.jpg

ガレージハウスフルコン

f0019846_4304099.jpg

カラオケリミフルコン

f0019846_4305664.jpg

スクリーンスコア伸びた。

f0019846_4313393.jpg

サナ・モレッテ・エ・ネンテフルコン

と程々にして、帰宅後はCodeforces#222

A問題は、ダイスを順番に2人が振って、3人めが振ったダイスの絶対値が小さいほうが勝利。
同じであれば引き分けのときの、勝ち、引き分け、負けを出力せよという問題。
単純に全部計算させるだけ。


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main2 {
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] st = br.readLine().split(" ");
int a = Integer.parseInt(st[0]);
int b = Integer.parseInt(st[1]);
int awin = 0;
int bwin = 0;
int draw = 0;
for(int i = 1 ; i <= 6 ; i++){
int aabs = Math.abs(i-a);
int babs = Math.abs(i-b);
if(aabs < babs){
awin++;
}else if(aabs == babs){
draw++;
}else{
bwin++;
}
}
System.out.println(awin+" "+draw+" "+bwin);
}
}


B問題は、1回めの通過タイムと、2回目の通過タイムが与えられ、
上位タイムk個という方式から、1回目、2回目それぞれ順位k/2番目までを通過とするとき、
タイム的に通過する可能性がある場合は1を出力、なければ0を出力せよという問題。

例えばタイムが
1 6
2 7
3 8
4 9
5 10

となっていれば、kが6であれば上位3名は決勝進出である。
つまりこの場合、1,2,3,6,7,8が対象になる。
次に、タイム的にいい6つは、1,2,3,4,5,6なので、
答えは
11111
11100を返すというふうになる。
処理がめんどくさい。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;

public class Main2 {
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String st = br.readLine();
int n = Integer.parseInt(st);
int[] a = new int[n];
int[] b = new int[n];
int[] nums = new int[2*n];
for(int i = 0 ; i < n ; i++){
String[] str = br.readLine().split(" ");
a[i] = Integer.parseInt(str[0]);
nums[2*i] = a[i];
b[i] = Integer.parseInt(str[1]);
nums[2*i+1] = b[i];
}
Arrays.sort(nums);
int[] aranked = new int[n];
int[] branked = new int[n];
int aindex = 0;
int bindex = 0;
for(int i = 0 ; i < nums.length ; i++){
if(aindex != a.length && a[aindex] == nums[i]){
aranked[aindex] = (i+1);
aindex++;
}
if(bindex != b.length && b[bindex] == nums[i]){
branked[bindex] = (i+1);
bindex++;
}
}
int acount = 0;
int bcount = 0;
int k = n;
for(int i = 0 ; i < aranked.length ; i++){
if(aranked[i] <= k)acount++;
}
for(int i = 0 ; i < branked.length ; i++){
if(branked[i] <= k)bcount++;
}
acount = Math.max(acount, n/2);
bcount = Math.max(bcount, n/2);
StringBuilder astr = new StringBuilder();
StringBuilder bstr = new StringBuilder();
for(int i = 0 ; i < a.length ; i++){
if(i < acount){
astr.append("1");
}else{
astr.append("0");
}
}

for(int i = 0 ; i < b.length ; i++){
if(i < bcount){
bstr.append("1");
}else{
bstr.append("0");
}
}
System.out.println(astr.toString());
System.out.println(bstr.toString());
}
}


C問題は、時間中には解けませんでしたが、解きました。
迷路があり、通りぬけできるようになっている。そこからk個塞いでも、
もとの迷路で通り抜けられないところがないように迷路を作れという問題。

考え方的には、最初に全部埋まっている状態にして、開始できる位置から、
空いている場所-K個だけ幅探索で埋めていくだけで良いことになる。
やはり実装が大変か。


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;

public class Main2 {
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] st = br.readLine().split(" ");
int n = Integer.parseInt(st[0]);
int m = Integer.parseInt(st[1]);
int k = Integer.parseInt(st[2]);
String[] s = new String[n];
int notwallcount = 0;
boolean[][] iswall = new boolean[n][m];
for(int i = 0 ; i < n ; i++){
s[i] = br.readLine();
}

for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
if(s[i].charAt(j) == '#'){
iswall[i][j] = true;
}else{
notwallcount++;
}
}
}

boolean[][] used = new boolean[n][m];

for(int i = 0 ; i < n ; i++){
int count = 0;
for(int j = 0 ; j < m ; j++){
if(iswall[i][j])continue;
used = new boolean[n][m];//n is y m is x
count = 1;
used[i][j] = true;
Queue q = new LinkedList();
q.add(j+","+i);

while(!q.isEmpty()){
if(count == (notwallcount-k))break;
String[] substr = q.poll().split(",");
int x = Integer.parseInt(substr[0]);
int y = Integer.parseInt(substr[1]);
if(isValid(x-1,y,m,n,iswall) && !(x-1 == j && y == i) && !used[y][x-1]){
used[y][x-1] = true;
count++;
q.add((x-1)+","+y);
}
if(count == (notwallcount-k))break;
if(isValid(x+1,y,m,n,iswall) && !(x+1 == j && y == i) && !used[y][x+1]){
used[y][x+1] = true;
count++;
q.add((x+1)+","+y);
}
if(count == (notwallcount-k))break;
if(isValid(x,y-1,m,n,iswall) && !(x == j && y-1 == i) && !used[y-1][x]){
used[y-1][x] = true;
count++;
q.add(x+","+(y-1));
}
if(count == (notwallcount-k))break;
if(isValid(x,y+1,m,n,iswall) && !(x == j && y+1 == i) && !used[y+1][x]){
used[y+1][x] = true;
count++;
q.add(x+","+(y+1));
}

}
if(count == (notwallcount-k))break;
}
if(count == (notwallcount-k))break;
}

for(int i = 0 ; i < n ; i++){
StringBuilder sb = new StringBuilder();
for(int j = 0 ; j < m ; j++){
if(!iswall[i][j] && !used[i][j]){
sb.append("X");
}else if(iswall[i][j]){
sb.append("#");
}else{
sb.append(".");
}
}
System.out.println(sb.toString());
}
}

public static boolean isValid(int x,int y,int m,int n,boolean[][] iswall){
if(x >= 0 && x < m && y >= 0 && y < n && !iswall[y][x])return true;
return false;
}
}

  by ddrer-yossi | 2013-12-29 23:26 | codeforces | Comments(0)

あまり有意義でない一日だった。 SRM602

取り敢えずクロスビーツをひと通りプレーして、45位といったところにつけた。
夜21時ごろからゲーセン。ポップンメインでナイトメアメタルに粘着。

Zirkfied81.3%
f0019846_423095.jpg


ILIASフルコン
f0019846_43448.jpg


Stella Sinistraフルコン
f0019846_432434.jpg


PUNISHERフルコン
f0019846_435227.jpg


マインド・ゲームフルコン
f0019846_441654.jpg


去る金合戦フルコン
f0019846_445032.jpg


リメンバーリメンバーつながらん
f0019846_451042.jpg


HYENA罰5
f0019846_45551.jpg


ナイトメアメタル。クリアできず。
f0019846_462539.jpg


その後はTopCoderでした
easyは、レートが2200以上のコーダと、未満のコーダに分かれている。
なんとか君は、未満のコーダが好きで、2200以上、未満を繰り返す、カメレオンコーダーを狙っている。
レートが配列として与えられ、レートの上下には重みがある。
負けてマイナスするか、勝ってプラスするかのいずれかである。
ただし、2200以上の場合は、次に必ず未満に落ちなければいけない。
カメレオンできる最大回数を求めよ。

途中で諦めてタイピングゲームやってましたが、一応翌日通したコードです。
DPで書きましょう。


public class TypoCoderDiv1 {

public int getmax(int[] D, int X) {
int[][] DP = new int[D.length+1][2201];

for(int i = 0 ; i < D.length+1 ; i++){
for(int j = 0 ; j <= 2200 ; j++){
DP[i][j] = Integer.MIN_VALUE;
}
}
DP[0][X] = 0;
for(int i = 0 ; i < D.length ; i++){
for(int j = 0 ; j <= 2200 ; j++){
if(j - D[i] >= 0){
DP[i + 1][j - D[i]] = Math.max(DP[i][j], DP[i + 1][j - D[i]]);
}else{
DP[i + 1][0] = Math.max(DP[i][j], DP[i + 1][0]);
}

if(j + D[i] >= 2200){
if(i != D.length-1){
if((j + D[i] - D[i + 1]) < 2200){
if((j + D[i] - D[i + 1]) >= 0){
DP[i + 2][j + D[i] - D[i + 1]] = Math.max(DP[i][j] + 2, DP[i + 2][j + D[i] - D[i + 1]]);
}else{
DP[i + 2][0] = Math.max(DP[i][j] + 2, DP[i + 2][0]);
}
}
}else{
DP[i + 1][2200] = Math.max(DP[i][j] + 1, DP[i + 1][2200]);
}
}else{
DP[i + 1][j + D[i]] = Math.max(DP[i][j], DP[i + 1][j + D[i]]);
}
}
}
int max = 0;
for(int i = 0 ; i < D.length+1 ; i++){
for(int j = 0 ; j <= 2200 ; j++){
max = Math.max(max,DP[i][j]);
}
}
return max;
}

}



タイピングゲームは、例の絶望要塞 大脱出です。ああ、うん、クソゲーですね。
ワードによって打ち方が固定されているという最悪なタイピングゲームに仕上がってました。
しかも、時間制限が全然考慮されてなくて、
アーノルド(ry と 自ら(ry が入ると、ほぼクリア不可能です。
多分詰まらずに打てれば行けるのですが、最後の行でどうしても…。
f0019846_412883.png

なんとか運よくクリアにこぎつけましたが、二度とやりません…。

  by ddrer-yossi | 2013-12-28 23:57 | TopCoder | Comments(0)

想い出をありがとう

今日は朝に仕事納め、と思いきやパソコンの大先生やってました。
どうやらシステムの重要なファイルを削除してしまったようで、
NTLDRが読み込めないという黒画面で死んでいる模様。
しかもWindowsのディスクがないという状況で、色々試す。

起動ディスクをフロッピーで作ったり、CD-ROMに焼いたりやるも、
エラーは変わらず。途中でWindowsディスクを導入するも・・・。

f0019846_17323047.jpg

そう、ダメみたいなんだ。

KNOPPIXを焼きつつ飯へ。
f0019846_17325342.jpg

コク味噌野菜とかいう新メニュー。普通に野菜炒めとして出せばいい気がする。
もはやトッピングではない。

その後もこうなったり
f0019846_17332991.jpg

余計悪化したりして、もはやどうしようもなくなりました。
f0019846_17335630.jpg


ハードディスク認識しないんじゃなあ…。

その後はゲーセンへ。

2枚目のカードのために2Pプレー。
七段ですが、Todestriebフルコンです。
f0019846_17342710.jpg


f0019846_17345561.jpg


f0019846_17351668.jpg

Zectbach新曲むずー。

f0019846_17354527.jpg

左手プレー。きつい。

f0019846_17361867.jpg

何がBONUSじゃ

f0019846_173629100.jpg

くらまれ

ここからはポップン。
f0019846_17364619.jpg

True Blue(H)フルコン

f0019846_1737966.jpg

エレフラ(H)つながった。

f0019846_17375694.jpg

旅立ちの唄つながった。

f0019846_17381653.jpg

格ゲー高スコア

f0019846_17385016.jpg

よく見えないけどスコア73005です。自分でもびっくり。

f0019846_17393527.jpg

そしてクラ11をクリア

f0019846_17395192.jpg

最終的にBAD26

エレクリもいけそうだった。
f0019846_17401617.jpg


ばてばてなのでここで終了。

FUELは7000を超えてました。
f0019846_17403345.jpg

  by ddrer-yossi | 2013-12-27 23:27 | pop'n music | Comments(0)

ぼんやり日記書いたりゲーセン行ったり

今日は日記を書きつつ、艦これのE-3を回していました。
陸奥、陸奥、伊19、瑞鶴、伊19と出て、どうしたものか。
伊19お久しぶりです。轟沈

夜は証明写真撮ったり、家にある大量のペットボトルやトレイを出しに行ったりした後にゲーセンへ。

DIVAで新曲が出ていたのでまずこれを潰しに行く。
f0019846_1755461.jpg

Tell your world

f0019846_17553710.jpg

ハイハハイニ
潰れそうで潰れなかったので、ホールド切ってまで取りに行きました。くやしいのう。

f0019846_17561455.jpg

後は昨日取れなかったHYENAをきっちり。

後半は、知り合いと合流してプレー。

f0019846_17563573.jpg

december breeze

f0019846_17565143.jpg

HYENA

f0019846_175793.jpg

PUNISHER

f0019846_17572799.jpg

ロストワン

f0019846_17574026.jpg

Gimme a Big beat

正直ここまでボコられたのは初めてでした。

f0019846_17581186.jpg

サンボルも14を中心にAからAAへの更新が多かったです。

f0019846_17583631.jpg

後はリフレクとか。ビューティフルレシート

f0019846_17585957.jpg

くらまれ更新

f0019846_17591527.jpg

めうめうとか98.2

解散後はポップンへ。
f0019846_17593810.jpg

情操ディストピア(H)

f0019846_180414.jpg

妄想ダイヤモンド

f0019846_1801870.jpg

Zirkfied。なんだよこれもう…。

f0019846_1804449.jpg

天空の夜明け(H)フルコン。

最後にPUNISHERをプレミアムフリーで5連奏。ノマゲは結局できず。
f0019846_18113100.jpg

  by ddrer-yossi | 2013-12-26 23:51 | pop'n music | Comments(0)

クリスマスとはなんだったのか

クリスマスは艦これをメインにしていました。
E-2、E-3突破を目指すという。
一番大変だったのが、主力4撃墜で、デイリーと兼ねてやろうとしたのが悪かったのか、
一向に2-2でボスにたどり着かない現象が起きていました。長すぎた。

で、E-2攻略に入るわけですが、アルペジオ艦を使って行くと、
何故か大破食らってうまくいかない。しかも消費が半端じゃないということで、
途中からアルペジオ艦を捨ててやりました。
結果は大成功で、ボスにも連続で辿り着くようになり、E-2撃破。

演習は余裕勝利、空母は3-3で空母一隻だけ入れて2回で達成して、E-3に入る。
E-2と同様の編成でクリアしました。消費はALL5000(ボーキは1000程度)といったところ。

f0019846_15591426.png


夜は昨日入手した初音ミクのクリスマスケーキを食べました。
ねんどろいどの組み立てづらさは異常でしたね…。

f0019846_1631232.jpg


f0019846_1624916.jpg


f0019846_163438.jpg


f0019846_164159.jpg


その後は某タイパーに、着る毛布を紹介されて、色々見てみるも、
人気なgroony製は全滅という状況でした。
ということで、MOCOAのほうを購入してみました。どうなることやら。

その後はゲーセンへ。時間もないので、弐寺1、リフレク1、ポップン2で終了。

ポップンだけ成果出せたかなという感じ。

f0019846_1655790.jpg

ガムラントランスEXをフルコンボ。
残念ながら全体的には退化でした。

リフレクも一応Valangaで86.9%。
f0019846_1655026.jpg

  by ddrer-yossi | 2013-12-25 23:37 | 日常生活 | Comments(0)

麻雀納めとかCodeforces#221とか

今日は某所での発表でした。
その後はXmas Contest 2013の問題を見て、
絶望してA問題だけ残り15分でさらっと解こうとするも、バグが取れずに終了する。

諦めてぷよクエしつつの麻雀となる。
七対子ドラドラを逃して、そのまま2位マイナスのままオーラス。
が、ここでも上がれず、結局終わってみれば3位でした。-14。
この-14で、今季麻雀は±0で終わってます。
あれ、麻雀やってなかったんじゃない!?

その後はゲーセン。
クリスマスイヴだからなのかラインナップがこれ。
f0019846_16415145.jpg

いやーパーティーしたい人生だった(棒

f0019846_16425485.jpg

with you(A)気合のフルコン。

f0019846_1643102.jpg

HYENA(A)初見HARD。

f0019846_16434840.jpg

久々のquaverでフルコン。

f0019846_1644762.jpg

VALLIS-NERIA 87.4%

f0019846_16444161.jpg

リンドヴルム85.1%

帰宅後はCodeforces #221に参戦。
というよりゲーセン中に始まってしまったので、帰宅途中に問題読んでました。

Aは単純に天秤の問題。^が支点とみなして、釣り合うかどうか判定する問題。
long値になることだけ注意すれば良い。


import java.util.Scanner;

public class Main2 {
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int sindex = -1;
for(int i = 0 ; i < s.length() ; i++){
if(s.charAt(i) == '^'){
sindex = i;
break;
}
}

long lsum = 0;
long rsum = 0;
for(int i = sindex-1 ; i >= 0 ; i--){
if(s.charAt(i) != '=')lsum += Character.digit(s.charAt(i), 10) * (sindex-i);
}
for(int i = sindex+1 ; i < s.length() ; i++){
if(s.charAt(i) != '=')rsum += Character.digit(s.charAt(i), 10) * (i-sindex);
}
if(lsum == rsum){
System.out.println("balance");
}else if(lsum > rsum){
System.out.println("left");
}else{
System.out.println("right");
}
}
}


B問題は、貸し借りを平衡化したときの値を求める問題。
単純に貸し借りを計算して、プラスかマイナスかどっちかの合計を足し合わせるだけ。
問題は帰宅途上で読んでたので3分足らずで解いた。

import java.util.Scanner;

public class Main2 {
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] member = new int[n];
for(int i = 0 ; i < m ; i++){
int st = sc.nextInt();
int en = sc.nextInt();
int money = sc.nextInt();
member[st-1] -= money;
member[en-1] += money;
}
int owe = 0;
for(int i = 0 ; i < n ; i++){
if(member[i] > 0){
owe += member[i];
}
}
System.out.println(owe);
}
}


C問題は、数値が与えられているので、その順列で7で割れる数が作れるかどうかを求めよという問題。
これだけだと難しいが、実は1,6,8,9が必ず含まれているという制約があるので、必ず作ることができるらしい。やってない。

D問題は、0と1しかない行列が与えられ、列を並び替えられる。
そのときに、1の長方形領域が最大となる場合の面積を求めよという問題。
Scannerで解いてTLEしました。悲しい。

方針としては、i,j要素ごとに見て、1がいくつ連続しているかを計算する。
例えば1行目が0101110010であれば、0103210010といったふうにする。
これを今度は列で見て、数値をそれぞれカウントしていく。
たとえば上の結果が
321
210
210
であれば、
まず3,2,2のところを見る。
そうすると、3だけの場合の面積は1*3であるが、2だけの場合の面積は3*2、1だけの場合は3*1で、
2*3が最大となる。
これを列ごとに全部見て、最大の面積を出せば良い。


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main2 {
public static void main(String args[]) throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] st = in.readLine().split(" ");
int n = Integer.parseInt(st[0]);
int m = Integer.parseInt(st[1]);
int[][] maker = new int[n][m];
for(int i = 0 ; i < n ; i++){
String line = in.readLine();
ArrayList list = new ArrayList();
int count = 0;
for(int j = 0 ; j < line.length(); j++){
if(line.charAt(j) == '1'){
count++;
}else{
if(count != 0)list.add(count);
count = 0;
list.add(count);
}
}
if(count != 0)list.add(count);
int index = 0;
for(int j = 0 ; j < list.size() ; j++){
int num = list.get(j);
if(num == 0){
maker[i][index] = 0;
index++;
}
while(num != 0){
maker[i][index] = num;
num--;
index++;
}
}
}
int maximum = 0;
for(int i = 0 ; i < m ; i++){
int[] countnums = new int[m+1];
int maxnum = 0;
for(int j = 0 ; j < n ; j++){
countnums[maker[j][i]]++;
maxnum = Math.max(maxnum, maker[j][i]);
}
int summer = 0;
for(int j = maxnum ; j >= 0 ; j--){
if(countnums[j] == 0)continue;
summer += countnums[j];
maximum = Math.max(maximum, j * summer);
}
}
System.out.println(maximum);
}
}

  by ddrer-yossi | 2013-12-24 23:07 | 日常生活 | Comments(0)

障害対応とか

今日は夕方に知り合いからページが繋がらないのでなんとかしてほしいという連絡が届いた。
調査してみると、一部のページだけ、まったく繋がらなくなっていた。403である。
これは何かおかしいということで、この一部のページのところに問い合わせてみたところ、
正常に使えますよ(ニッコリ と初期化された状態で渡してきました。

あ・・・データ飛びましたね。
ということで、このままでは不味いので、
このサイトを使わずに、自サイト内に移転することを決意しました。
最初からやっていればよかったんですけどね。

その前に一旦ゲーセンに行く。
KACでポップン熱が高まったので、久々にポップンすることにした。高難易度はぐだぐだ。

HYENA初見
f0019846_18141368.jpg


雪月花
f0019846_18143223.jpg


防人恋歌。超頑張った。
f0019846_18145278.jpg


f0019846_18151038.jpg


帰宅後は移行作業をしつつ、資料作りといったところ。
明日の発表に備えていたが、こちらの移行作業に手間取ったせいで
あまり進まずといった結果に。

  by ddrer-yossi | 2013-12-23 23:10 | pop'n music | Comments(0)

KACとか、TopCoder SRM601とか

今日は午前中はポップンとDDRのKACをUstreamで観戦、
途中から行きたくなったので14時に六本木に着いた。

f0019846_1651067.jpg


リフレクの決勝が大盛り上がりで、弐寺はゆったりでした。
というか一台しかないので、予選の進むペースがものすごく遅かったです。

途中抜けだしてTOTTOさんの握手会に参加しました。
Totoriottって誰なんでしょうね~。

f0019846_1663955.jpg


最後のライブも含めて楽しめました。来年からちゃんと行こうかな。

夜は音ゲー熱が高まったのでゲーセンへ。

f0019846_1675892.jpg

DAYDREAMER

f0019846_1681984.jpg

マインド・ゲーム

f0019846_1683871.jpg

PUNISHER

f0019846_1685550.jpg

マインド・ゲーム(A)難

f0019846_1692433.jpg

Stella Sinistra。一番フルコンしづらかった。

f0019846_1695311.jpg

Stella Sinistra(A)難

f0019846_16101818.jpg

マインド・ゲーム(A)EXH

f0019846_16104059.jpg

PUNISHER95.0

f0019846_16112598.jpg

マインド・ゲーム93.0

もうだめだーということで、ゲーセンのくじを引く。
一度は3枚引いてダメだったのでどうしようかと思いましたが、個数的に行ける確信があったので。

そして1回目で引く。
f0019846_16122168.jpg


ということでPS Vita頂きました。やる時間ないですが、
暇になった時にでもDivaとか買いましょうかね。

その後は他のゲーセンで、
f0019846_16115558.jpg

Stella Sinistra

大勝利したので、帰宅してSRM登録。
ここからDiv1です。

easyだけ解けたので。

りんごとみかんがあるから、
バッグからそれぞれ1個~取れるまで取り出して何通りあるか答えよという問題。
バッグに入ってるりんごとみかんの最小数までは取り出せるので、1個からその数まで
for文で回して調べる。
後はそれぞれのケースについて数え上げる。
取れる個数は applemax - (max_sum - orangemax) + 1 でよい。

public class WinterAndPresents {

public long getNumber(int[] apple, int[] orange) {
int maxnum = Integer.MAX_VALUE;
long combination = 0;
for(int i = 0 ; i < apple.length ; i++){
maxnum = Math.min(maxnum, apple[i]+orange[i]);
}
for(int i = 1 ; i <= maxnum ; i++){
int applemax = 0;
int orangemax = 0;
int max_sum = apple.length*i;
for(int j = 0 ; j < apple.length ; j++){
applemax += Math.min(apple[j], i);
orangemax += Math.min(orange[j], i);
}
combination += (applemax - (max_sum - orangemax) + 1);
}
return combination;
}

}


1212 -> 1273

  by ddrer-yossi | 2013-12-22 23:36 | TopCoder | Comments(0)

SEM SKIN - DESIGN by SEM EXE