信息学相关知识
文章平均质量分 96
XSamsara
AFO
展开
-
如何造数据——分分钟变成造数据大师
如何造数据很多人将造数据看成小儿科,但并不是这样的,往往造数据要思考的甚至比写代码要思考的多了多。 下面让我简单的介绍一下:基本的随机代码先来看随机造数的函数。 C++://需要用到的库#include<cstdlib>#include<windows.h>srand()//初始化(放在程序开头),如果不初始化,生出来的东西是一样的s...原创 2017-12-21 14:31:04 · 7212 阅读 · 0 评论 -
平衡树讲解【Treap&&非旋Treap】
平衡树【Treap&amp;amp;amp;amp;&amp;amp;amp;amp;非旋Treap】首先简单介绍一下平衡树,平衡树就是一棵二叉搜索树,但是因为二叉搜索树有时会变成一条链,那么复杂度就得不到优化。平衡树利用旋转将二叉搜索树旋成平衡,让这棵树尽量保持一颗满二叉树,这样的复杂就是恒定的O(n∗log2n)O(n∗log2n)O(n*log_2 n)。Treap我现在来讲一下Treap,Treap=Tree+Hea...原创 2018-05-06 11:29:00 · 613 阅读 · 0 评论 -
莫队与带修改莫队 神奇的想法
莫队与带修改莫队莫队莫队是个很好用的东西,而且想法十分神奇,利用分块优化查找。用莫队解决的题目大多是区间不同数的个数,应该还可以用着其他方面,但是我不知道。下面我就来讲讲莫队算法。首先看一道题1878: [SDOI2009]HH的项链Time Limit: 4 Sec Memory Limit: 64 MBDescription HH有一串由各种...原创 2018-05-27 17:15:37 · 348 阅读 · 0 评论 -
树链剖分 完美的想法
树链剖分不知是谁想出的想法,太完美了,首先我大致讲一下树剖的想法。将树分成重链和轻链,使每条重链越长越好,每次可以用数据结构将重链上的所有节点求出或修改,达到优化的效果,下面我讲的是用线段树维护一棵树。当然不止是线段树可以维护,树状数组和Splay也可以。下面看一道题:洛谷3384题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值...原创 2018-06-05 20:08:01 · 170 阅读 · 0 评论 -
DSU on tree——令人惊叹的想法
DSU on tree首先感谢LX dalao的讲解。DSU on tree用于解决静态树上众数问题,比如说Codeforces 600E题目大意 给你一棵树,每个节点有一种颜色,问你每个子树x的颜色数最多的那种颜色,如果颜色数相同,那么种类数相加。输入样例1 4 1 2 3 4 1 2 2 3 2 4输出样例1 10 9 3...原创 2018-06-20 18:48:36 · 6718 阅读 · 0 评论 -
点分治详解
点分治详解点分治是一个需要自己推导的算法,但是有板子,但是Cal这个函数根据不同题目是会变的。点分治是解决树上求值的一种算法,比如说一棵树上路径距离(u,v)距离&lt;=K距离(u,v)距离&lt;=K距离(u,v)距离−−-不满足的,然后排序找答案。这样子看起来效率很高啊O(Nlog2N)O(Nlog2N)O(N log_2 N),但是对于一种数据就会很慢,链。如果树退化成了链的话...原创 2018-06-29 10:24:09 · 3429 阅读 · 0 评论 -
Dijkstra次短路
Dijkstra次短路其实就是带入两个变量进行增广,一个表示最短,一个表示次短。接下来讲一下如何用堆维护,每当更新到了最短或次短,就将这个答案put进堆里就可以了。堆的大小不是很清楚,建议用调优先队列。例题传送门代码如下#include<cstdio>#include<cctype>#include<cstring>#include<io...原创 2018-09-18 18:32:43 · 552 阅读 · 0 评论 -
次小生成树模板
次小生成树模板【例题】传送门【做法】先用最小生成树做出这棵树,然后DFS建树,插入一条非树边,肯定在树上形成了环,所以在环上找一个最大的删去,加入这条边。最后从所有情中选一个最小的就是答案。(首先得知道这个次小指的是什么次小,是值次小还是值从小到大排序后排名第二的,也就是涉及到次小是否能等于最小的问题)贴上代码(Kruskal)#include<cstdio>#inclu...原创 2018-09-18 18:33:22 · 351 阅读 · 0 评论 -
生成函数(母函数)——目前最全的讲解
生成函数(母函数)什么是生成函数:wiki上的介绍在数学中,某个序列(an)n∈N\large {\displaystyle (a_{n})_{n\in \mathbb {N} }}(an)n∈N 的母函数(又称生成函数,英语:Generating function)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包......原创 2018-10-27 20:38:24 · 43062 阅读 · 21 评论 -
C++字符串处理
字符串处理C++里的字符串的效率不高,常数很大,所以建议尽量少用。但是,十分方便,可以直接加,和比较,删除也会自动补齐,比字符型数组好多了(但是慢多了)。自从学了C++,第一感觉是比pascal方便多了,第二每当做的关于字符串的题目,也怀念起pascal了。字符串常用命令string s;//定义 命令 例子 用法 + x+y 将y接在x后面,原创 2017-12-22 12:33:20 · 314 阅读 · 0 评论 -
(二路归并、树状数组) 求解逆序对
求解逆序对常用的两种方法,二路归并、树状数组。二路归并求解逆序对二路归并是一个十分完美的求逆序对的方法 ......树状数组也可以求解......原创 2017-12-22 15:21:18 · 327 阅读 · 0 评论 -
逆元相关知识
逆元相关知识乘法逆元(mod 在C++里是%)定义: 满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元。为什么要有乘法逆元呢? 当我们要求(a/b)%p的值,且a,b都很大,无法直接求得a/b的值,必须在之前mod时(因为(a/b)%p不等于(a%p)/(b%p)),我们就要用到乘法逆元。 我们可以通过求b关于p的乘法逆元k,将a乘上k再模p,即(a*k)%p。原创 2017-12-17 11:12:14 · 322 阅读 · 0 评论 -
二分图匹配 【匈牙利算法】 从入门到熟练
二分图匹配 匈牙利算法先让我来介绍一下二分图是什么吧!这就是一种最常见的二分图。也就是左右两边相连,左边与左边不连,右边也不连的一幅图。把左边看成集合A,右边看成集合B,每条边都连接A与B中的点。讲完二分图,我们在了解一下匹配是什么。 在二分图中,任意两条边都没有公共顶点。 让我们看一幅图: 红色线条就是匹配的线条,当然,不止一种。这些红色线条可以称为匹配边,被红...原创 2018-02-26 19:25:21 · 183 阅读 · 0 评论 -
C++ STL 如何调堆【两种方法】 看了就懂
C++ STL 堆的调取记住掉STL里的东西要在前面加上use namespace std;。1.优先队列这个堆我想应该是最常用的,因为写起来方便,但是时间效率上不高,往往比手写的多一个系数。所以本人不是很喜欢用。 需要用到algorithm这个库。定义: priority_queue<存储类型> 变量名称,例如priority_queue< int...原创 2018-03-01 19:24:58 · 3048 阅读 · 0 评论 -
C++ 如何重载运算符 —— 一篇简单易懂的博文
C++ 重载运算符重载运算符在很多地方要用到,而且很方便,虽然没有直接写cmp快,但是用途比cmp广泛很多。首先我们看一个模板:struct (名称){ 变量 类型 operator 符号(const 名称 变量)const{(返回计算的值)}}可能比较难懂,下面举个例子:struct ad{ int x,y; bool opera...原创 2018-03-01 20:00:11 · 1544 阅读 · 2 评论 -
网络流【最大流&&最小割&&费用流】——一篇简单易懂的博文
网络流算法一.网络流我们先来了解什么是网络流。网络流(network-flows)是一种类比水流的解决问题方法,与线性规划密切相关。网络流的理论和应用在不断发展,出现了具有增益的流、多终端流、多商品流以及网络流的分解与合成等新课题。网络流的应用已遍及通讯、运输、电力、工程规划、任务分派、设备更新以及计算机辅助设计等众多领域。简单点说,就像你家的水管,从自来水公司到你家的水龙头,水管就像一张网一样分布原创 2018-03-04 19:05:04 · 22941 阅读 · 7 评论 -
CSDN-Markdown 编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2018-04-16 15:32:07 · 228 阅读 · 0 评论 -
如何快速求解组合数 C(n,m) 取模 【最简单的方法】
如何快速求解组合数 C(n,m) 取模组合数取模,肯定要用到乘法逆元,像我这种蒟蒻,还不会。但是我学到了一个更优秀的方法,不仅快速求解C(n,m),而且还可以mod。这需要用到质因数拆分: 我们知道Cmn=n!(n−m)!m!Cnm=n!(n−m)!m!C_n^m=\frac{n!}{(n-m)!m!}。 那么我们将n!转化成质因数相乘的形式 Px11∗Px22∗...∗Pxk...原创 2018-04-11 14:33:52 · 4715 阅读 · 0 评论 -
LCA(离线Tarjan算法,在线倍增法)详解
LCA(离线Tarjan算法)首先我们看一道洛谷上的板子题:P3379 【模板】最近公共祖先(LCA)时空限制:1000ms,128M【题目描述】 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 【输入格式】 第一行包含三个正整数N、M、S,分别表示树的结点个数、询问的个数和树根结点的序号原创 2017-12-28 11:08:17 · 456 阅读 · 1 评论 -
LCT动态树【史上最精简易懂的LCT讲解】
Link Cut Tree(动态树,LCT)介绍首先简单介绍一下Link Cut Tree,将一棵树分成轻边和重链,类似于树链剖分,但是树剖是静态的。LCT可以用于动态的加点和删点,甚至还可以换根。也就是LCT维护了一个动态的树。LCT中的每棵Splay都维护了一条重链(实际上是实链,这里统一讲重链)上的答案。多颗Splay连成一棵树,这棵Splay满足左儿子在树上的深度(这里深度指的是在数...原创 2019-03-12 13:24:19 · 1717 阅读 · 1 评论