博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
splay 1296 营业额统计
阅读量:7027 次
发布时间:2019-06-28

本文共 1081 字,大约阅读时间需要 3 分钟。

有一个点超时,确实是个很简单的splay #include
#include
using namespace std;int n,shu[1000006][2],root,size,b1,b2,sum1,sum[1000005],zhi[1000005];int fa[1000005];void xuan(int a1){ int a2,a3,l,r; a2=fa[a1]; a3=fa[a2]; if(a2==root) root=a1; else if(a2==shu[a3][0]) shu[a3][0]=a1; else shu[a3][1]=a1; if(shu[a2][0]==a1) l=0; else l=1; r=l^1; fa[a1]=a3; fa[a2]=a1; shu[a2][l]=shu[a1][r]; shu[a1][r]=a2; fa[shu[a2][l]]=a2; return;}void zhuan(int a1){ int a2,a3; for(;a1!=root;) { a2=fa[a1]; a3=fa[a2]; if(a2!=root) if(a2==shu[a3][0]^a1==shu[a2][0]) xuan(a1); else xuan(a2); xuan(a1); }}void jia(int &a1,int a2,int a3){ if(a1==0) { size++; a1=size; zhi[a1]=a2; sum[a1]=1; fa[a1]=a3; zhuan(a1); return; } if(zhi[a1]==a2) sum[a1]++; else if(zhi[a1]
a2) { b2=zhi[a1]; hou(shu[a1][0],a2); } else hou(shu[a1][1],a2); return;}int main(){ scanf("%d",&n); scanf("%d",&sum1); jia(root,sum1,0); for(int i=1;i

转载于:https://www.cnblogs.com/xydddd/p/5138572.html

你可能感兴趣的文章
Java JDBC链接Oracle数据库
查看>>
Moss2010 部署命令
查看>>
Git 操作分支
查看>>
Grid search in the tidyverse
查看>>
hdu 三部曲 Contestants Division
查看>>
day22——创建表、增加数据、查询数据
查看>>
c# 调用 c dll 例子
查看>>
【C#】string格式的日期转为DateTime类型及时间格式化处理方法
查看>>
实验十三:窗口设计
查看>>
python解析XML的三种方法
查看>>
nf_conntrack: table full, dropping packet. 问题
查看>>
(转)如何使用C#自定义属性
查看>>
hdu 1142 A Walk Through the Forest (最短路径)
查看>>
HLG 1475 国王的宴会【树形DP】
查看>>
AppScan扫描建议 问题集
查看>>
建造者模式
查看>>
在多线程环境下使用HttpWebRequest或者调用Web Service(连接报超时问题)
查看>>
Windows Live Write 日志客户端
查看>>
把123456789转换为12-345-6789的三种方法
查看>>
Mysql选择合适的存储引擎
查看>>