bzoj 3506 && bzoj 1552 splay
查最小值,删除,翻转。。。
显然splay啊。。。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 200005
#define inf 0x3f3f3f3f
using namespace std;
int n;
int ch[N][], fa[N];
int a[N];
int mn[N],zhi[N],size[N];
void push_up(int x)
{
size[x] = size[ch[x][]] + size[ch[x][]] + ;
mn[x] = min(zhi[x], min(mn[ch[x][]], mn[ch[x][]])); return;
}
int rev[N];
void push_down(int x)
{
if (rev[x])
{
rev[x] ^= ; rev[ch[x][]] ^= ; rev[ch[x][]] ^= ;
swap(ch[x][], ch[x][]);
}
return;
}
void rotate(int p)
{
int q = fa[p], y = fa[q], x = (ch[q][] == p);
ch[q][x] = ch[p][x ^ ]; fa[ch[q][x]] = q;
ch[p][x ^ ] = q; fa[q] = p;
fa[p] = y;
if (y)
{
if (ch[y][] == q)ch[y][] = p;
else ch[y][] = p;
}
push_up(q); return;
}
int root;
void splay(int x,int yy)
{
for (int y; y = fa[x]; rotate(x))
{
if (y == yy)break;
if (fa[y] != yy)
{
if ((ch[fa[y]][] == y) ^ (ch[y][] == x))rotate(x);
else rotate(y);
}
}
push_up(x);
if (!yy)root = x;
}
int cnt;
int find(int k, int x)
{
push_down(k);
if (mn[ch[k][]] == x)
{
return find(ch[k][], x);
}
if (zhi[k] == x)return size[ch[k][]] + ;
return find(ch[k][], x) + size[ch[k][]] + ;
}
int fd(int k, int x)
{
push_down(k);
if (size[ch[k][]] + == x)return k;
if (size[ch[k][]] + >= x)return fd(ch[k][],x);
return fd(ch[k][], x - size[ch[k][]] - );
}
struct node
{
int yuan,z;
friend bool operator < (node aa,node bb)
{
if(aa.z!=bb.z)return aa.z<bb.z;
return aa.yuan<bb.yuan;
}
}s[N];
int yin[N];
int main()
{
scanf("%d", &n); mn[] = inf;
for (int i = ; i <= n; i++)
{
s[i].yuan=i;scanf("%d",&s[i].z);
}
sort(s+,s+n+);
for(int i=;i<=n;i++)
{
a[s[i].yuan]=i;
}
root = ; a[n + ] = inf;
ch[][] = ; zhi[] = a[]; size[] = n + ;
for (int i = ; i <= n + ; i++)
{
size[i] = n - i + ;
zhi[i] = a[i]; fa[i] = i - ; ch[i - ][] = i;
}
for (int i = n + ; i >= ; i--)push_up(i);
splay(n, );
for (int i = ; i <= n; i++)
{
int y = find(root, mn[root]);
if(i!=n)printf("%d ",y+(i-));
else printf("%d",y+(i-));
int t = fd(root, y+);
splay(t, );
rev[ch[t][]] ^= ;
t = fd(root, );
splay(t, );
ch[t][] = ;
push_up(t);
}
puts("");
return ;
}
bzoj 3506 && bzoj 1552 splay的更多相关文章
- 【BZOJ】【1552】【Cerc2007】robotic sort / 【3506】【CQOI2014】排序机械臂
Splay 离散化+Splay维护序列…… 好吧主要说一下我做这道题遇到的几个错误点: 1.离散化 2.由于找到的这个数的位置一定是大于等于 i 的,所以其实在把它splay到根以后,i 结点只能sp ...
- [题解]bzoj 1861 Book 书架 - Splay
1861: [Zjoi2006]Book 书架 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 1396 Solved: 803[Submit][Stat ...
- bzoj 3223 文艺平衡树 - Splay
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3884 Solved: 2235[Submit][Sta ...
- bzoj 1269 bzoj 1507 Splay处理文本信息
bzoj 1269 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1269 大致思路: 用splay维护整个文本信息,splay树的中序遍历即为 ...
- BZOJ 1251: 序列终结者 [splay]
1251: 序列终结者 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3778 Solved: 1583[Submit][Status][Discu ...
- BZOJ 1588 营业额统计 Splay
主要操作为Splay中插入节点,查找前驱和后继节点. 1: #include <cstdio> 2: #include <iostream> 3: #include <c ...
- BZOJ 1269 文本编辑器 Splay
题目大意:维护一个文本编辑器,支持下列操作: 1.将光标移动到某一位置 2.在光标后插入一段字符串 3.删除光标后的一段字符 4.翻转光标后的一段字符 5.输出光标后的一个字符 6.光标-- 7.光标 ...
- [BZOJ 1500]维修数列 [Splay Tree从进阶到住院]
历尽艰辛终于A掉了这题QwQ 贴COGS评论区几句话=.= 策爷:"splay/块状链表的自虐题.".深刻理解到如果没有M倾向就不要去写这题了.. -Chenyao2333 记得b ...
- BZOJ 3545: [ONTAK2010]Peaks [Splay启发式合并]
3545: [ONTAK2010]Peaks 题意:带权图,多组询问与一个点通过边权\(\le x\)的边连通的点中点权k大值 又读错题了,输出点一直WA,问的是点权啊 本题加强版强制在线了,那这道题 ...
随机推荐
- 2015年软件测试STATE报告
STATE OF TESTING 2015 Report 测试职业的地理位置分配 大部分有5年以上工作经验 大部分是Test Leader 测试工程师角色 测试工程师怎么工作的? 测试中的软件 ...
- JavaScript 字符串操作
JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...
- iOS 网络流量统计
在开发中,有时候需要获取流量统计信息.研究发现:通过函数getifaddrs来得到系统网络接口的信息,网络接口的信息,包含在if_data字段中, 有很多信息, 但我现在只关心ifi_ibytes, ...
- Java 计算年份,月份,剩余天数
实现很简单,两者时间进行比较...具体看下面代码! package com.text; import java.text.ParseException; import java.text.Simple ...
- 了解JavaScript 数组对象及其方法
数组在我目前学习过的编程语言中都可以见到, 形形色色的方法也数不胜数, 不过功能都一样, 最多也就是方法名稍稍有所不同, 老外也没个准啊, 如果英语比较好的同学对于学习方法(method)来说是很快的 ...
- 【代码笔记】iOS-用户发布后能保存崩溃
一,工程图. 二,代码. AppDelegate.m #import "AppDelegate.h" #import "RootViewController.h" ...
- ubuntu 16.04 安装nodejs
经过几天的尝试,终于装好了: 1. nodejs官方推荐一下安装方式: NodeSource的二进制安装脚本NodeSource Using Ubuntu curl -sL https://deb.n ...
- asp.net mvc 各版本区别
MVC 6 ASP.NET MVC and Web API has been merged in to one. Dependency injection is inbuilt and part of ...
- iOS系列 基础篇 08 文本与键盘
iOS系列 基础篇 08 文本与键盘 目录: 1. 扯扯犊子 2. TextField 3. TextView 4. 键盘的打开和关闭 5. 打开/关闭键盘的通知 6. 键盘的种类 7. 最后再扯两句 ...
- SqlServer表结构查询
一.前言 近两天项目升级数据迁移,将老版本(sqlserver)的数据迁移到新版本(mysql)数据库,需要整理一个Excel表格出来,映射两个库之间的表格字段,示例如下: Mysql数据库查询表结构 ...