弾記

2006-10-22

[]ICPC模擬コンテスト

 とりあえず始めて全ページ印刷して始めようかという雰囲気になった時点でA問題を解いているチームがすでにいくつかある。さすがに早いな、思いつつ着手。

 A,B問題は一時間とちょっとで解けたものの次に着手したE問題が厄だった?とりあえず数値積分で突撃してTLE。コード最適化したりしたら今度はwrong answerでアウト。仕方が無いからE問題は見なかった事にして次へ行くもFも詰まりCに着手しているときにタイムオーバー。最初にテンポ良く問題を解いていい流れが出来ていたので後半に問題が解けなかったのが悔やまれる。次にはいい成績が残せるように努力したい。

2006-07-09

[]初めてcgiを書いてみる

 今日コンベンションに行くつもりだったが寝過ごした。

 6時半に起きたけど二度寝して寝坊した。絶望した!

 腹いせにcgiを始めて書いてみる。

 最近オンセの六門クロスボーンが非常に快適だ。それも全自動複合判定装置が出来たからで、非常にスムーズに進むようになった。鳴海海域だと海釣り判定が非常に多くてセッションの遅延が解消されたのが大きかった。

 海釣りをすると素材を引く確率が高くなってきたのだが、素材が出るたびにルールブックをめくっていくのが非常にめんどくさい。だから素材を全部放り込んだら合成アイテムが出力されるようなスクリプトがあると便利だよね、って言われた気がしたから作ってみた。

 さて、初めてのcgi。つまりperlなわけだけど、外部ファイルのサブルーチンにアクセスできないとかフォームで日本語を飛ばすと16進数に変換されるとか結構面倒なことにぶち当たっていた。デコードするのも面倒だし、どうせ200行も書かないだろうということで無理やり決行。

 思ったよりバグを出すと全部の画面が見れないって面倒だね。

 バグが出てエラーコードを吐く→バグが出ているであろう箇所をコメントアウト→やっぱりエラーコードを吐く→なんで修正して無いところがバグる?→末端から順番にコメントアウトしてバグ探し→バグ発見→修正→コメント外す。この手順はやっぱり多いよ、超めんどくさい。

 なんかいろいろ考えて大体13時間くらいかけて完成。データの手打ちもあって指とか疲れた。

2006-06-11

pittrap2006-06-11

[]Gather the Maps!続き

 思いついた解法を頼りに作ってみたら、無事クリア。どうやら今までのコードだとこのサンプルが通らなかったらしい。このために丸一日使ってしまった

input

4

3 1 2 6

2 2 5

3 1 3 6

3 3 4 5

0

output

5

せっかくだからコードも晒す

#include<stdio.h>

int schedule[50][31];

int GathertheMaps(int t){

int answer = -1;

int maps[50][50] = {{0,},};

int i,j,min;

for(i = 0;i < t;i++){

maps[i][i] = 1;

}

for(i = 1;i <= 30;i++){

for(j = 0;j < t;j++){

if(schedule[j][i] == 1){

int k;

for(k = 0;k < t;k++){

if(schedule[k][i] == 1){

int l;

for(l = 0;l < t;l++)maps[l][k] = maps[l][j] | maps[l][k];

}

}

}

}

for(j = 0;j < t;j++){

int copy_num = 0;

int k;

for(k = 0;k < t;k++){

copy_num += maps[k][j];

//printf("%d ",maps[k][j]);

}

//printf("%d \n",copy_num);

if(copy_num == t){

answer = i;

i = 30;

break;

}

}

//printf("\n");

}

return answer;

}

int main(void){

int n,i,j,t,f;

for(;;printf("\n")){

//printf("check\n");

for(i = 0;i < 50;i++){

for(j = 1;j <= 30;j++){

schedule[i][j] = 0;

}

}

//printf("check2\n");

scanf("%d",&n);

if(n == 0)break;

//printf("%d\n",n);

for(i = 0;i < n;i++){

scanf("%d",&t);

//printf("%d ",t);

for(j = 0;j < t;j++){

scanf("%d ",&f);

//printf("%d ",f);

schedule[i][f] = 1;

}

//printf("\n");

}

//

/*

for(j = 0;j < n;j++){

int k;

for(k = 1;k <= 30;k++){

printf("%d ",schedule[j][k]);

}

printf("\n");

}

*/

//

printf("%d",GathertheMaps(n));

}

return 0;

}