三年目の初学者(5問目)
問題
topcoder SRM 601 div1 easy
TopCoder Statistics - Problem Statement
使用言語
C++
サンプルケースの検証
(リンゴの個数, オレンジの個数)で表すとする。
{7, 4, 5}
{1, 10, 2}のとき
1個の時 (3, 0)~(0, 3)
2個の時 (6, 0)~(1, 5)
3個の時 (9, 0)~(3, 6)
...
赤字のところの差が各個数-1になる
→ max_a += min(i, apple[j]);
min_a += max(0, i - orange[j]);
所感
・問題の理解がしにくかった
・実際に紙に書くのは大事
コード
int check_combination(int i, vector<int> apple, vector<int> orange) { int max_a = 0, min_a = 0; for (int j = 0; j < apple.size(); j++) { max_a += min(i, apple[j]); min_a += max(0, i - orange[j]); } return max_a - min_a + 1; } class WinterAndPresents { public: long long getNumber(vector<int> apple, vector<int> orange) { vector<int> sum; long long ans = 0; for (int i = 0; i < apple.size(); i++) { sum.push_back(apple[i] + orange[i]); } for (int i = 1; i <= *min_element(sum.begin(), sum.end()); i++) { ans += check_combination(i, apple, orange); } return ans; } };