0
点赞
收藏
分享

微信扫一扫

圆形牛棚(寒假每日一题 22)

作为当代建筑的爱好者,农夫约翰建造了一个完美圆环形状的新牛棚。

牛棚内部有 圆形牛棚(寒假每日一题 22)_顺时针 个房间,围成一个环形,按顺时针编号为 圆形牛棚(寒假每日一题 22)_ios_02,所有相邻房间之间的距离均为 圆形牛棚(寒假每日一题 22)_算法_03

每个房间都既有通向相邻两个房间的门,也有通向牛棚外部的门。

约翰想让第 圆形牛棚(寒假每日一题 22)_i++_04 个房间内恰好有 圆形牛棚(寒假每日一题 22)_枚举_05 头牛。

为了让奶牛们有序的进入牛棚,他计划打开一个外门,让牛从该门进入。

然后,每头牛顺时针(即当 圆形牛棚(寒假每日一题 22)_ios_06 时,第 圆形牛棚(寒假每日一题 22)_i++_04 个房间只能走到第 圆形牛棚(寒假每日一题 22)_ios_08 个房间;当 圆形牛棚(寒假每日一题 22)_枚举_09 时,第 圆形牛棚(寒假每日一题 22)_i++_04 个房间只能走到第 圆形牛棚(寒假每日一题 22)_算法_03 个房间)穿过房间,直到到达合适的房间为止。

约翰希望通过合理选择打开的门,使得所有奶牛的行走距离之和尽可能小(这里只考虑每头牛进入牛棚以后的行走距离)。

请确定他的奶牛需要行走的最小总距离。

输入格式
第一行包含整数 圆形牛棚(寒假每日一题 22)_顺时针

接下来 圆形牛棚(寒假每日一题 22)_顺时针 行,包含 圆形牛棚(寒假每日一题 22)_ios_14

输出格式
输出所有奶牛需要行走的最小总距离。

数据范围
圆形牛棚(寒假每日一题 22)_算法_15

输入样例:

5
4
7
8
6
4

输出样例:

48

样例解释
最佳方案是让奶牛们从第二个房间进入。

#include<iostream>

using namespace std;

const int N = 1010, INF = 1e9;

int r[N];

int main(){

int n;

cin >> n;

for(int i = 0; i < n; i++) cin >> r[i];

int res = INF, sum;

for(int i = 0; i < n; i++){

sum = 0;
for(int j = 1; j < n; j++) sum += j * r[(i + j) % n];

res = min(res, sum);
}

cout << res << endl;

return 0;
}


举报

相关推荐

0 条评论