2011年02月07日
SRM496Div2
やはり課題は速さか。。。
250p AnagramFree ○
文字列がいくつか与えられ、アナグラムになっていない組がいくつあるか求める問題。
class AnagramFree { public: int getMaximumSubset(vector <string> S) { if(S.size()<2) return S.size(); int res=1; for(int i=0;i<S.size();++i){ stable_sort(S[i].begin(),S[i].end()); } stable_sort(S.begin(),S.end()); cout<<S[0]<<endl; string tmp = S[0]; for(int i=1;i<S.size();++i){ if(S[i]!=tmp){ res++; tmp = S[i]; } } return res; } };
500p ColoredStrokes ○
横に赤、縦に青を塗ることができ、重なったところは緑になるというルールで絵を書いていき、与えられた絵を何回で塗ることができるかを求める問題。
class ColoredStrokes { public: int getLeast(vector <string> picture) { int res=0; int r = picture.size(); int c = picture[0].size(); for(int i=0;i<r;++i){ int j=0; int a=0; bool f; while(j<c){ cout<<"i:"<<i<<"j:"<<j<<endl; if(picture[i][j]=='R'||picture[i][j]=='G') f=true; else f=false; while(picture[i][j]=='R'||picture[i][j]=='G'){ j++; if(j>=c) break; } if(f) a++; cout<<"a:"<<a; f=false; j++; cout<<endl; } res+=a; } for(int i=0;i<c;++i){ int j=0; int a=0; bool f; while(j<r){ cout<<"j:"<<j<<"i:"<<i<<endl; if(picture[j][i]=='B'||picture[j][i]=='G') f=true; else f=false; while(picture[j][i]=='B'||picture[j][i]=='G'){ j++; if(j>=r) break; } if(f) a++; cout<<"a"<<a; f=false; j++; cout<<endl; } res+=a; } return res; } };
1000p PalindromfulString ×
Challenge Phase -25p
あえなくちゃれんじしっぱい
2010年12月21日
SRM491 Div2
撃墜のおかげでレートがあがったorz
250p OneDigitDifference ○
数字がひとつ違いで一番小さいものを求める問題。0のときは1でそれ以外は一番上の桁を0にしたものになるというもの。
#include <cmath> #include <iostream> #include <string> #include <vector> using namespace std; class OneDigitDifference { public: int getSmallest(int N) { if(N==0) return 1; int res=0; int a=N;int b=0; while(N>10){ b++; N/=10; } res=a-N*(int)pow(10.0,b); return res; } };
500p FoxMakingDiceEasy ×
ひとつの目が1からNで両面の和がK以上のさいころが何通りできるか求める問題。数学ゲー
#include <iostream> #include <string> #include <vector> using namespace std; class FoxMakingDiceEasy { public: int theCount(int N, int K) { int res=0; for(int a=1;a<=N-5;++a){ for(int b=N;b-a>=5;--b){ int t=(b-a-1)/2; if(a+b>=K) res+=t*(t-1); } } return res; } };
1000p BottlesOnShelf ×
Challenge Phase 50p
2010年10月21日
SRM485 Div2
問題を正確に読めるようになりたいです。
250p MicrowaveSelling ×
minPrice以上maxPrice以下のなるべく多く9が後ろについた値段でレンジ?を売りたいという問題。単に9が多く付けばいいと勘違いしてFailed System Test。
#include <iostream> using namespace std; class MicrowaveSelling { public: int mostAttractivePrice(int minPrice, int maxPrice) { int r = minPrice, res = r, m = 0; while(r <= maxPrice){ int t = r, cnt = 0; while(t%10==9){ // 最後から連続で9 cnt++; t/=10; } if(cnt>=m){ m=cnt; res=r; } r++; } return res; } };
500p AfraidOfEven ×
N個からなる数列に対して偶数がキライな少年が偶数を2で可能な限り割ってしまうので、元の数列を答える問題。
1000p RectangleAvoidingColoringEasy ×
N×Mの板に白黒に色が塗ってあり、どの4点からなる長方形をとっても必ず1つ以上白と黒があるときrectangle-avoidingという。板には塗っていない部分もあり、これを白黒どちらかに塗ってrectangle-avoidingになる塗り方が何通りかを求める問題。
Challenge Phase 50p×2
250p問題の自分と同じミスしてる人を2人撃墜。。。自分が間違ってちゃ元も子もないですが。。。