夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

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;
   }
};

感想

とりあえず久しぶりのSRMにしてはまぁまぁだった気がします。
多分僕だとEasyが順当に通ってレートがかすかに上がるぐらいなんで堅実に。

次は飛躍を目指したいです。