[参加記][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問題のような場合分けで失敗したら即死な問題は、小さい数について全探索で解が正しいか確認するべきだった。
ブックリスト
テストが近くなるととたんに勉強とは関係のない本を読みたくなる現象が発生した。
後々のために読みたい本リストでも書いておくことにします。
- 作者: グレゴリーサティア,ダウグブラウン,Gregory Satir,Doug Brown,望月康司,谷口功
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2001/11
- メディア: 単行本
- 購入: 7人 クリック: 85回
- この商品を含むブログ (23件) を見る
- 作者: Toby Segaran,當山仁健,鴨澤眞夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/07/25
- メディア: 大型本
- 購入: 70人 クリック: 1,793回
- この商品を含むブログ (258件) を見る
Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- 作者: スコット・メイヤーズ,小林健一郎
- 出版社/メーカー: ピアソン・エデュケーション
- 発売日: 2006/04/29
- メディア: 大型本
- 購入: 22人 クリック: 300回
- この商品を含むブログ (171件) を見る
テスト
もうすぐテスト。滅びの時は近い。
冬休み終了のお知らせ。
先月30日から3日まで実家にひきこもってました。
冬休みといっても、普段から講義に行ってないので、実家に帰ること以外大して生活は変わらないものです。
冬休み中にあった出来事といえば、30日に@wand125と会ったことかな。
昼ぐらいにサープラで合流して、各種音ゲーをやった後、ご飯食べつつパソコン開きながら喋った。
こういうコミュニケーションの仕方は非常に落ち着きます。
色々喋った感想は、グラフィカルに面白さが伝えられるプログラムを書かないといけないなあということ。
競プロばっかりやってると、ある種自己満足だけで終わってしまうので良くない。
新年ですね。
明けましておめでとうございます。
せっかくなので、今年の抱負でもあげておこう。
- topcoderのratingを800上昇させる
- 何らかのきちんとしたアプリケーションを完成させる。
- 留年しない。
- バイトをする。
言うだけなら簡単。
solarized 導入
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.
と書いてあるのだけど、うまく設定する方法がわからなかったのでこのままで使い続けることにしました。