8/25〜8/29までJOIの夏期セミナーに参加させて頂いていました。

[1日目]
本選び:Alloyの本を選ぶ
Alloyとの運命の出会い
くないさん( @qnighy )さんがチューターでした。
同じ本の人達は
なっちゃん( @marin72_com )
きゃにーさん( @sugspi_c )
れあんくん( @favdragon_rean )
sicくん( @everysick )
最初はまともな人の集まりだと思っていた!!!!!
オリセンでいちごオレ見つけられなくて糞だった。

[2日目]
Alloyやばい。(よくわかってない
れあんくんはすぐ理解しててすごかった。
なっちゃん女子力低い
くないさんがwordheroをしているのを見る←すべての始まり
横にいるのにtwitterで会話してて怖かった。
いちごオレ見つけた。美味しかった。

[3日目]
Alloyやばい(まだ理解できてない
wordheroやばい!!!!
横にいるのにtwitterで返事をするというのになれる
既読のふぁぼというものの存在を知る
sicくんコミュ障(((
なっちゃん女子力ry

[4日目]
Alloyやばい(やっとおおまかに理解する
川渡り問題解く
15分くらいwordhero
19:00からプレゼン作り始める
清涼情報高校 校歌やばい。ゆんゆん!
東工大のサウンドロゴがツボに来る
(参考URL: http://www.titech.ac.jp/about/rule/s_logo.html)
よる部屋に帰ってからプレゼン余裕勢とか調子こいて、wordheloする。
夜は1:30くらいに寝ていたらしい。(いつの間にか寝ていた)

[5日目]
朝プレゼン完成していない(白目
完成していないといっても95%くらいは完成していたのでその場でちょいちょいね。
プレゼンした。
他の人のプレゼン見た。
Σの記号をもう半年くらい見なくていい…数学難しい…乱択楽しそう。
GPやばい(
沖縄高専の人のプレゼンがやばい。
いろんな人のプレゼンを聞いていて勉強になった。

[日時不明]
れあんくんのオレンジジュースに砂糖いれた。
なっちゃんのオレンジジュースにry
きゃにーさんに目の前で巨峰ジュースにガムシロ入れられるしかもきゃにーさん笑顔(
sicくんがれあんくんと主従関係希望してた。
@odiak_iくんにオリセンであった。
KMD先生がオリセンにいて焦った。
夏季セミ期間でいちごオレを結局2Lくらいしか飲んでいないような…
くないさん癒し系

[感想]
班員は全員高専生だったのでちょっと気が楽だった。(小並感
やはり高専生は周りと比べてまともな人のあつまりだった。(小並感
いろいろなスライドを見るといろんなことに興味が出てきてやばい((
Alloyやばい!楽しい!(小並感
wordhero楽しい。
多分今後Alloyについてはこのブログでも書かれていくと思う。



みなさんお疲れ様でした。
楽しかったです。ありがとうございました!

このへんにくないさんがまとめたプレゼンの様子(togetter)があります。
http://togetter.com/id/qnighy

僕がした発表。あろーい。



この記事は僕の記憶が蘇るたびに更新されます。

8/31 13:59 修正:wordheloってなんだよ。heroだろ(憤怒
9/3 01:32 slideshareのやつを追記。

突然のセグフォ!!!!(枠省略

最終日までバグが取れなかったので、サンプル投げてセグフォしましたテヘペロっ☆(ゝω・)v

[前日]
大阪つく。
ホテルつく。
大将行く。
中華丼来ない
やばい。
担々麺おいしかった。

[1日目]
阪大遠い
阪大広い
ないんたんが行ったキャンパスにいなくて残念
きゅうりさんを初めて拝見した

[2日目]
SampleをもらうDPに書き換えようと奮闘
バグしする
夜はホテルで遊んだ。
阪大の学食の緑の点数はサラダではつかないことを発見

[3日目]
バグ消えない。
やばば。
朝食を解く(´・_・`)

[4日目]
朝食を解く(´・_・`)
バグ消えない( í‿ì )
悲しみ(◞‸◟)

[懇親会]
いろんな人と実際にあってやばかった。
ろきしおんさんとかりひゅーとくんとかを拝見した

[結果]
セグフォ!!!!
もっと修行します…

フローを使うと解けるらしいので近いうちにそれをしよう。

フローーーーーマン


SuperConお疲れ様でしたん!
CUDA楽しかったので、近いうちにマスターしたい…

予選A

A.ぐるぐるした。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<vector>
#include<string>
#include<queue>
#include<map>
#include<stack>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<sstream>

#define rep(i,n) for(int i=0; i<(n); i++)
#define reps(i,n) for(int i = 1; i <= (n); i++)
#define PII pair<int,int>
#define PP pair< int,PII >

using namespace std;


int main(void){
	
	int n;
	int ans = 0;
	int c[100] = {0};
	scanf("%d", &n);
	
	c[0] = 1;
	reps(i,n){
		rep(j,i-1){
			c[i] += c[j];
		}
	}
	
	rep(i,n+1)
		ans+=c[i];
	
	
	printf("%d\n", ans);
	return 0;
}

B.Rubyでかいた。

i = gets().chomp!
i.gsub!(/\s+/,",")
puts i

まだシンプルになるなー。

puts gets().chomp!.gsub(/\s+/,",")

Cを解こう。
Dも解かないと…

動的継承きもい。

classes = []

class A
	def put
		puts "A"
	end
	def put1
		puts "A"
	end
end

classes << A

class B
	def put
		puts "B"
	end
	def put1
		puts "B"
	end
end

classes << B

class C < [A,B][rand(2)]
	def put1
		puts "C"
	end
end

classes << C

class D < classes[rand(classes.size)]
	def put2
		puts "D"
	end
end

x = D.new

x.put()
x.put1()

548 div2

easy
カモかアヒルか忘れたけどカゴとかよくわからない訳だったのでそれっぽいのを書いた。

	int minDucks(vector <int> du){
		int ans = 0;
		
		int a[64] = {0};
		
		for(int i = 0; i < du.size(); i++){
			a[du[i]]++;
		}
		
		int t = 0;
		for(int i = 0; i < 51; i++){
			if(a[i] > t){
				t = a[i];
			}
		}
		
		for(int i = 0; i < 51; i++){
			if(a[i]!= 0){
				ans += t;
			}
		}
		
		
		return ans;
	}

medium
王様が道路の横に植えた木の高さを魔法を使って良い感じにしていく感じ。
二分探索だった。if文の条件間違えててsystem落ちした。

	int minLevel(vector <int> h){
		int n = h.size();
		int s = 0,mi = 0,ma = 1000000000;
		int flg = 1;
		int ans = 0;
		for(int i = 1; i < n; i++){
			if(h[i] <= h[i-1]){
				flg = 0;
				break;
			}
		}
		if(flg)return 0;
		
		while(mi <= ma){
			s = (mi+ma)/2;
			int l[64] = {0};
			flg = 1;
			l[n-1] = h[n-1] + s;
			
			for(int i = n-2; i >= 0; i--){
				if(h[i] + s < l[i+1]){
					l[i] = h[i] + s;
				}else if(h[i] - s < l[i+1]){
					l[i] = l[i+1]-1;
				}else{
					l[i] = h[i] + s;
				}
			}
			
			for(int i = 0; i < n; i++){
				if(l[i] < 1){
					flg = 0;
				}
			}
			for(int i = 1; i < n; i++){
				if( l[i] <= l[i-1]){
					flg = 0;
					break;
				}
			}
			if(flg){
				ans = s;
				ma = s-1;
			}else{
				mi = s+1;
			}
		}
		return ans;
	}

頭悪いのをどうにかしないと。

予選ソース。

/* SuperCon 2012 予選問題C用テンプレート(問C,スーパーコン予選問題 兼 1級認定問題 2012版)
   ・解答プログラムはこのテンプレートに従って作成すること.
  ・解答プログラムは1つのファイルで,チーム名.c という名前にすること.
  ・入力の方式は,あらかじめ入力ファイル(例:input_sample.txt)を作っ
   ておき,実行時にファイル名を指定する方式です.
*/

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>

/* ↓以下の範囲は変更可能 */

const int INF = -2000000000;
int Wl;
int dp[16384];
int small[1024];
int wl[1024];
int maxJ;

int j, k, x, y, X, Y, flag;

/* ↑上記の範囲は変更可能 */

int main(int argc, char** argv){
	int answer = -1; /* この変数に答(Vの最大値)を代入してください */
	int N;
	static int v[1000];
	static char w[1000][10+1];
	static char W[10000+1];
	char* problem_file;
	clock_t start, end;
	FILE* fp;

	int i;
	char buf[0xffff];
	char* p;

	if(argc <= 1){
		fprintf(stderr, "Enter the input file.\n");
		exit(EXIT_FAILURE);
	}

	problem_file = argv[1];
	fp = fopen(problem_file, "r");
	if(fp == NULL){
		fprintf(stderr, "Cannot open %s.\n", problem_file);
		exit(EXIT_FAILURE);
	}

	p = fgets(buf, 0xffff, fp);
	assert(p != 0);

	N = atoi(strtok(buf, " \n"));
	assert(1 <= N && N <= 1000);

	p = fgets(buf, 0xffff, fp);
	assert(p != 0);
	p = strtok(buf, " \n");
	strcpy(W, p);
	assert(1 <= strlen(W) && strlen(W) <= 10000);
	for(p = W; *p; ++p){
		assert(islower(*p));
	}

	for(i = 0; i < N; ++i){
		p = fgets(buf, 0xffff, fp);
		assert(p != 0);
		v[i] = atoi(strtok(buf, " "));
		assert(-1000000 <= v[i] && v[i] <= 1000000);
		p = strtok(NULL, " \n");
		strcpy(w[i], p);
		assert(1 <= strlen(w[i]) && strlen(w[i]) <= 10);
		for(p = w[i]; *p; ++p){
			assert(islower(*p));
		}
	}

	fclose(fp);

	start = clock();

/* ↓以下の範囲は変更可能 */
	maxJ = 0;
	Wl = strlen(W);
	dp[0]=0;
	for(i = 0; i < N; ++i){
		wl[i] = strlen(w[i]);
	}

	for(i = 1; i < 16384; ++i){
		dp[i] = INF;
	}
	for(i = 1; i < 1024; ++i){
		small[i] = INF;
	}

	for(i = 0; i < N; ++i){
		for(j = maxJ; j >= 0; --j){
			if(dp[j] != INF){
				flag = 1;
				for(k = 0; k < wl[i]; ++k){
					x = j+k;
					X = W[x];
					Y = w[i][k];
					if( Wl <= x )goto A;
					if( X < Y )goto A;
					if( X > Y ){
						flag = 0;
						break;
					}
				}
				y = dp[j] + v[i];
				
				if(flag){
					x = j+wl[i];
					if(dp[x] < y){
						dp[x] = y;
						if(maxJ < x){
							maxJ = x;
						}
					}
				}else{
					if(small[i] < y){
						small[i] = y;
					}
				}
			}
			A:;
		}
	}

	for(i = 0; i <= maxJ; ++i){
		if(answer < dp[i]){
			answer = dp[i];
		}
	}

	x = 0;
	for(i = 0; i < N; ++i){
	    y = 0;
	    if(small[i] != 0){
	        y = small[i];
            for(j = i+1; j < N; ++j){
                if(v[j] > 0)y += v[j];
            }
            if(x < y)x=y;
	    }
	}

    if(answer < x)
        answer = x;

/* ↑上記の範囲は変更可能 */

	end = clock();
	printf("%s, %f, %d\n", problem_file, (double)(end - start) / CLOCKS_PER_SEC, answer);

	printf("%s, %d\n", problem_file, answer);
	return 0;
}

/* ↓以下の範囲は変更可能 */



/* ↑上記の範囲は変更可能 */