摘要: 组合恒等式 $\binom{n}{m}=\binom{n}{n-m}$ $\sum_{i=0}^n\binom{n}{i}=2^n$ $\sum_{i=0}^n\binom{n}{i}[2|i]=\sum_{i=0}^n\binom{n}{i}![2|i]=2^{n-1}$ $k$个非负整数变量和为 阅读全文
posted @ 2021-08-23 09:15 ArrogHie 阅读(140) 评论(0) 推荐(0) 编辑
 
摘要: 定义 点与向量 struct Point { double x, y; Point() {} Point(double x, double y) :x(x), y(y) {} }; typedef Point Vector; 线段与直线 struct Segment { Point a, b; Se 阅读全文
posted @ 2021-05-18 21:41 ArrogHie 阅读(788) 评论(0) 推荐(1) 编辑
 
摘要: 爬山算法 对于单峰函数可行 实现: 先随机一个答案,之后每次将其与与其在一定范围内相邻的答案选举一个最优解,每一次运算后范围逐渐缩小,直到范围小于阈值 例题:[JSOI2008]球形空间产生器 #include<cstdio> #include<cstring> #include<cmath> #i 阅读全文
posted @ 2021-05-12 21:00 ArrogHie 阅读(107) 评论(0) 推荐(0) 编辑
 
摘要: 左偏树(可并堆) 定义$dis_x$为$x$节点到最近的叶子节点的距离$+1$,每个节点的左儿子的$dis$比右儿子大,故每个节点的$dis=dis_rson+1$ 核心操作:合并 //小根堆 int merge(int x, int y)//将y并到x的子树内 { if (!x || !y) re 阅读全文
posted @ 2021-04-22 21:32 ArrogHie 阅读(73) 评论(0) 推荐(0) 编辑
 
摘要: EK算法求最大流 $O(nm^2)$ inline void add(int a, int b, int c) { edge.pb(Edge(a, b, c, 0)); edge.pb(Edge(b, a, 0, 0)); int siz = edge.size(); G[a].pb(siz - 2 阅读全文
posted @ 2021-03-23 20:38 ArrogHie 阅读(107) 评论(0) 推荐(0) 编辑
 
摘要: KMP 求border for (int i = 2, j = 0; i <= m; i++) { while (b[i] != b[j + 1] && j) j = nex[j]; if (b[i] == b[j + 1]) j++; nex[i] = j; } AC自动机 自动AC的机器 相当于 阅读全文
posted @ 2020-12-29 22:26 ArrogHie 阅读(203) 评论(0) 推荐(0) 编辑
 
摘要: 平方和公式 $\sum n^2=\frac{n*(n+1)*(2n+1)}{6}$ 立方和公式 $\sum n^3=(\frac{n*(n+1)}{2})^2$ 一些推导 $\sum_{i}^{n}\sum_{j}^{n}ij=\sum_{i}^{n}i^3$ 证明:对于一个$i$,它对答案的贡献为 阅读全文
posted @ 2020-12-24 22:36 ArrogHie 阅读(258) 评论(0) 推荐(0) 编辑
 
摘要: 树上倍增: 核心: F[u][i] 表示u节点往上走2i步到达的祖先节点,F[u][0]=fa[u],F[u][i]=F[F[u][i-1]][i-1],其他需要维护的数值也与此格式类似 【SCOI2016】幸运数字(题目): 倍增时合并一下线性基即可 1 #include<cstdio> 2 #i 阅读全文
posted @ 2020-07-14 17:00 ArrogHie 阅读(241) 评论(0) 推荐(0) 编辑
 
摘要: 概念: 对于一棵有根树,每个非叶节点选择至多一个连向孩子的边称为 “实边”(重边) ,这个边集称为这棵树的一个链剖分,不在集合中的边称为“虚边“(轻边)。如图,黑边为重边,白边为轻边。 重链: 每个非叶节点向他的节点数最大的子节点连一条重边; 重链求LCA: 如果两个点在同一条链上,则深度小的为答案 阅读全文
posted @ 2020-07-03 09:15 ArrogHie 阅读(429) 评论(0) 推荐(0) 编辑
 
摘要: 线段树用途: 用于区间修改与求和: 区间修改: 修改l到r之间的值 , 遍历线段树 , 若某个子节点l<=L && R<=r ,则在该节点上标记修改的值 , 访问该节点及他的子节点时再将标记下传; 线段树可持久化: 核心: 永远不修改节点上的值 , 只会新建节点 ; 实现: 每当修改值的时候 , 新 阅读全文
posted @ 2020-06-29 22:18 ArrogHie 阅读(313) 评论(0) 推荐(0) 编辑
  2021年2月19日
摘要: 期望:100+16+8 实际:0+16+8 T1: 最后的二分找每个1的位置写没了,本机上测爆longlong会到负数,但正睿的机子不是,判错了,直接爆0 #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #i 阅读全文
posted @ 2021-02-19 19:52 ArrogHie 阅读(109) 评论(0) 推荐(0) 编辑
  2021年1月24日
摘要: 估分:50+20+30 实际:0+20+0 T1: 因为一个式子忘取模了,丢了30pts 因为过于相信O2以为N^2能过十万,然后炸了20pts T2: 暴力的20pts T3: 至此不知道为啥没分,感觉写得一点毛病都没有啊 阅读全文
posted @ 2021-01-24 21:36 ArrogHie 阅读(71) 评论(0) 推荐(0) 编辑
  2020年11月1日
摘要: 估分:100+100+14+12=226 实际:100+100+14+12=226 T1: 两人之差为偶数时就往中间走就行,最后一定能碰上 两人之差为奇数时先往一个方向走知道有一人不能再走,然后另一人再走一步两人的差就为偶数了,然后就按上面的方法做 1 #include<cstdio> 2 #inc 阅读全文
posted @ 2020-11-01 18:46 ArrogHie 阅读(108) 评论(0) 推荐(0) 编辑