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电子版中的 ...
随机推荐
- (95)Wangdao.com_第二十八天_进度事件
进度事件 进度事件 用来描述资源加载的进度, 主要由 AJAX 请求.<img>.<audio>.<video>.<style>.<link> ...
- vue-router 之 keep-alive
参考 https://www.jianshu.com/p/0b0222954483
- SpringMVC的坑
The request sent by the client was syntactically incorrect. 这个错误的原因是 因为 提交的表单数据和目标方法的入参不一致所导致 然后我就 ...
- vue菜鸟从业记:没准备好的面试,那叫尬聊
最近我的朋友王小闰参加了一场面试,在他填写简历表的时候,排在他前面的应聘者正在旁边邻桌接受来自面试官的检验. 王小闰边写边想,这不就是一会儿要面试自己的前端leader么,现在面试官提问的一些面试题会 ...
- 【C++ 流类库与输入输出 】实验七
1. 基础练习 (1)教材习题 11-7 (2)教材习题 11-3 (3)教材习题 11-4 2. 应用练习 (1)已知有班级名单文件 list.txt(见实验 7 附件包).编写一个应用程序实现随机 ...
- OO第二次阶段性总结
前两次作业我都无效了……用了很久时间但还是没能弄明白多线程的写法,以后还是要学会即时的多问问会的同学吧…… 以及我的Mertrics在挣扎很久之后还是用不了……跪了 第七次作业 第七次作业能够完成的原 ...
- SSM 记录
前言:本过程从0开始,先是导入最核心的jar包,然后随着ssm中的功能实现,打包===>启动===>报错,一步步解决问题,增加额外的必须的jar包来熟悉ssm 1.导包(核心包) myba ...
- js取整数、取余数
js取整数.取余数 取整 1.取整 // 丢弃小数部分,保留整数部分 parseInt(5/2) // 2 2.向上取整 // 向上取整,有小数就整数部分加1 Math.ceil(5/2) // 3 ...
- nginx的proxy_redirect
proxy_redirect 语法:proxy_redirect [ default|off|redirect replacement ]; 默认:proxy_redirect default; 配置 ...
- table-一列细分为多列(合并单元格)
这个是一个很常见的一个表格展示需求,其中最要的就两个属性 rowspan 和 colspan .他们分别就是合并行 与 合并列. 要做的效果是如图下面这个,联系电话就是合并了单元格.这个说法类似于ex ...