bzoj1367
题解:
左偏树模板题
维护n/2的好多课左偏树
每一次加进来一个点的时候,只有一个点
然后每次中位数比前面小的时候,那么和前面合并
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=;
long long ans;
int rt[N],cnt,r[N],c[N][],dist[N],val[N],tot,size[N],n,a[N],l[N];
int merge(int x,int y)
{
if (!x||!y)return x+y;
if (val[x]<val[y])swap(x,y);
c[x][]=merge(c[x][],y);
size[x]=size[c[x][]]+size[c[x][]]+;
if (dist[c[x][]]<dist[c[x][]])swap(c[x][],c[x][]);
dist[x]=dist[c[x][]]+;
return x;
}
void pop(int &x){x=merge(c[x][],c[x][]);}
int newnode(int x)
{
val[++tot]=x;
size[tot]=;
c[tot][]=c[tot][]=dist[tot]=;
return tot;
}
int main()
{
scanf("%d",&n);
for (int i=;i<=n;i++)scanf("%d",&a[i]),a[i]-=i;
for (int i=;i<=n;i++)
{
rt[++cnt]=newnode(a[i]);
l[cnt]=r[cnt]=i;
while (cnt>&&val[rt[cnt-]]>val[rt[cnt]])
{
cnt--;
rt[cnt]=merge(rt[cnt],rt[cnt+]);
r[cnt]=r[cnt+];
while (size[rt[cnt]]*>r[cnt]-l[cnt]+)pop(rt[cnt]);
}
}
for (int i=;i<=cnt;i++)
{
int t=val[rt[i]];
for (int j=l[i];j<=r[i];j++)
ans+=abs(t-a[j]);
}
printf("%lld",ans);
}
bzoj1367的更多相关文章
- BZOJ1367 BOI2004Sequence(左偏树)
		
首先考虑把bi和ai同时减i,问题变为非严格递增.显然如果a是一个递减序列,b序列所有数都取其中位数最优.于是划分原序列使得每一部分递减,然后考虑合并相邻两段.如果前一段的中位数<=后一段的中位 ...
 - BZOJ1367 [Baltic2004]sequence 堆 左偏树
		
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1367 题意概括 Description Input Output 一个整数R 题解 http:// ...
 - BZOJ1367 [Baltic2004]sequence  【左偏树】
		
题目链接 BZOJ1367 题解 又是一道神题,, 我们考虑一些简单的情况: 我们先假设\(b_i\)单调不降,而不是递增 对于递增序列\(\{a_i\}\),显然答案\(\{b_i\}\)满足\(b ...
 - 【BZOJ1367】[Baltic2004]sequence 左偏树
		
[BZOJ1367][Baltic2004]sequence Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sampl ...
 - BZOJ1367【Baltic2004】sequence
		
题面 Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Output 13 Hint 所求的Z序列为6,7, ...
 - 【BZOJ-1367】sequence       可并堆+中位数
		
1367: [Baltic2004]sequence Time Limit: 20 Sec Memory Limit: 64 MBSubmit: 932 Solved: 348[Submit][S ...
 - BZOJ1367——[Baltic2004]sequence
		
1.题目大意:给一个序列t,然后求一个序列z,使得$|z1-t1|+|z2-t2|+...+|zn-tn|$的值最小,我们只需要求出这个值就可以了,并且z序列是递增的 2.分析:这道题z序列是递增的, ...
 - 【bzoj1367】[Baltic2004]sequence
		
2016-05-31 17:31:26 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1367 题解:http://www.cnblogs.co ...
 - BZOJ1367 [Baltic2004]sequence
		
现学的左偏树...这可是道可并堆的好题目. 首先我们考虑z不减的情况: 我们发现对于一个区间[l, r],里面是递增的,则对于此区间最优解为z[i] = t[i]: 如果里面是递减的,z[l] = z ...
 
随机推荐
- python基础之练习题(二)
			
九九乘法表 i = 0 #while 九九乘法表 j = 0 while i < 9: i += 1 while j<9: j += 1 sum = i + j total="% ...
 - mysql 数据操作 单表查询 having 过滤
			
SELECT 字段1,字段2... FROM 库名.表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 1.首先找到表 库.表 ...
 - android gson使用
			
第一步注册: compile 'com.google.code.gson:gson:2.6.2' 第二步初始化: Gson gson = new GsonBuilder() .setLenient( ...
 - atime、mtime、ctime的区别及如何降低atime更新 mount时的option  noatime
			
atime.mtime.ctime的区别及如何降低atime更新 mount时的option noatime http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3 ...
 - 5.5 Components -- Customizing A Compnent's Element
			
一.概述 默认的,每一个组件都基于一个<div>元素.如果你在开发者工具中查看一个渲染的组件,你将会看到一个像这样的DOM表示: <div id="ember180&quo ...
 - php之isset empty is_null的区别
			
isset:当前变量没有设置(即不存在),或者变量设置为null的时候,返回true,设置为“”或者0 都是返回的true empty:变量不存在,设置值为null,设置为“”,设置为0 都返回tru ...
 - c#通过webrequest请求远程http服务时出现的问题
			
用WebRequest和WebClient,两种方式,请求一个由http服务发布的应用,结果出现异常. 有三种,1.System.Net.WebException: 服务器提交了协议冲突. Secti ...
 - bzoj1621 / P2907 [USACO08OPEN]农场周围的道路Roads Around The Farm
			
P2907 [USACO08OPEN]农场周围的道路Roads Around The Farm 基础dfs,按题意递归即可. #include<iostream> #include< ...
 - bzoj1601 / P1550 [USACO08OCT]打井Watering Hole(堆优化prim)
			
P1550 [USACO08OCT]打井Watering Hole 对于自己建水库的情况,新建一个虚拟结点,和其他点的边权即为自建水库的费用 这样问题就转化为一个裸最小生成树问题了. 这里用堆优化 ...
 - P1879 [USACO06NOV]玉米田Corn Fields(状压dp)
			
P1879 [USACO06NOV]玉米田Corn Fields 状压dp水题 看到$n,m<=12$,肯定是状压鸭 先筛去所有不合法状态,蓝后用可行的状态跑一次dp就ok了 #include& ...