acdream1174 合并同类项
这题说的是
给出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 合并同类项的更多相关文章
- GridView如何合并同类项
/// <summary> /// 合并GridView中某列相同信息的行(单元格) /// </summary> /// <param name ...
- excel合并同类项去重求和功能
参考:百度经验 主要利用函数为:sumif(range,criteria,[sum_range]) Range:条件区域,用于条件判断的单元格区域. Criteria:求和条件,由数字.逻辑表达式等组 ...
- [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 ...
- CSS的样式合并与模块化
by zhangxinxu from http://www.zhangxinxu.com 原文地址:http://www.zhangxinxu.com/wordpress/?p=931 一.引言 本文 ...
- sql分组合并字段重复项sql for xml path
-------------------------(情景描述) 在我们处理数据时,可能会碰到这种情景: Id Name 1 a,b 2 ...
- 主成分分析(PCA)原理总结
主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...
- C# XML转JSON,不引用第三方JSON.NET类库
应用场景:需要调用第三方接口(返回XML)数据,然后供自己多个系统使用(涉及跨域,使用JSONP) 代理:调用接口(把XML转换为JSONP解决跨域问题) B/S应用系统:调用代理返回的数据进行UI显 ...
- *HDU 1028 母函数
Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- 十连测Day1 题解
A. 奥义商店 有一个商店,n个物品,每个物品有一个价格和一种颜色. 有m个操作,操作有两种,一种是修改一个位置的价格,另一种是购买,每次购买指定一个公差d和一个位置k,找到包含这个位置k公差为d的同 ...
随机推荐
- laravel windows下安装 gulp 和 laravel-elixir
1)首先,确定一下你装了nodejs和npm了没?没装的话,到官网去下载最新版,传送门:https://nodejs.org/en/ npm 不需要单独安装,安装完 nodejs 就自带 npm 的了 ...
- 虚拟机如何装LINUX
VMware 提供了免費的虛擬機 VMware player 5.0.2 供使用者下載. 從 VMware 官網http://www.vmware.com/. 的頁面進入 “Products” “ ...
- Androidの共享登录之方案研究
由于最近公司提到了一个需求是,一个应用登录成功了,另一个自动登录. 绞尽脑汁想了好几天,看起来很容易但是想深点就漏洞百出,有的时候代码都写完了测试都成功了突然发现给一个假设就完全失效. 先前几个同事之 ...
- win8.1简单快速安装phpnow的方法
工具/原料 phpnow 1.5.6 管理员身份登陆系统 方法/步骤 下载phpnow 这是必须的,大家可以自行百度下载,然后我们将phpnow放到一个文件夹,可以是根目录,也可以不是,但一定要知 ...
- Java三方---->excel框架之POI的使用一
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.pdf框架之IText的使用,参见我的博客:Java ...
- 腾讯云CMQ消息队列测试
版权声明:本文由王冲原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/128 来源:腾云阁 https://www.qclou ...
- 域名绑定和域名解析(DNS)有什么不同?(转载)
域名解析在DNS处设置,DNS服务器将你的域名指向你的存储网页的服务器. 域名绑定在服务器中设置,存储你网页文件的服务器绑定了你的域名才能把浏览者引导到这个域名指定的物理位置来访问. 比如,你进一个高 ...
- Linux学习(四)档案与目录管理
1. 目录与路径 1.1 相对路径与绝对路径 1.2 目录的相关操作: cd, pwd, mkdir, rmdir 1.3 关于执行文件路径的变量: $PATH2. 档案与目录管理 2.1 档 ...
- Egret3D初步学习笔记三 (角色使用)
一 Unity中编辑角色 仍然使用unity4.7.1_Egret3D_Dll.unitypackage. 里面含有一个角色. 二 查看人物的动画 选中lingtong 属性面板里有个Animator ...
- Gallery 里面怎么设置ImageView的OnClick事件
Gallery g=this.findViewById(R.id.gallery); g.setOnItemClickListener(new OnItemClickListener(){ @Over ...