2018.6.10数据结构串讲_HugeGun
链接: https://pan.baidu.com/s/1uQwLZAT8gjENDWLDm7-Oig 密码: mk8p
@echo off
: )
shuju
test
test_
fc test.out test.ans
if errorlevel == 1 pause
goto )
对拍
#include<stdio.h>
int a[],Next[],pre[],head,last;
void add(int x,int y)//在标号为x的数后面插入标号为y的数
{
int nex=Next[x];
Next[x]=y,pre[y]=x;
pre[nex]=y,Next[y]=nex;
if(x==last)last=y;
}
void del(int x)//在链表中删掉标号为x的数
{
int prex=pre[x],nex=Next[x];
Next[prex]=nex,pre[nex]=prex;
pre[x]=Next[x]=;
}
int main()
{
return ;
}
链表
#include<stdio.h>
int head[],Next[],poi[],w[],ed;
void add(int a,int b,int c,int d)//在a,b之间加一条权值为c的边,d==1是为无向边,d==0是为有向边
{
Next[++ed]=head[a],head[a]=ed,poi[ed]=b,w[ed]=c;
if(d)Next[++ed]=head[b],head[b]=ed,poi[ed]=a,w[ed]=c;
}
void dfs(int x,int f)//遍历一棵树,f是x的父亲
{
int i;
for(i=head[x];i;i=Next[i])if(poi[i]!=f)
dfs(poi[i],x);
}
int main()
{
return ;
}
邻接表
#include<stdio.h>
int ch[][],w[],ed,root;
void add(int *k,int x)
{
if(!*k)
{
*k=++ed,w[*k]=x;
return ;
}
int d=x>w[*k];
add(&ch[*k][d],x);
}
int main()
{
return ;
}
BST
#include<stdio.h>
#include<stdlib.h>
int ch[][],w[],c[],s[],r[],ed,root;
void maintain(int x){if(x)s[x]=c[x]+s[ch[x][]]+s[ch[x][]];}
void rotate(int *k,int d)
{
int p=ch[*k][d^];
ch[*k][d^]=ch[p][d];
ch[p][d]=*k;
maintain(*k);
maintain(p);*k=p;
}
void add(int *k,int x)
{
if(!*k)
{
*k=++ed;w[*k]=x,s[*k]=c[*k]=,ch[*k][]=ch[*k][]=,r[*k]=rand();
return ;
}
s[*k]++;
if(w[*k]==x){c[*k]++;return ;}
int d=x>w[*k];
add(&ch[*k][d],x);
if(r[ch[*k][d]]<r[*k])rotate(k,d^);
}
int del(int *k,int x)
{
if(!*k)return ;
if(w[*k]==x)
{
if(c[*k]>){s[*k]--;c[*k]--;return ;}
if(!ch[*k][]){*k=ch[*k][];return ;}
if(!ch[*k][]){*k=ch[*k][];return ;}
if(r[ch[*k][]]<r[ch[*k][]])rotate(k,);
else rotate(k,);
return del(k,x);
}
int d=x>w[*k];
if(del(&ch[*k][d],x)){s[*k]--;return ;}
return ;
}
int findrank(int x)
{
int k=root,ret=;
while(k)
{
int pp=s[ch[k][]];
if(x==w[k])return ret+pp;
else if(x<w[k])k=ch[k][];
else ret+=(pp+c[k]),k=ch[k][];
}
return ret;
}
int findwei(int x)
{
int k=root;
while(k)
{
int pp=s[ch[k][]];
if(x<=pp)k=ch[k][];
else if(x>pp+c[k])x-=pp+c[k],k=ch[k][];
else return w[k];
}
return ;
}
int findqian(int x)
{
int k=root,ret=;
while(k)
{
if(w[k]<x)ret=w[k],k=ch[k][];
else k=ch[k][];
}
return ret;
}
int findhou(int x)
{
int k=root,ret=;
while(k)
{
if(w[k]>x)ret=w[k],k=ch[k][];
else k=ch[k][];
}
return ret;
}
int main()
{
return ;
}
treap
2018.6.10数据结构串讲_HugeGun的更多相关文章
- 01 mybatis框架整体概况(2018.7.10)-
01 mybatis框架整体概况(2018.7.10)- F:\廖雪峰 JavaEE 企业级分布式高级架构师课程\廖雪峰JavaEE一期\第一课(2018.7.10) maven用的是3.39的版本 ...
- 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H)
目录 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛链接 竞赛题目 总结 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛 ...
- 视频+图文串讲:MySQL 行锁、间隙锁、Next-Key-Lock、以及实现记录存在的话就更新,如果记录不存在的话就插入如何保证并发安全
导读 Hi,大家好!我是白日梦!本文是MySQL专题的第 27 篇. 下文还是白日梦以自导自演的方式,围绕"如何实现记录存在的话就更新,如果记录不存在的话就插入."展开本话题.看看 ...
- 数据结构- 串的模式匹配算法:BF和 KMP算法
数据结构- 串的模式匹配算法:BF和 KMP算法 Brute-Force算法的思想 1.BF(Brute-Force)算法 Brute-Force算法的基本思想是: 1) 从目标串s 的第一个字 ...
- 申请Office 365一年免费的开发者账号攻略(2018年10月份版本)
要进行Office 365开发,当然需要有完整的Office 365环境才可以.为了便于广大开发人员快速地启动这项工作,微软官方给所有开发人员提供了免费的一年开发者账号 那么如何申请Office ...
- IntelliJ IDEA 最新激活码(截止到2018年10月14日)
IntelliJ IDEA 注册码: EB101IWSWD-eyJsaWNlbnNlSWQiOiJFQjEwMUlXU1dEIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYX ...
- 新手C#SQL Server使用记录2018.08.10
主键(PrimaryKey):主键就是每个数据行(记录)的唯一标识,不会有重复值的列(字段)才能当做主键.一个表可以没有主键,但是这样会很难处理表,因此一般情况表都要设置主键. 主键有两张选用策略,分 ...
- 0607pm克隆&引用类&加载类&面向对象串讲&函数重载
克隆class Ren{ public $name; public $sex; function __construct($n,$s) { $this->name=$n; $this->s ...
- 富士康的盈利秒杀99%的A股公司:3星|《三联生活周刊》2018年10期
三联生活周刊·最美的数学:天才为何成群到来(2018年10期) 本期专题是数学和成都,我都跳过去没看.其他内容也还有点意思. 总体评价3星. 以下是本期一些内容的摘抄,#号后面是kindle电子版中的 ...
随机推荐
- __x__(47)0910第六天__IE6到IE11对于包含中文路径的png显示问题
问题:IE6额外地除了中文路径外,对于png24的支持度不高,以致于无法透明. 解决方法1,png8 替换: png8 比 png24 小,质量较低,但是在这里可以替代,以解决问题. 使用 ps 打开 ...
- CSS3_多列布局
CSS3 多列布局 可以随屏幕大小自适应布局 能够创建多个列对文本进行布局 属性 column-count: 5; 将文本分成 5 列 注意: 用户的屏幕大小 column-fill: bala ...
- vue_条件渲染_v-if_v-else_v-show
data: { ok: true flag: false } 1. 成对出现的 v-if 和 v-else 原理是: 标签的删除与重新创建 ,有些情况必须用 v-if <p v-if=" ...
- WebService的两种方式SOAP和REST有什么不同?
REST API 优点: 1. 轻量级的解决方案,不必向SOAP那样要构建一个标准的SOAP XML. 2. 可读性比较好:可以把URL的名字取得有实际意义. 3. 不需要SDK支持:直接一个Http ...
- Linux服务器tomcat无法通过ip加端口访问
Linux服务器tomcat无法通过ip加端口访问 防火墙开放端口 # Firewall configuration written by system-config-firewall# Manual ...
- yield关键字
1.yield语句有两种形式 (1)yield return <expression>;一次返回一个元素 运行yield return 语句时,会返回一个 值,并记录当前位置及保留该值.下 ...
- JAVA访问控制修饰符
1.public和private private修饰的成员变量和方法仅仅只能在本类中调用: public修饰的成员变量和方法可以在任何地方调用. public修饰的内容是对外提供可以被调用的功能,需 ...
- javascript原型模式概念解读
原型模式(prototype)是指用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象.对于原型模式,可以利用JavaScript特有的原型继承特性去创建对象的方式,真正的原型继承是作为最新 ...
- Java学习-051-Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError
错误信息:Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting St ...
- datetime 计算时间差
计算时间差: .date() # 格式化 .timedelta() # 时间差 import datetime # 今天 today = datetime.datetime ...