PKU 2181 Jumping Cows

  • 動的計画法
  • 次に奇数の液体を飲む場合は偶数番目の液体を飲んだ後の力の最大値+strengthに更新する
  • 次に偶数の液体を飲む場合は上記の逆
int main() {
	int odd = INT_MIN / 2;
	int even = 0;
	int P;
	cin >> P;
	for (int i = 0; i < P; ++i) {
		int strength;
		cin >> strength;
		const int nextOdd = max(odd, even + strength);
		const int nextEven = max(even, odd - strength);

		odd = nextOdd;
		even = nextEven;
	}
	cout << max(odd, even) << endl;
}