时空穿梭机(cycraft)-T3

2. K13593 时空穿梭机(cycraft)-T3

题目描述

随着游戏的深入进行,你也获得了很多的武器装备,每获取一件武器装备都需要付出一定的代价。

假设有一个时间轴,其上记录了在某个时间点对应有一个武器装备,我们赋予每一个时间点 ti 时刻对应的武器装备 i 的威力值为 wi。此时你拥有一台时空穿梭机,可以在时间轴上任意穿梭,假设穿梭到时间点 t,定义t 时间点到 ti 时间点获取 i 武器装备的代价为|t-ti|*wi。

请计算在哪个 t 时间点获取所有武器装备需付出的总代价最小,输出最小的总代价。

获取每一件武器装备必须都从 t 时间点出发,返回 t 时间点的代价为 0;|t-ti|表示 t-ti 的绝对值。

输入格式

共 n+1 行,第一行一个正整数 n,表示武器装备总数。

接下来 n 行,每行两个用空格分隔的正整数,分别表示时间 ti 和该时刻对应的武器装备的威力值 wi。

输出格式

共 1 行一个整数,表示获取所有武器的最小代价。

输入输出样例

输入样例1:复制
4 -1 7 0 2 7 3 3 4
输出样例1:复制
40

说明

样例解释:

穿梭到 0 时刻获取所有武器装备的总代价:1*7+7*3+3*4=40。

穿梭到 7 时刻获取所有武器装备的总代价:8*7+7*2+4*4=86 。

数据范围: 1 ≤ n ≤ 10000,-1000 ≤ ti,wi ≤ 1000。

【耗时限制】1000ms 【内存限制】128MB

 代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL n,t[100010],w[100010],ans=1e9;
int main(){
    freopen("cycraft.in","r",stdin);
    freopen("cycraft.out","w",stdout);
    scanf("%lld",&n);
    for(LL i=1;i<=n;i++) scanf("%lld%lld",&t[i],&w[i]);
    for(LL i=-1000;i<=1000;i++){
        LL sum=0;
        for(LL j=1;j<=n;j++) sum+=abs(i-t[j])*w[j];
        ans=min(ans,sum);
    }
    cout<<ans;
    return 0;
}

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值