TopCoder

SRM 471 EllyPlaylists

class EllysPlaylists { public: int countPlaylists(vector <string> songs, int K) { int ret = 0; vector<string>::iterator it = songs.begin(); while( it != songs.end() ){ ret += seq( *it, K, 1, songs ); it++; } return ret; } int seq(string song, int K, int n</string></string>…

SRM 471 PrimeContainers

#include <set> #include <iostream> #include <string> #include <vector> #include <sstream> using namespace std; class PrimeContainers { public: int containerSize(int N) { int ret = 0; int i = 1; set<int> s; while(i){ if(i > N) break; s.insert( ( N / i ) ); i = i << 1; } set<int>::iterator </int></int></sstream></vector></string></iostream></set>…

SRM470 LinearTravellingSalesman

class LinearTravellingSalesman { public: int findMinimumDistance(vector <int> x, vector <int> y) { int ret = 0; vector< pair<int, int> > pos; for(int i = 0; i < x.size(); i++) pos.push_back( make_pair( x[i], y[i] ) ); sort( pos.begin(), pos.end() ); for(int i</int,></int></int>…

SRM469 TheMoviesLevelOneDivTwo

連続した2席があるかを見ていくだけ. #include <iostream> #include <vector> using namespace std; class TheMoviesLevelOneDivTwo { public: int find(int n, int m, vector <int> row, vector <int> seat) { int ret = 0; int s[n][m]; for(int i = 0; i < n; i++) for(int j = 0; j </int></int></vector></iostream>…

SRM468 RoadOrFlightEasy

はじめて臨んだTopCoder.以下のような強引なやり方は思いついたもののC++での書き方がわからず時間内にsubmitできず.行っているのは,差分のvectorをつくって,差分を降順ソート.roadTimeの合計-(差分の先頭からK個分の和).ただし,差分の値が0以下ならr…