Codeforces Round #206 (Div. 2) / 355C (轉化&枚舉)

http://codeforces.com/contest/355/problem/C


枚舉i,左手操作了i次,右手操作了n-i次,然後重複次數可以直接算出來,所以答案就可以在O(n)的時間內算出來。

/*30ms,4000KB*/

#include<bits/stdc++.h>
using namespace std;

int a[100005];

int main()
{
	int n, l, r, q1, q2;
	cin >> n >> l >> r >> q1 >> q2;
	for (int i = 1; i <= n; i++) cin >> a[i], a[i] += a[i - 1];
	int ans = INT_MAX;
	for (int i = 0; i <= n; i++)
	{
		int tmp = a[i] * l + (a[n] - a[i]) * r;
		if (2 * i > n + 1) tmp += q1 * (2 * i - n - 1);
		else if (2 * i < n - 1) tmp += q2 * (n - 2 * i - 1);
		ans = min(ans, tmp);
	}
	cout << ans << endl;
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章