Div2Easy 10連戦
最近TopCoderの成績がひどいので、とりあえずDiv2Easyを確実にとれるようにしようと思ってプラクティスしました。
てことでDiv2Easy 10連戦のソース(プリプロセッサ部分とかもろもろは省略してます)
SRM416
map使って解いた
class MostCommonLetters { public: string listMostCommon(vector <string> text) { string result=""; string cc=""; map<char,int>log; int mx=-10; for(int j=0;j<text.size();j++){ for(int i=0;i<text[j].size();i++){ if(text[j][i]!=' '){ log[text[j][i]]++; mx=max(log[text[j][i]],mx); } } } for(map<char,int>::iterator it=log.begin();it!=log.end();it++){ if((*it).second==mx) result+=(*it).first; } return result; } };
SRM417
reverse()使えばもっと短く早く書けるけど知らずに実装してしまったorz
class ReversedSum { public: void IntToString(char *str, int number) { sprintf(str, "%d", number); } string sx; string sy; int Rev(int i){ string res; char sNum[30]; IntToString(sNum,i); res=sNum; int max=res.size()%2==0?res.size()/2:res.size()/2+1; for(int j=0;j<max;j++){ char t=res[j]; res[j]=res[res.size()-1-j]; res[res.size()-1-j]=t; } return atoi(res.c_str()); } int getReversedSum(int x, int y) { int result; result=Rev(Rev(x)+Rev(y)); return result; } };
SRM476
全部実装してバグってふぇーい
青様のコードを拝見させていただいて、すごい単純に書ける事が判明
class MatrixShiftings { public: int minimumShifts(vector <string> matrix, int value) { int result=10000000; for(int i=0;i<matrix.size();i++){ for(int j=0;j<matrix[0].size();j++){ if(matrix[i][j]-'0'==value){ int f,ff; f=ff=0; f=matrix.size()-i<i?matrix.size()-i:i; ff=matrix[0].size()-j<j?matrix[0].size()-j:j; result=result<(f+ff)?result:f+ff; } } } if(result!=10000000) return result; return -1; } };
SRM477
やるだけ(半分眠りながら書いた気がする)
class VacationTime { public: bool Match(int t,vector<int>wd){ for(int i=0;i<wd.size();i++){ if(wd[i]==t) return true; } return false; } int bestSchedule(int N, int K, vector <int> workingDays) { int result=10000; sort(workingDays.begin(),workingDays.end()); for(int i=1;i<=N;i++){ int ch=0; if(i+K-1>N) break; for(int j=i;j<i+K;j++){ if(Match(j,workingDays)) ch++;// } result=min(result,ch); } return result; } };
SRM479
今までで一番高得点(236)だった気がする
いや普通もっと行くでしょ
class TheAirTripDivTwo { public: int find(vector <int> flights, int fuel) { int result; int i; for(i=0;i<flights.size();i++){ if(fuel<flights[i]) break; fuel-=flights[i]; } result=i; return result; } };
SRM480
long long 返す関数なのに int 返してて桁があふれて5分ぐらい無駄にした
class Cryptography { public: long long times(int t,vector<int>n){ n[t]++; long long res=1; for(int i=0;i<n.size();i++) res*=n[i]; return res; } long long encrypt(vector <int> numbers) { long long result=-100000; for(int i=0;i<numbers.size();i++){ result=max(times(i,numbers),result); } return result; } };
SRM481
ヨセフス? とか思ったけど普通にやるだけ
class CircleMarket { public: int makePurchases(vector <int> openTime, vector <int> closeTime, int travelTime) { int result=0; int tm=0; int mx=-100; vector<bool>already; for(int i=0;i<closeTime.size();i++) already.push_back(false); for(int i=0;i<closeTime.size();i++) mx=max(closeTime[i],mx); while(tm<=mx){ for(int i=0;i<openTime.size();i++){ if(openTime[i]<=tm && tm<=closeTime[i] && already[i]==false){ result++; already[i]=true; } tm+=travelTime; } } return result; } };
SRM483
穴!
書くのめんどくさい
class DigitHoles { public: void IntToString(char *str, int number) { sprintf(str, "%d", number); } int numHoles(int number) { char c[1000]; IntToString(c,number); string s=c; int hole=0; for(int i=0;i<s.size();i++){ if(s[i]=='0' || s[i]=='4' || s[i]=='6' || s[i]=='9') hole++; else if(s[i]=='8') hole+=2; } return hole; } };
SRM484
書くのめんどくさい(切実
黄様のコードみたらもっと少なく書いてて、法則性があったらしいけどもうこれでいいや
class NumberMagicEasy { public: int theNumber(string answer) { int result; int number[17]; for(int i=1;i<17;i++) number[i]=i; for(int i=0;i<answer.size();i++){ if(answer[i]=='N'){ if(i==0){ number[1]=0; number[2]=0; number[3]=0; number[4]=0; number[5]=0; number[6]=0; number[7]=0; number[8]=0; }else if(i==1){ number[1]=0; number[2]=0; number[3]=0; number[4]=0; number[9]=0; number[10]=0; number[11]=0; number[12]=0; }else if(i==2){ number[1]=0; number[2]=0; number[5]=0; number[6]=0; number[9]=0; number[10]=0; number[13]=0; number[14]=0; }else if(i==3){ number[1]=0; number[3]=0; number[5]=0; number[7]=0; number[9]=0; number[11]=0; number[13]=0; number[15]=0; } } } for(int i=1;i<17;i++){ if(number[i]!=0) return number[i]; } return -1; } };
SRM487
バニーちゃん かわいいお
やるだけっぽい
class BunnyExamAfter { public: int find(char t,string s){ for(int i=0;i<s.size();i++){ if(s[i]==t) return i; } return -1; } int getMaximum(string black, string gray, string white) { int result=0; for(int i=0;i<black.size();i++){ if(black[i]==gray[i]) gray[i]='0'; if(black[i]==white[i]) white[i]='0'; } for(int i=0;i<gray.size();i++){ if(gray[i]==white[i] && gray[i]!='0' && white[i]!='0') result+=2; if(gray[i]!=white[i]) result++; } // cout<<gray<<endl<<white<<endl; return result; } };
元旦は部屋にこもってずっとこれやってましたー(・ω<)☆テヘペロ