SRM411Easyと本番〜キリ番回
どうもです〜
チャレンジが不可能だとわかったのでブログ書いちゃいますね(笑)
SRM411 Div.2 Easy
ストレートフォワードで解けなさそうで解ける問題。
class MaximumScoredNumber { public: int calc(int num) { int res=0; for (int i=0; i*i<=num; i++) for (int j=i; j*j<=num; j++) { if (i*i+j*j==num) res++; } return res; } int getNumber( int lowerBound, int upperBound ) { int res=-1, temp=-1; for (int i=lowerBound; i<=upperBound; i++) { int n=calc(i); // cout<<n<<endl; if (n>temp) { temp=n; res=i; } else if (n==temp) { res=i; } } return res; } };
SRM512 Div.2 Easy
簡単
class MarbleDecoration { public: int maxLength( int R, int G, int B ) { int res; vector<int> num(3); num[0]=R; num[1]=G; num[2]=B; sort(num.begin(), num.end()); int max_n=num[2],semi=num[1]; if (max_n==semi) res=semi*2; else res=semi*2+1; return res; } };
Medium
注:誤答コード
途中しばらくあきらめてなかったらもしかしたらできたかも…
class MysteriousRestaurant { public: int maxDays( vector <string> prices, int budget ) { int res=0,sum=0; int num[prices.size()][prices[0].length()]; for (int i=0; i<prices.size(); i++) for (int j=0; j<prices[0].size(); j++) { if (isalnum(prices[i][j])) num[i][j]=prices[i][j]-'0'; else if (prices[i][j]>='A'&&prices[i][j]<='Z') num[i][j]=prices[i][j]-'A'+10; else num[i][j]=prices[i][j]-'a'+36; } vector<int> type(7,-1); for (int i=0; i<prices.size(); i++) { int min_n=62; if (i<7) { for (int j=0; j<prices[i].length(); j++) if (min_n>num[i][j]) { min_n=num[i][j]; type[i]=j; } if (sum+min_n<=budget) { sum+=min_n; res++; } else { break; } } else { int copy=sum; for (int ix=i-7; ix>=0; ix-=7) copy-=num[ix][type[i%7]]; int min_sum=1000000000; for (int j=0; j<prices[0].length(); j++) { int tsum=0; for (int ix=i; ix>=0; ix-=7) tsum+=num[ix][j]; if (tsum<min_sum) { min_sum=tsum; type[i%7]=j; } } if (min_sum+copy<=budget) { sum=min_sum+copy; res++; } else { break; } } } return res; } };