[[プログラミングコンテスト]]

|問題|リンク|備考|h
|素数判定|http://arc017.contest.atcoder.jp/tasks/arc017_1||
|ナップザック問題(ダイナミックプログラミング)|http://abc032.contest.atcoder.jp/tasks/abc032_d|データセット1だけ通せばOK|
|シミュレーション|http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2311||
|全探索(グリッド)|topcoder SRM 150 Div2 Level 2||
|全探索(幅)|topcoder SRM 453.5 Div2 Level 2||
|全探索(深さ)|topcoder SRM 425 Div2 Level 2||

*ABCコンテスト [#df4e1da7]

 int a = 3;
 /*
 a = 5;
 */
 cout << a << endl; // 3

 int a = 5; a = 3; // a = 2; a = 1;
 cout << a << endl; // 3

 cout << 180/*cm*/ << endl;

-いわゆる「スコープ」

 int a = 0; 
 for (int i = 0; i < 10; i++) {
     a++;
 }
 cout << a << endl; // 10
 
 for (int i = 0; i < 10; i++) {
     int a = 0;
     a++;
     cout << a << endl; // どんな時も1
 }
 
 // cout << a << endl; // そしてここでaを出そうとするとコンパイルエラー

-二次元配列

 int a[2][3] = {};
 a[0][0] = 0;
 a[1][2] = 1;
 // a[2][2] = 0; // メモリバイオレーション!

-ソート

 sort(arr.begin(), arr.end())

-map

 map<string, int> a;
 a["moesan"] = 5;
 a["hamko"] = 24;
 
 for (map<string, int>::iterator it=a.begin(); it!=a.end(); it++) {
     cout << it->first << " => " << it->second << '\n';
 }
-6Bは、数学力いる。
-8Bは、mapというSTLを使わないとかなりきつい。map使わないと、僕でもめんどい。ググって
-9Bは、できなくないけど、かなりむつかしい。これはレギュラーコンテストのA問題レベル。
-10Bは面白いし、もえさんもできる
-11Bは、常に'A' < 'a';であることを知らないときつい。大文字のほうが、数字としては小さい。
-7Cがめっちゃ良問


-14B 二進数表記を、"0b"をはじめにつけるものと定義する。 
--int型は2進数32桁である。 

--例: 

 int a = 3; // 0b00000000000000000000000000000011 
 int b = 10; // 0b00000000000000000000000000001010 

--以下、さすがに0がいっぱいで面倒なので、はじめの0はできるだけ省略して説明する。 
--&→aとbで両方同じだったら1、違ったら0を出力
--|→どちらか片方にでも1があれば1、どっちも0なら0
-if (a & (1 << n))の意味は、「aのn bit目が1ならif文の中身を行う」
-a & (1 << n) の意味は、aのn bit目が0なら0、aのn bit目が1なら「2のn乗」

- if文
 if (1) { 
   cout << "見える" << endl; 
 }
 if (104) { 
   cout << "見える" << endl; 
 }
 if (-1) { 
   cout << "見える" << endl;
 }
 if (0) { 
   cout << "見えない" << endl; 
 }

 if (a & (1 << n)) { 
   cout << "n bit目は1" << endl; 
 } else { 
   cout << "n bit目は0" << endl; 
 }

 cout << (a & b) << endl; // 0b0011 & 0b1010 = 0b0010 
 cout << (a | b) << endl; // 0b0011 | 0b1010 = 0b1011 
 cout << (1 << 2) << endl; // 0b0100 
 cout << (a & (1 << 5)) << endl; // aの左から5ビット目が0なら0, そうでないなら何らかの数字が入る。

-17Bはちょい大変。以下を実行してみて、理解できれば多分OK 

 for (int i = 0; i < 100; i++) { 
     cout << i << endl; 
     if (i % 5 == 0)  
       i++; 
 }


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS