码迷,mamicode.com
首页 > 其他好文 > 详细

Luogu T103180 しろは的军训列队 前缀和

时间:2019-10-13 15:11:29      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:opened   ios   read   input   pst   getchar   type   span   const   

题目背景

しろは上了大一,第一件事情就是军训。

题目描述

在军训里,最让しろは讨厌的事情就是列队。因为教官总是不停的喊着:“补齐排面,补齐排面!”

有一天,しろは突然在站军姿的时候开始思考这么一个问题:

假设队列中有 nn 名同学,第 ii 个同学有一个初始的位置值 a_iai?.教官一声令下之后,他们就都要向某一个位置补齐(即让他们所有人的位置值都变成同一个值)

但是每个同学由于高矮胖瘦等等原因,移动的时候付出的代价是不一样的。量化来说,第 ii 个同学让自己的位置值变化1需要付出 b_ibi? 点代价。

现在しろは想知道,怎么才能够让大家付出的代价最小呢?

しろは向你保证,这个代价值不会超过 C++ 语言中 long long 的表示范围。

输入格式

第一行一个整数 nn 表示同学个数。

第二行 nn 个整数,为 aa

第三行nn 个整数,为 bb

输出格式

一行一个整数,表示最小的代价。

输入输出样例

输入 #1
5
1 2 3 4 5
1 2 3 4 5
输出 #1
15

说明/提示

对于 10\%10% 的数据,保证所有的 a_iai? 相等。

对于 40\%40% 的数据,保证 n \leq 100n100

对于 100\%100% 的数据,保证 n\leq 10^6n106,同时保证 1 \leq a_i,b_i \leq 10^91ai?,bi?109

做法如题。

技术图片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 typedef long long ll;
 6 
 7 const int Maxn = 1e6+10;
 8 ll s[Maxn],qian,hou,n,ans = 9223372036854775807;
 9 
10 ll read(){
11     ll a = 0;char l =  ,c = getchar();
12     while(c < 0||c > 9)l = c,c = getchar();
13     while(0 <= c&&c <= 9)a = a*10+c-0,c = getchar();
14     if(l == -)return -a; return a;
15 }
16 
17 struct node{
18     int pl,w;
19     bool operator <(const node& x)const{
20         return pl < x.pl;
21     }
22 }a[Maxn];
23 
24 int main(){
25     n = read();
26     for(int i = 1;i <= n;i++)a[i].pl = read();
27     for(int i = 1;i <= n;i++)a[i].w = read();
28     sort(a+1,a+n+1);
29     for(int i = 1;i <= n;i++)s[i] = s[i-1]+a[i].w;
30     for(int i = n;i >= 1;i--)hou += (s[n]-s[i-1])*(a[i].pl-a[i-1].pl);
31     for(int i = 1;i <= n;i++){
32         qian += s[i-1]*(a[i].pl-a[i-1].pl);
33         hou -= (s[n]-s[i-1])*(a[i].pl-a[i-1].pl);
34         ans = min(ans,qian+hou);
35     }
36     printf("%lld",ans);
37 return 0;
38 }
AC代码

 

Luogu T103180 しろは的军训列队 前缀和

标签:opened   ios   read   input   pst   getchar   type   span   const   

原文地址:https://www.cnblogs.com/Wangsheng5/p/11666542.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!