现在的位置: 首页 > 综合 > 正文

Codeforces-354A

2013年08月27日 ⁄ 综合 ⁄ 共 589字 ⁄ 字号 评论关闭

题意:机器人捡物品,要么从左边捡东西,要么从右边捡东西,在左边必须要左手,右边用右手,如果连续用一边的手需要额外的能量QL和QR,而交替使用手只需要耗费W*L;

问最少耗费的能量。

思路:一次枚举(1~n)个位置,先当然是交替使用左右手是最好的,但由于i并不是对称的,所以划掉能交替使用手的部分,i就是最后机器人留在的位置,剩下只能一边手使用了。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#define INF 1000000000
using namespace std ;
const int N=100010;
int sum[N],w;
int main()
{
	int n,l,r,ql,qr;
    scanf("%d %d %d %d %d",&n,&l,&r,&ql,&qr);
    sum[0]=0;
    for(int i=1;i<=n;i++){
		scanf("%d",&w);
		sum[i]=sum[i-1]+w;
    }
    int ans=INF,tmp;
    for(int i=0;i<=n;i++){
		tmp=l*sum[i]+(sum[n]-sum[i])*r;
		if(i>n-i) tmp+=ql*(i-n+i-1);      
		else if(n-i>i) tmp+=qr*(n-i-i-1);    
	    ans=min(tmp,ans);
    }
    printf("%d\n",ans);
 	return 0 ;
}

抱歉!评论已关闭.