c++流和c流 c++ 流 和 c 流 标准的c++流默认与其相对应的c流同步:( 在每次输入/输出后同步 ) 同步的c++流 无缓冲,每次c++流上的$I/O$操作都立即应用到对应 C 流的缓冲区。这使得能自由地混合 C++ 与 C $I/O$ 。 若关闭同步,则允许 C++ 标准流独立地缓冲其 I/O ,可认为这在某些情况下更快。 12345678910#include <iostr 2019-12-14 C++primer读书笔记
lambda表达式后的() 一直对lambda后面的()这种离奇的语法感到奇怪,今天看到如下代码: 1234567auto optimize_cpp_stdio = []() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); std::setvbuf(stdout, n 2019-12-14 C++primer读书笔记 lambda
基于Thinkphp开发的博客 (第一次开发,mark一下 基于Thinkphp开发的博客 (第一次开发,mark一下tp_blog 开发日志 11.20 文件命名空间sb new 命名空间下的文件一定要\app 12.8 忘记密码时输入邮箱的唯一性没有确定,已修复 玄学Bug : system设置的时候 system验证器离奇失效( 不知道是不是版本问题) 注册账号 和 忘记密码给注册邮箱发送4位验证码 使用了phpmailer扩展 登录的验 2019-12-11 php blog
树状数组 树状数组lowbit(x) lowbit既能求出该节点及其下面子节点的个数,也能帮助区间下标转换 $lowbit(x) = x & (-x)$ 例如lowbit(8): $8_{10} = 1000_{2}$ 负数符号位不同( $-8_{10} = 1000_2$ 计算机以补码计算 8的补码$1000$, -8的补码$-8 = 1000_2 = 0111_2 + 1 2019-12-05 算法 树状数组
ST表 ST表 $O(logn * n)$ 预处理 $2*10^6 \approx 2^{21}$ $log2^{21} = 21$ $O(1)$查询,不支持修改操作 例如用于静态区间最大最小值查询 预处理 询问区间$[L,R]$,最多使用2个预处理过的区间的并就能覆盖询问区间 $f(i,j)$表示区间$[i,i+2^j-1]$的最大值 ,,,, $2^j-1$即倍增的长度 ,,, $f(i, 2019-12-04 算法 RMQ
非旋转Treap 非旋转Treap 通过节点的优先级来维护树的平衡, 下面是普通非旋转Treap (弱平衡, 性质 Treap是笛卡尔树的一种,只是 节点优先级是随机的 $Tree+Heap$: 二叉搜索树+堆的性质 2个核心操作 分裂+合并 分裂 split 按照 节点权值分裂或者值的排名分裂 $split_val$ 将一颗treap分裂成2个treap,第一个treap所有节点的权值$\le k 2019-12-04 算法 非旋转Treap
替罪羊树 替罪羊树$\alpha$权重平衡 认为一棵树$X$是平衡的当且仅当它每一棵子树满足下列条件: $size(x.left) \le \alpha * size(x)$ $size(x.right)\le \alpha * size(x)$ $\alpha \in [0.5,1]$ $\alpha = 1$就是普通的二叉搜索树 $\alpha = 0.5$ 左右子树的大小是该数的一半 2019-12-02 算法 平衡树
Luogu P3165 Splay区间翻转 脑残记录: 这周末2天只做了一道平衡树题目(2天被一道题限住),发现自己的很多问题, 1. 学了算法及其性质 但是总是做不出来题目,很难利用学过的性质, 同样这种情况再次发生在今天 没有运用的能力,思维太差??? 反思: 自己对算法题目的思维能力 还是不行 ( ???一定要想办法改变??? ) 要对自己的学过的算法的流程 好好走一遍, Splay 练习 Luogu P31 2019-12-01 算法 区间翻转
Luogu P2234+P2286 (Splay性质 Luogu P2234 记住性质才能更好利用: Splay的查询前驱和后继操作 $tree.ins(val)$插入后会$Splay$到根节点 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 2019-11-28 算法 Splay性质
Splay 从oi-wiki学来及自己总结Splay树 用$Splay$维护二叉查找树 节点维护的信息 root tot fa[i] ch[i][0/1] val[i] cnt[i] size[i] 根节点编号 节点个数 节点i的父亲节点 节点i的左右儿子编号 节点i存的值 节点i存的值出现的次数 节点i子树的大小 旋转操作 本质: 将树上某个节点上移一个位置 旋转总结: 以节点$x$ 2019-11-26 算法 splay操作