TopCoder SRM503 Div2

久々にEasyが提出できた記念(前回は-50pt)
相変わらず問題の意味がよくわからない。
多分Div2Hardの内容は理解できてたけど、実装力がなくて断念。

Easy

トーストだとか問題の意味がよくわからなかったけど、examplesを見て回答。

class ToastXRaspberry{
public:
	static int apply(int upper_limit, int layer_count){
		return (layer_count % upper_limit ? 1 : 0) + (layer_count / upper_limit) ;
	}
};

Medium

トーストマンの頭はパンで出来ている。
これは答えられなかったけど、唯一部屋でPassed System Testしてた人のコードを見たら凄くシンプルで笑った。
きれいに整形したコードを書いとく。

class ToastXToast{
public:
	static int bake(vector <int> under, vector <int> over){
		int umax = *max_element(under.begin(), under.end());
		int umin = *min_element(under.begin(), under.end());
		int omax = *max_element(over.begin(), over.end());
		int omin = *min_element(over.begin(), over.end());
		if(omax <= umax || omin <= umin) return -1;
		return umax < omin ? 1 : 2;
	}
};

Hard

いくつかの街と村がありました。出来るだけ短く道路を作るだけで済むように街と村を繋げてやってください。って問題だと思う。
で、最初は街と村を単純に繋いで、道路の距離の合計を返そうとした。
しかしそれでは、街-村-村というケースに対しては、3.0を返そうとしてしまうので、ダメ。(正解は2.0。)
Mediumでひっかかってたので時間もなく、そのまま終了。
この手の解法は全くやった事がないので思いつかない。知識不足ですなぁ。