原题

给出一个n个数的数列ai ,对于第i个元素ai定义\(fi=min(|ai-aj|) (1<=j<i)\),f1=a1,求\(/sumfi\)


Splay板子题。

Splay讲解:http://www.cnblogs.com/mrsheep/p/8110483.html

//太懒了……

#include<cstdio>
#include<algorithm>
#include<cmath>
#define which(x) (ls[f[(x)]]==(x))
#define N 33000
using namespace std;
int n,v,root,ls[N],rs[N],val[N],f[N],idx,ans; void Rotate(int u)
{
int v=f[u],w=f[v],b=which(u)?rs[u]:ls[u],dir=which(v);
which(u)?(rs[u]=v,ls[v]=b):(ls[u]=v,rs[v]=b);
f[v]=u;f[b]=v;f[u]=w;
if (w) dir?ls[w]=u:rs[w]=u;
} int read()
{
int ans=0,fu=1;
char j=getchar();
for (;j<'0' || j>'9';j=getchar()) if (j=='-') fu=-1;
for (;j>='0' && j<='9';j=getchar()) ans*=10,ans+=j-'0';
return ans*fu;
} void splay(int x,int y)
{
while (f[x]!=y)
{
if (f[f[x]]!=y)
{
if (which(x)==which(f[x])) Rotate(f[x]);
else Rotate(x);
}
Rotate(x);
}
if (!y) root=x;
} void insert(int x)
{
int u=root,v=0;
while (u)
{
v=u;
if (x<val[u]) u=ls[u];
else u=rs[u];
}
f[++idx]=v;
val[idx]=x;
if (v) x<val[v]?ls[v]=idx:rs[v]=idx;
splay(idx,0);
} int getmx(int x)
{
if (!x) return 97797977;
while (rs[x]) x=rs[x];
return val[x];
} int getmn(int x)
{
if (!x) return 97797977;
while (ls[x]) x=ls[x];
return val[x];
} int query()
{
int lmx=getmx(ls[root]),rmn=getmn(rs[root]);
return min(abs(val[root]-lmx),abs(val[root]-rmn));
} int main()
{
n=read();
v=read();
insert(v);
ans+=v;
for (int i=2;i<=n;i++)
{
v=read();
insert(v);
ans+=query();
}
printf("%d",ans);
return 0;
}

最新文章

  1. jsonp协议原理深度解析
  2. IE浏览器中Image对象onload失效的解决办法
  3. [课程设计]Scrum 多鱼点餐系统(团队交流日)
  4. FileOutputFormat
  5. DeleteDC() 与 ReleaseDC() 的区别 [转]
  6. AES加密算法(C++实现,附源代码)
  7. angularjs post 跨域
  8. 利用linq快速判断给定数字是否包含在某个段范围内
  9. javascript 四舍五入
  10. Arcgis for javascript map操作addLayer具体解释
  11. 05-IOSCore - 单例模式、KVO
  12. (原创)优酷androidclient 下载中 bug 解决
  13. Windows 2008 卸载 IIS7 批处理
  14. MapGuide应用程序演示样例——你好,MapGuide!
  15. C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(下)
  16. 使用JDT.AST解析java源码
  17. Java对象序列化
  18. JBOSS EAP实战(1)
  19. 《java入门第一季》之面向对象(构造方法)
  20. jemter聚合报告参数指标

热门文章

  1. Oracle DELETE和TRUNCATE 的区别
  2. 【springmvc+mybatis项目实战】杰信商贸-3.需求分析与数据库建模
  3. *转载 Tarjan有向图详解
  4. 【Linux】Face Recognition的封装
  5. SIFT特征原理与理解
  6. Windows下PATH等环境变量详解(转载)
  7. 算法模板の数学&amp;数论
  8. canvas学习(三):文字渲染
  9. c# dllimport
  10. zabbix概念