bzoj 3224 splay模板题4

再刷水题我就废了。。。

  1 #include<iostream>
  2 #include<cstdio>
  3 #include<algorithm>
  4 #include<cstring>
  5 #define lc(x) ch[x][0]
  6 #define rc(x) ch[x][1]
  7 #define inf 0x3f3f3f3f
  8 #define N 200005
  9 using namespace std;
 10 int ch[N][2];
 11 int k[N];int cnt,root;
 12 int size[N],fa[N];
 13 void push_up(int x)
 14 {
 15     size[x]=size[ch[x][0]]+size[ch[x][1]]+1;
 16 }
 17 void rotate(int p)
 18 {
 19     int q=fa[p],y=fa[q],x=(p==ch[q][1]);
 20     ch[q][x]=ch[p][x^1];fa[ch[q][x]]=q;
 21     ch[p][x^1]=q;fa[q]=p;
 22     fa[p]=y;
 23     if(y)
 24     {
 25         if(q==ch[y][1])ch[y][1]=p;
 26         else ch[y][0]=p;
 27     }
 28     push_up(q);push_up(p);
 29     return ;
 30 }
 31 void splay(int x)
 32 {
 33     for(int y;y=fa[x];rotate(x))
 34     {
 35         if(fa[y])
 36         {
 37             if((ch[y][0]==x&&ch[fa[y]][0]==y)||(ch[y][1]==x&&ch[fa[y]][1]==y))rotate(y);
 38             else rotate(x);
 39         }
 40     }
 41     root=x;
 42 }
 43 int pre(int v)
 44 {
 45     int x=root;int tmp=-inf;
 46     while(ch[x][k[x]<v])
 47     {
 48         if(k[x]<v)tmp=k[x];
 49         x=ch[x][k[x]<v];
 50     }if(k[x]<v)tmp=k[x];
 51     return tmp;
 52 }
 53 int suc(int v)
 54 {
 55     int x=root;int tmp=inf;
 56     while(ch[x][k[x]<=v])
 57     {
 58         if(k[x]>v)tmp=k[x];
 59         x=ch[x][k[x]<=v];
 60     }if(k[x]>v)tmp=k[x];
 61     return tmp;
 62 }
 63 int find(int z)
 64 {
 65     int x=root;
 66     if(k[x]==z)return x;
 67     while(ch[x][k[x]<z])
 68     {
 69         x=ch[x][k[x]<z];
 70         if(k[x]==z)return x;
 71     }
 72     return 0;
 73 }
 74 void insert(int z)
 75 {
 76     int x=root;size[x]++;
 77     while(ch[x][k[x]<z])x=ch[x][k[x]<z],size[x]++;
 78     cnt++;ch[x][k[x]<z]=cnt;k[cnt]=z;size[cnt]=1;fa[cnt]=x;splay(cnt);
 79 }
 80 void del(int x)
 81 {
 82     splay(x);
 83     if(!ch[x][1])
 84     {
 85         root=ch[x][0];fa[ch[x][0]]=0;
 86     }
 87     else if(!ch[x][0])
 88     {
 89         root=ch[x][1];fa[ch[x][1]]=0;
 90     }
 91     else 
 92     {
 93         fa[ch[x][0]]=0;int tmp=ch[x][0];
 94         while(ch[tmp][1])tmp=ch[tmp][1];
 95         splay(tmp);ch[tmp][1]=ch[x][1];fa[ch[x][1]]=tmp;
 96         push_up(tmp);
 97     }
 98     return ;
 99 }
100 int fd(int kk,int x)
101 {
102     int l=ch[kk][0];int r=ch[kk][1];
103     if(size[l]+1==x)return k[kk];
104     if(size[l]>=x)return fd(l,x);
105     return fd(r,x-size[l]-1);
106 }
107 int pr(int z)
108 {
109     int ans=0;
110     int x=root;
111     while(x)
112     {
113         if(k[x]<=z)
114         {
115             ans+=size[ch[x][0]]+1;
116             x=ch[x][1];
117         }
118         else x=ch[x][0];
119     }
120     return ans;
121 }
122 void yu()
123 {
124     root=1;k[1]=inf;cnt=1;size[1]=1;
125     insert(-inf);
126 }
127 int main()
128 {
129    yu();
130    int n;
131    scanf("%d",&n);
132    for(int o=1;o<=n;o++)
133    {
134          int t1,t2;
135          scanf("%d%d",&t1,&t2);
136          if(t1==1)
137          {
138              insert(t2);
139       }
140       else if(t1==2)
141       {
142           int x1=find(t2);
143           if(x1!=0)del(x1);
144       }
145       else if(t1==3)
146       {
147           printf("%d\n",pr(t2-1));
148       }
149       else if(t1==4)
150       {
151            printf("%d\n",fd(root,t2+1));
152       }
153       else if(t1==5)
154       {
155            printf("%d\n",pre(t2));
156       }
157       else 
158       {
159           printf("%d\n",suc(t2));
160       }
161    }
162    return 0;
163 }

 

转载于:https://www.cnblogs.com/ezyzy/p/6145129.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值