题意:
电梯要停在x层,每天早上要从x层去a层接人送到1层再回到x层的等待,每天晚上要从x层下到1层接人送到a层,再回到x层(对每层的乘客都是如此),电梯每走一层耗电1,问电梯停在那一层,每天的耗电最少。(电梯每次运载1人)
思路:
此题不难,就是读题太费劲,数据量不大,暴力去找每一层即可,对于a层的乘客,每天的耗电为:
a[i] * (fabs(i - index) + i + index - 2) * 2
Code:
#include <iostream>
#include <cmath>
#define INF 0x3f3f3f3f
#define max(x, y) (x >= y ? x : y)
#define min(x, y) (x < y ? x : y)
using namespace std;
const int maxn = 105;
int a[maxn];
int n;
int solve(int index)
{
int sum = 0;
for (int i = 1; i <= n; i++)
{
sum += a[i] * (fabs(i - index) + i + index - 2) * 2;
}
return sum;
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
int ans = INF;
for (int i = 1; i <= n; i++)
{
int val = solve(i);
ans = min(ans, val);
}
cout << ans << endl;
return 0;
}