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电子版中的 ...
随机推荐
- Resource Allocation of Yarn
关键词:yarn 资源分配 mapreduce spark 简要指南 适合不想看太多原理细节直接上手用的人. 基本原则: container分配的内存不等于机器实际用掉的内存.NM给container ...
- mysql 插入百万条数据
利用mysql内存表插入速度快的特点,先存储过程在内存表中生成数据,然后再从内存表插入普通表中 一.创建内存表 CREATE TABLE `vote_record_memory` ( `id` ) N ...
- Magic Pen 6
Problem Description In HIT, many people have a magic pen. Lilu0355 has a magic pen, darkgt has a mag ...
- js根据服务端返回的时间倒计时
使用服务端与本地的时间差进行计算 $(function(){ // 倒计时 var _ordertimer = null; var data =new Date(); var txt = $('.js ...
- Linux服务器tomcat无法通过ip加端口访问
Linux服务器tomcat无法通过ip加端口访问 防火墙开放端口 # Firewall configuration written by system-config-firewall# Manual ...
- linux 的基础命令
date 查看时间 cal 查看日历 cal 2009 cal 10 2019 ls 查看目录下的内容 ls -alh tree 以树的形式查看目录内容 bc 计算器 M ...
- Centos7双网卡绑定配置 bonding
bonding的七种工作模式: bonding技术提供了七种工作模式,在使用的时候需要指定,每种有各自的优缺点,我们使用的是 mode=4 balance-rr (mode=0) 默认, 有高可用 ( ...
- 来自一个电子狂的stm32学习历程
文章尾部有学习时的一些视频资料在学的可以看看那么我们就进入今天的主题我stm32的学习历程 在学习了51单片机之后,早已经对单片机这个东西甚有了解了,所有不管是从内部资源,还是一些常见应用,都可以说的 ...
- ide phpStorm注释模板修改
1.打开设置 2.找到,如下图所示位置,注意是第二个tab(Includes) 3.再任意空白位置,输入/**,按回车即可出现对应注释内容(其实还可以先 Ctrl + Shift + /,然后删少一个 ...
- kubernetes in action - Overview
传统的应用都是“monoliths”,意思就是大应用,即所有逻辑和模块都耦合在一起的 这样明显很挺多问题的,比如只能scale up,升级必须整体升级,扩容 所以我们就想把大应用,broken dow ...