这题说的是

给出N,a[1]... a[N],还有M,b[1]... b[M]
long long ans = 0;
for(int i = 1; i <= N; i ++)
    for(int j = 1; j <= M; j ++)
        ans += abs(a[i] - b[j]) * (i - j); NM【1,50000】 快熟计算出ans 3 秒 当画出这个乘法表后救就会发现 将b[i] 合并,然后合并完同类项就可以做了 效率 mlogn 使用stl的二分还不行卡常数太不合理了

#include <iostream>
#include <cstdio>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long ll;
const int max_n =;
struct point{
int v,num;
point(ll a=, ll b=){
v=a; num=b;
}
bool operator <(const point A)const {
return v<A.v||(v==A.v&&num<A.num);
}
}P[max_n];
int n,m;
int B[max_n],A[max_n],K[max_n];
ll perAsum[max_n],perAnum[max_n],perAper[max_n];
int binser(int n, int v){
int L=, R =n;
while(L<R){
int mid = (L+R)/;
if(K[mid]<=v) L=mid+;
else R=mid;
}
return L;
}
int main()
{
ll two=,one =;
int cas=;
/*freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
*/while(scanf("%d%d",&n,&m)==){
int V;
ll num=one*(n-)*n/two;
for(int i=; i<n; ++i){
scanf("%d",&V);
A[i]=V;
P[i]=point(V,i);
}
for(int i=; i<m; ++i)
scanf("%d",&B[i]);
ll colu=,per=;
for(int i =; i<n; i++){
colu=colu+one*A[i]*i;
per=per+A[i];
}
ll ans=;
for(int i=; i<m; ++i){
ans = ans+ colu;
colu= colu - per;
ans = ans - one*B[i]*num;
num = num - n;
}
sort(P,P+n);
perAnum[]=P[].num;
perAsum[]=one*P[].v*P[].num;
perAper[]=P[].v;
K[]=P[].v;
for(int i=; i<n; ++i){
perAnum[i] = perAnum[i-]+P[i].num;
perAsum[i] = perAsum[i-]+one*P[i].num*P[i].v;
perAper[i] = perAper[i-]+P[i].v;
K[i]=P[i].v;
}
for(int i=; i<m; ++i){
int loc = binser(n,B[i]);
if(loc<=)continue;
loc-=;
ll perA = perAsum[loc]-perAper[loc]*i;
ll perB = B[i]*(perAnum[loc]-one*(loc+)*i);
ans = ans - ( perA-perB )*two;
}
printf("%I64d\n",ans);
}
return ;
}

acdream1174 合并同类项的更多相关文章

  1. GridView如何合并同类项

    /// <summary>     /// 合并GridView中某列相同信息的行(单元格)     /// </summary>     /// <param name ...

  2. excel合并同类项去重求和功能

    参考:百度经验 主要利用函数为:sumif(range,criteria,[sum_range]) Range:条件区域,用于条件判断的单元格区域. Criteria:求和条件,由数字.逻辑表达式等组 ...

  3. [css]样式合并与模块化

    原文链接:http://www.zhangxinxu.com/wordpress/2010/07/css%E7%9A%84%E6%A0%B7%E5%BC%8F%E5%90%88%E5%B9%B6%E4 ...

  4. CSS的样式合并与模块化

    by zhangxinxu from http://www.zhangxinxu.com 原文地址:http://www.zhangxinxu.com/wordpress/?p=931 一.引言 本文 ...

  5. sql分组合并字段重复项sql for xml path

    -------------------------(情景描述) 在我们处理数据时,可能会碰到这种情景: Id                Name 1                  a,b 2  ...

  6. 主成分分析(PCA)原理总结

    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...

  7. C# XML转JSON,不引用第三方JSON.NET类库

    应用场景:需要调用第三方接口(返回XML)数据,然后供自己多个系统使用(涉及跨域,使用JSONP) 代理:调用接口(把XML转换为JSONP解决跨域问题) B/S应用系统:调用代理返回的数据进行UI显 ...

  8. *HDU 1028 母函数

    Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  9. 十连测Day1 题解

    A. 奥义商店 有一个商店,n个物品,每个物品有一个价格和一种颜色. 有m个操作,操作有两种,一种是修改一个位置的价格,另一种是购买,每次购买指定一个公差d和一个位置k,找到包含这个位置k公差为d的同 ...

随机推荐

  1. 数组内Merge

    数组al[0...mid-1]和al[mid...num-1]两个部分都已经分别排好序.要求合并使得整个数组al有序.请给出合并merge的代码.要求空间复杂度为O(1). /* 数组a[begin, ...

  2. 设置jQuery validate插件错误提示位置

    参照上一篇bootstrap布局注册表单 使用校验插件默认位置显示提示信息,发现错误提示信息换行了,由于增加了提示信息,表单显示高度也增加了,如下 默认提示信息位置代码为 将错误提示设置其显示在右边, ...

  3. ios错误大全

    /读取数据库数据 -(void)movethesqlitefile{ NSString *sourcepath=[[NSBundle mainBundle]pathForResource:@" ...

  4. linux 输入“make"命令不能执行

    我用的是VM 虚拟机的CDLinux,我想手动安装网卡驱动.网卡驱动也已经复制到linux 系统中了.接下来应该输入:makemake install可窗口提示:-bash:make :command ...

  5. java基础---->java输入输出流

    今天我们总结一下java中关于输入流和输出流的知识,博客的代码选自Thinking in java一书.我突然很想忘了你,就像从未遇见你. java中的输入流 huhx.txt文件的内容如下: I l ...

  6. Android ImageResizer:inSampleSize

    import android.annotation.TargetApi; import android.content.Context; import android.content.res.Reso ...

  7. 搭建FastDFS

    ---恢复内容开始--- FastDFS是用c语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用Fast ...

  8. go练习3 --map的操作

    func T2_1() {     // 键值string , 值 int 类型     m1 := map[string]int{}     //添加一个元素     m1["str1&q ...

  9. C++中的const的用法

    const对象.指向const对象的指针.const指针(通过一个面试题来了解)   1.const对象 (1)关于const,很多企业的笔试.面试都会出现,很简单,就问你“const的含义?”. 我 ...

  10. poj3630 Phone List【Trie树】

    Phone List Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 34805   Accepted: 9980 Descr ...