链接: 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的更多相关文章

  1. 01 mybatis框架整体概况(2018.7.10)-

    01 mybatis框架整体概况(2018.7.10)- F:\廖雪峰 JavaEE 企业级分布式高级架构师课程\廖雪峰JavaEE一期\第一课(2018.7.10) maven用的是3.39的版本 ...

  2. 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H)

    目录 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛链接 竞赛题目 总结 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛 ...

  3. 视频+图文串讲:MySQL 行锁、间隙锁、Next-Key-Lock、以及实现记录存在的话就更新,如果记录不存在的话就插入如何保证并发安全

    导读 Hi,大家好!我是白日梦!本文是MySQL专题的第 27 篇. 下文还是白日梦以自导自演的方式,围绕"如何实现记录存在的话就更新,如果记录不存在的话就插入."展开本话题.看看 ...

  4. 数据结构- 串的模式匹配算法:BF和 KMP算法

      数据结构- 串的模式匹配算法:BF和 KMP算法  Brute-Force算法的思想 1.BF(Brute-Force)算法 Brute-Force算法的基本思想是: 1) 从目标串s 的第一个字 ...

  5. 申请Office 365一年免费的开发者账号攻略(2018年10月份版本)

    要进行Office 365开发,当然需要有完整的Office 365环境才可以.为了便于广大开发人员快速地启动这项工作,微软官方给所有开发人员提供了免费的一年开发者账号   那么如何申请Office ...

  6. IntelliJ IDEA 最新激活码(截止到2018年10月14日)

    IntelliJ IDEA 注册码: EB101IWSWD-eyJsaWNlbnNlSWQiOiJFQjEwMUlXU1dEIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYX ...

  7. 新手C#SQL Server使用记录2018.08.10

    主键(PrimaryKey):主键就是每个数据行(记录)的唯一标识,不会有重复值的列(字段)才能当做主键.一个表可以没有主键,但是这样会很难处理表,因此一般情况表都要设置主键. 主键有两张选用策略,分 ...

  8. 0607pm克隆&引用类&加载类&面向对象串讲&函数重载

    克隆class Ren{ public $name; public $sex; function __construct($n,$s) { $this->name=$n; $this->s ...

  9. 富士康的盈利秒杀99%的A股公司:3星|《三联生活周刊》2018年10期

    三联生活周刊·最美的数学:天才为何成群到来(2018年10期) 本期专题是数学和成都,我都跳过去没看.其他内容也还有点意思. 总体评价3星. 以下是本期一些内容的摘抄,#号后面是kindle电子版中的 ...

随机推荐

  1. ECMA Script 6_RegExp 正则表达式

    在 ES5 中 RegExp 构造函数的参数有两种情况 RegExp(字符串, 正则表达式的修饰符) RegExp(正则表达式); var regex = new RegExp('xyz', 'i') ...

  2. __http原理__02__HTTP请求方法

    一.HTTP请求方法 根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS ...

  3. JavaScript学习day2 (基本语法上)

    知识点 JavaScript 的变量 数据类型 运算符 JavaScript 的动态类型 变量:(变量的命名规则和其他语言类似) 由数字,字母,下划线组成,区分大小写 以字母开头 变量名不能有空格 不 ...

  4. 剑指offer——python【第39题】平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树.   解题思路 平衡二叉树首先是二叉搜索树,且它每个节点的左子树和右子树高度差至多等于1:只要从根节点,依次递归判断每个节点是否满足如上条件即可 ...

  5. Ehcache 3.7文档—基础篇—XML Configuration

    你可以使用xml配置创建CacheManager,根据这个schema definition ( http://www.ehcache.org/documentation/3.7/xsds.html# ...

  6. Python Learning - One

    ## Create a directory each day, and can create files in the directory. 1. variable 2. comments 1) # ...

  7. Linux系统的命令应该如何记?

    Linux入门篇: 很多刚入门的同学,就像无头的苍蝇一样,到处找视频.书籍.网站帖子之类的学习方式,视频虽然讲得详细,但是时间的投入也是巨大的,播放时间,练习时间,加起来很吓人,其实啊很少有人能坚持把 ...

  8. 附录A application.properties配置项

    摘自官网,仅作为参考用 Part X. Appendices # =================================================================== ...

  9. 新手上路、安装JDK教程

    按照以下的图片步骤,登录http://www.oracle.com 下载 JDK (J2SE)  JDK 1.0, 1.1, 1.2, 1.3, 1.4    1.5.(JDK5.0) → 支持注解. ...

  10. for里面是采用setInterval遍历二维数组,for循环到最后一个数的时候,才执行setInterval的问题解决

    点击播放看效果 <!doctype html> <html lang="en"> <head> <meta charset="U ...