2011-04-01から1ヶ月間の記事一覧

ビット演算、2進法での取り扱い, bool

C++では、2進法を取り扱うのに文法は特にない。1000100なら、2みたいに個数をカウントする。 while(n) { n = n & n-1; //n = 10010 &10001 //0になるときは、たとえば、n=10000のとき。 n = 10000 & 01111; } 結構定番みたい。 n = n >> 1; //10010->01001…

日付関数

閏年か判定 bool isleap(int year) { return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; } 01:01:01とかになってたら、変換 sscanf(time, "%d:%d:%d", &hh, &mm, &ss); //string str = "01:01:01"とかなら、 for(int i = 0; i iss(str); iss >…

STL #include vector のまとめ。

元々の定義はこんな感じ. vector(); vector( const vector& c ); explicit vector( size_type num, const T& val = T() ); vector( input_iterator start, input_iterator end ); vector test(sz); //sz:要素数 vector test(sz, 0) //五個の要素を0で初期化…

STL #include stringのまとめ。

以外と曖昧なコンストラクタの実験から. string ( ); string ( const string& str ); string ( const string& str, size_t pos, size_t n = npos ); string ( const char * s, size_t n ); //Content is initialized to a copy of the string formed by the…

オペレータ

class LessInt { public: bool operator()(const int& riLeft, const int& riRight) const { return riLeft ()); //と、あたかも、コンストラクタを呼び出しているがごとく見える. sort(a.begin(), a.end(), cmp) // このとき、クラスは入れ子にできるよ. …

発想の転換

計算機は小数点とか扱うの苦手なので、あまり÷(/)を使わない. できるだけ×をつかうと、int型のみで済む.doubleに変換しなくても良くなる. とくに、座標計算とか、角度もとめるとかはもろにそうで、 int x, y; ならば、 arg = atan2(y, x) とかとやるより…

端末の配置  本郷

以下の表では,ユーザ携帯端末接続環境のためのRJ-45コンセントを用意した席の数を示す項を「有線接続」,無線LANが使用できる場所を○×で示す項を「無線接続」と記す. 端末台数の後にある括弧内の記号は,入出力機器が設置されている端末があることを表して…

java的な文字の扱い。

char ->intの扱いがC++とちょっと違うっぽい。 public static void main(String[] args) { for(int i = 0; i

Member Pilot Round1 div2 medium

なかなか面白い問題で、人によって解き方多少違うと思う. 自分は(練習のために)キューを使いました.というか、キュー使わないと計算量がひどくなりそう. e.g) A B C ERDOS B D D E F G ans:: A:1 B:1 C:1 D:2 E:3 F:3 G ERDOS:0 vector calculateNumber…

衝突問題

SRM458 div2 medium ボールを衝突させるとき、 for(int i = 0; i

関数アダプタ

bind2nd, bind1st :第一引数、第二引数を固定。 count_ifなどの..._if系統 template typename iterator_traits::difference_type count_if( InputIterator first, InputIterator last, UnaryPredicate p ); transform template OutputIterator transform( In…

幅検索の注意.

SRM453.5 div2 medium int longestPath(vector maze, int startRow, int startCol, vector moveRow, vector moveCol) { int row = maze.size(); int col = maze[0].length(); int step[row][col]; //初期化 for(int i = 0; i > que; step[startRow][startCol…

SRM457 div2 medium

問題を理解はできるが、どう効率よく、分かりやすく組んだらいいか迷ってしまった問題。 12:59 GMT-6問題.とりあえず列挙して、当てはまったものだけをピックアップしてそれから最小の時間を導出するのが、一番分かり易そう。 bool valid(char* s, string t…

SRM453 div2 medium

int find(vector table) { int team = table.size(); vector win(team, 0); //count win number for(int i = 0; i (win[i] >= win[j]) ? ++win[j] : ++win[i]; } } } return *max_element(win.begin(), win.end()); } //貪欲法で

SRM465 div2 改題

2つの棟をたてるのではなく、与えられたすべての座標に塔をたてるときの場合の数はどうなるんだろう.

二分法

SRM462 div2 medium 二分検索でもよく使う方法. seek //入力 low = 0; high = 100 while(1) { int mid; mid = (low+high)/2; int calc = ...; //何らかの処理(midを仮引数に関数の戻り値を使用) if(calc > seek) { ///中間の値が大きい->high(最大値)を下げ…

配列を交互に足す 番兵の有効活用

降順に並んだ配列が二つあるとする.サイズは同じとは限らない. 配列を作るときに0を仕込んでおく。(番兵) //0入れる前にa.size(), b.size()を確定させる. a: 7 5 4 2 0 b: 8 3 1 0 //交互に足していって、stop以上になるときの最小の要素数を返す. //…

SRM 460 div2 medium

SRM 460 div2 medium かなりはまった。 i 0 1 2 cnt 4 2 1 ---------------------------------------------- sum 20 15 30 このとき、cnt[0,i) / sum[0,i); としてはいけない。なぜなら、それぞれの都市に行く確率は全く同じだから。 この図で言うと、i = 2;…

bitset使ってみた. combination::nCrの列挙

がんばって、Combinationの列挙をしてみた. #include #include #include #include #include using namespace std; long long mypow(int k, int n) { long long ans = 1; for(int i = 0; i > comb; long long sz = mypow(2, N); int begin = (1 tmp(i); vect…

code forceのコードの基本的な書き方

#include #include using namespace std; int main(){ int n,t,k; cin>>n>>k>>t; //Input t = t*k*n/100.0; while(n--){ cout

コンテストリンク集

<コンテスト> ・日本情報オリンピック:http://www.ioi-jp.org/ ・Supercon:http://www.gsic.titech.ac.jp/supercon/main/attwiki/ ・パソコン甲子園:http://web-ext.u-aizu.ac.jp/pc-concours/ ・ACM-JAPAN:http://www.acm-japan.org/ ・愛媛大学プロ…

4月の単語

increase by ~% ~%増加する。->~まで増加するではないので、注意.

sortの使い方

#include template void sort( RandomAccessIterator start, RandomAccessIterator end ); template void sort( RandomAccessIterator start, RandomAccessIterator end, Compare cmp ); 構造体をソートするには、 vectorType> c; bool cmp(const Type& a, c…

#include

for_each 便利そうだけど当分使いそうもない。 template UnaryFunction for_each( InputIterator first, InputIterator last, UnaryFunction f ); template struct increment : public unary_function { //継承してる void operator()(T& x) { x++; } }; //x…

findの使い方

まずはfindから。 string型には、もう定義されてる #include size_type find( const string& str, size_type index = 0 ) const; size_type find( const charT* str, size_type index = 0 ) const; size_type find( const charT* str, size_type index, size…

SRM div2 500

一応自分が書いたコード #include #include #include #include #include #include #include using namespace std; class MovieSeating { private: long long permutation(int n, int r); public: long long getSeatings(int numFriends, vector hall) { int …

SRM 471 div2 500

Problem Statement Elly is great fan of consistency. She would like to have order in even the simplest things in life – like listening to music. She has chosen several songs from which she wants to compose a playlist. The names of these son…

ビビる問題 TopCoder

SRM477 div2 medium SRM478 div2 medium できなかった問題 SRM 469 div2 medium //問題の意味が読み取れなかった

#include map, set

mapを使う機会は余りなさそうだけど.よく使う場面が人物(string型)と数字を関連させたい時. table表を作って動的計画法を行なう時とかにも結構大きな効果がある. 一番いいところはtableにすると見やすいところ.そして何より、 //aaaaaaは初めていれる文…

switch文を実験してみる.

//4を選択--> 1~4までが順番に実行される. 4, 3, 2, 1とやると結果が異なる。 int year; //仮引数。 int sw = 1; while(year >= 1 && sw //ifを使う. if(year >= 1) ... if(year >= 2) ... if(year >= 3) ... if(year >= 4) ... if(year >= 5) ... yearがi…