CODE VS 決勝会場へ。

昨日ゲーセンのDP環境で、1Pと2Pがどのくらい離れているか計測していたので、
実際に何を置くのが妥当か考えた結果がこうなった。

CODE VS 決勝会場へ。_f0019846_17442775.jpg


昼飯後、ニコファーレに行きました。
最初場所がわからず、到着時もぎりぎり。

総評としては、システム連鎖(作られた連鎖)よりも
不定形で挑んだほうが圧倒的に有利だということ。
システム連鎖は、予選でスコアを伸ばすときに有効、
それ以外では作って発火して相手を潰していく方針が圧倒的だった。

ゲームバランスも頑張っていたと思うけど、もうちょいという感じだった。
その後は色々な企業の方とお話して、今度はサイゼリヤで、出場者の方々と喋るなどする。

CODE VS 決勝会場へ。_f0019846_17474012.jpg


音ゲーで有名な喜屋武ちあきが出てたねーとか(?
そんなこんなで、終了後は、ゲーセンガチ勢の方と一緒にビーマニをする。
☆11すらままならない状況だったので、ぐだぐだでした。
後はjubeatをちょっとやって帰宅。

後は結城さんのグルーピング問題の正解が確認されました。
a=b c=d b=cの橋渡しが重要です。

import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {

public static void main(String args[]) throws Exception{
Scanner input = new Scanner(new FileReader("../nick/nick.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("../nick/output.txt"));
Map map = new HashMap();
int counter = 0;
//入力がなくなるまでグルーピング処理
while(input.hasNext()){
String[] name = input.nextLine().split("=");
if(map.get(name[0]) != null && map.get(name[1]) != null){
//大きい方の番号に属している名前をグループ番号の小さいほうに合わせる。
int a = map.get(name[0]);
int b = map.get(name[1]);
if(a < b){
for ( String key : map.keySet() ) {
if(map.get(key) == b){
map.put(key,a);
}
}
}else if(a > b){
for ( String key : map.keySet() ) {
if(map.get(key) == a){
map.put(key,b);
}
}
}
}else if(map.get(name[0]) != null){
int value = map.get(name[0]);
map.put(name[1],value);
}else if(map.get(name[1]) != null){
int value = map.get(name[1]);
map.put(name[0],value);
}else{
map.put(name[0],counter);
map.put(name[1],counter);
counter++;
}
}
//グループの番号のリストlstと、それぞれのグループの要素数lstnum
ArrayList lst = new ArrayList();
ArrayList lstnum = new ArrayList();
for ( String key : map.keySet() ) {
int data = map.get( key );
if(!lst.contains(data)){
lst.add(data);
lstnum.add(1);
}else{
lstnum.set(lst.indexOf(data),lstnum.get(lst.indexOf(data))+1);
}
}
//グループ数の確定
String[][] st = new String[lst.size()][];
//各グループの配列のサイズの確定
for(int i = 0 ; i < lstnum.size(); i++){
st[i] = new String[lstnum.get(i)];
}

//取得した名前を各グループの配列に格納
for ( String key : map.keySet() ) {
int data = map.get( key );
int index = lst.indexOf(data);
for(int i = 0 ; i < st[index].length ; i++){
if(st[index][i] == null){
st[index][i] = key;
break;
}
}
}
//各グループの配列を文字列ソート
for(int i = 0 ; i < st.length ; i++){
Arrays.sort(st[i]);
}

//グループの先頭の名前を配列p_nameに格納してソート
String[] p_name = new String[st.length];
for(int i = 0 ; i < st.length ; i++){
p_name[i] = st[i][0];
}
Arrays.sort(p_name);

//先頭の名前が一致するグループから順番に出力
for(int i = 0 ; i < p_name.length ; i++){
for(int j = 0 ; j < st.length ; j++){
if(p_name[i].equals(st[j][0])){
for(int k = 0 ; k < st[j].length ; k++){
if(k != st[j].length-1){
pw.print(st[j][k]+"=");
}else{
pw.println(st[j][k]);
}
}
break;
}
}
}

input.close();
pw.println();
pw.flush();
pw.close();
}
}

  by ddrer-yossi | 2013-01-19 23:42 | 日常生活

<< Codeforces Roun... 凍りつく外、DP六段取得 >>

SEM SKIN - DESIGN by SEM EXE