[参加記][codeforces] Codeforces Round #104 div2

oooox 4332pt/16th だった。

C

4->7の個数と7->4の個数を数える。可能な限りswapして残りを反転すると操作数はmax(4->7の数,7->4の数)になる。

D

答えは4と7で構成された数になるっぽいので、4を0、7を1と置き換えて考えてみた。c - dが最初と最後の数の差になる。差は-1,0,1にしかならないから、それ以外は-1を出力する。差が-1のときは答えは 1(1+0)*0,1のときは 0(1+0)*1,0のときは 0(1+0)*0または1(1+0)*1になる。それぞれの場合についてうまく最小となるように数字を作れば良い。

int main(){
  int a,b,c,d;
  while(cin>>a>>b>>c>>d){
    //printf("%d %d %d %d\n",a,b,c,d);
    if(max(c,d) > min(a,b)){
      cout<<-1<<endl;
      continue;
    }
    if(abs(c-d) > 1){
      cout<<-1<<endl;
      continue;
    }
    if(c == d){
      if(a == c && b == c){
        cout<<-1<<endl;
      }else if(a == c){
        REP(i,a)cout<<"74";
        REP(i,b-c)cout<<"7";
        cout<<endl;
      }else{
        REP(i,a-c-1)cout<<"4";
        REP(i,c)cout<<"47";
        REP(i,b-c)cout<<"7";
        cout<<"4"<<endl;
      }
    }else if(c > d){
      REP(i,a-c)cout<<"4";
      REP(i,c)cout<<"47";
      REP(i,b-c)cout<<"7";
      cout<<endl;
    }else if(c < d){
      cout<<"74";
      REP(i,a-d)cout<<"4";
      REP(i,d-2)cout<<"74";
      REP(i,b-d)cout<<"7";
      cout<<"74"<<endl;
    }
  }
  return 0;
}

感想

D問題のような場合分けで失敗したら即死な問題は、小さい数について全探索で解が正しいか確認するべきだった。

ブックリスト

テストが近くなるととたんに勉強とは関係のない本を読みたくなる現象が発生した。
後々のために読みたい本リストでも書いておくことにします。

C++プログラミング入門

C++プログラミング入門


集合知プログラミング

集合知プログラミング


Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

冬休み終了のお知らせ。

先月30日から3日まで実家にひきこもってました。

冬休みといっても、普段から講義に行ってないので、実家に帰ること以外大して生活は変わらないものです。

冬休み中にあった出来事といえば、30日に@wand125と会ったことかな。
昼ぐらいにサープラで合流して、各種音ゲーをやった後、ご飯食べつつパソコン開きながら喋った。
こういうコミュニケーションの仕方は非常に落ち着きます。
色々喋った感想は、グラフィカルに面白さが伝えられるプログラムを書かないといけないなあということ。
競プロばっかりやってると、ある種自己満足だけで終わってしまうので良くない。

新年ですね。

明けましておめでとうございます。

せっかくなので、今年の抱負でもあげておこう。

  • topcoderのratingを800上昇させる
  • 何らかのきちんとしたアプリケーションを完成させる。
  • 留年しない。
  • バイトをする。

言うだけなら簡単。

solarized 導入

f:id:ichyo:20111231015314p:plain

vimとterminalの色設定をSolarizedにしました。おしゃれかつ、低コントラストで目に優しいです。導入の際に詰まった点があるので、メモっておきます。

まず、http://ethanschoonover.com/solarizedのClick here to download latest versionをクリックして、設定ファイルをダウンロードします。展開した先のosx-terminal.app-colors-solarized/xterm-256color/Solarized Dark xterm-256color.terminalを実行するとterminalに色設定ファイルが追加されます。

Solarized.vimのインストールにはvundleを使います。vundleのインストール方法はhttp://vim-users.jp/2011/04/hack215/を参照してください。.vimrcに

Bundle 'altercation/vim-colors-solarized'

を追加して:BundleInstallを実行すれば完了。.vimrcに

syntax enable 
set background=dark
colorscheme solarized

を追加すれば色設定が変わります。

自分の環境だと上の設定だけじゃうまく表示されなかったので、.vimrcを

syntax enable
set background=dark
let g:solarized_termcolors=256
colorscheme solarized

に変更して、256色terminal用のcompatibleモードで動かしてます。:h solarizedには

>I recommend just changing your terminal colors to Solarized values either manually or via one of the many terminal schemes available for import.
と書いてあるのだけど、うまく設定する方法がわからなかったのでこのままで使い続けることにしました。