2011年11月30日水曜日

パソコン欲しい

自分用のパソコンが欲しい。未だに共用のノートPCしかないので。
やっぱりMacBook Airが欲しい。13インチ。

誰か買って……

Emacsをインストールしたことを一応書いておく事に

Linuxのエディタとして有名らしいので、コーディングの練習にバリエーションを持たせる意味でインストールしてみました。

参考:http://www.randynetwork.com/blog/265  http://blog.mizoshiri.com/archives/988

yumのGUI使ってサッと検索してインストールすればいいはずだが、端末使いたい思いもあるので敢えてそっちで。

参考のサイトでyumだとバージョンが21とかになるらしいので(試して無いけど)、わざわざソースコードからインストール。

# wget http://ftp.gnu.org/pub/gnu/emacs/emacs-23.3b.tar.gz
# tar zxvf emacs-23.3b.tar.gz
# cd ./emacs-23.3
# ./configure --without-x
# make
# make install

とまでやって、起動してみると"Cannot open termcap database file"だの言われたので、そのままググってみると、"libncurses5-dev"なんてのをインストールしないといけないらしいので、

# yum install libncurses5-dev

の後に再度インストールしたら起動しました、と。

正直こんなこと書いて誰かの役に立つとは微塵も思わない。

2011年11月29日火曜日

JOI予選、去年の問題

なぜか入力3が出来るのに入力4,5が出来ない。あと例題2も出来ない。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
bool datascan();
int solve(int,int);
int a[512],amax;
long int memo[513][21];
long int ans = 0;


int main(void){
    int i,j;
    for(i = 0; i < 513; i++){
        for(j = 0; j < 21; j++){
            memo[i][j] = 0;
        }
    }
  
    if(datascan()){
        exit(EXIT_FAILURE);
    }
    solve(1,a[0]);
  
    printf("%d\n",ans);
    return 0;
  
}

int solve(int i,int sum){
    long int ret = 0;
    long int patn;
    if(i == amax - 1){
        if(a[amax - 1] == sum){
            ans++;
            return 1;
        }else{
            return 0;
        }
    }else if(memo[i][sum] != 0){
        ans = ans + memo[i][sum];
        return memo[i][sum];
    }else{
        if(sum + a[i] <= 20){
            patn = solve(i + 1,sum + a[i]);
            if(patn != 0){
                memo[i][sum] += patn;
                ret += patn;
            }
        }
        if(sum - a[i] >= 0){
            patn = solve(i + 1,sum - a[i]);
            if(patn != 0){
                memo[i][sum] += patn;
                ret += patn;
            }
        }
    }
    return (ret);
}

bool datascan(void){
    int i = 0;
    char fbuf[513],*p;
    FILE *fp;
    if((fp = fopen("2011-yo-t4-in5.txt","r")) == NULL){
        printf("file open error\n");
        return true;
    }
  
    fgets(fbuf,100,fp);
    sscanf(fbuf,"%d",&amax);
    fgets(fbuf,512,fp);
    printf("%s\n",fbuf);
    p = fbuf;
    do{
        sscanf(p,"%d",&a[i]);
        i++;
        p++;
    }while((p = strchr(p,' ')) != NULL);
  
  
  
    for(i = 0; i < amax; i++){
        printf("%d ",a[i]);
    }
    printf("\n");
  
    fclose(fp);
    return false;
}

一体何がダメなのか…
まぁ一応ここで12点取れてれば大丈夫な気はするけど。

2011年11月27日日曜日

入力が出来るようになった

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){
    int a[512],i = 0,n;
    char fbuf[256],*p;
    FILE *fp;
   
    if((fp = fopen("data","r")) == NULL){        //ファイルのオープン
        printf("file open error\n");
        exit(EXIT_FAILURE);
    }
   
    
   
    fgets(fbuf,100,fp);                                //ファイルから1行読み取ってfbufへ
   
    printf("%s\n",fbuf);                            //fbufの内容を出力

    p = fbuf;                                        //ポインタpにfbufのアドレスを代入
   
   
    //数字の読み込み
    do{
        sscanf(p,"%d",&a[i]);                        //ポインタpで指定された文字列から整数を取得
        i++;
        p++;                                        //ポインタを1つ増やす
    }while((p = strchr(p,' ')) != NULL);            //ポインタpで指定された文字列からスペースを探し、見つかればループを継続
 
  a[i] = -1;                                    //配列の最後を-1に設定

  i = 0;   
   
    //配列の出力
    while(a[i] >= 0){                            //a[i] >= 0ならa[i]を出力
        printf("%d ",a[i]);
        i++;
    }
    printf("\n");
   
    fclose(fp);                                        //ファイルのクローズ

    return 0;
}

もう情報オリンピックまで1ヶ月切ったというのに今更ファイルの入力が出来るようになった…
コメント文をこんなに書くのは初めてだからどうすればいいやら。

もっといいやり方があると思うけどな!

2011年11月1日火曜日

test

毎度お決まりの新しいブログ立ち上げる時のテストってやつで