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

阅读: 评论:0

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

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

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

牛棚内部有 n n n 个房间,围成一个环形,按顺时针编号为 1... 1...n,所有相邻房间之间的距离均为 1 1 1。

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

约翰想让第 i i i 个房间内恰好有 r i r_i ri​ 头牛。

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

然后,每头牛顺时针(即当 i < n i<n i<n 时,第 i i i 个房间只能走到第 i + 1 i+1 i+1 个房间;当 i = n i=n i=n 时,第 i i i 个房间只能走到第 1 1 1 个房间)穿过房间,直到到达合适的房间为止。

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

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

输入格式
第一行包含整数 n n n。

接下来 n n n 行,包含 r 1 , … , r n r_1,…,r_n r1​,…,rn​。

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

数据范围
3 ≤ n ≤ 1000 , 1 ≤ r i ≤ 100 3≤n≤1000, 1≤r_i≤100 3≤n≤1000,1≤ri​≤100

输入样例:

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;
}

本文发布于:2024-01-28 22:38:37,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170645272210797.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:牛棚   圆形   寒假
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23