06 2020 档案
摘要:行列式: 行列式在数学中,是一个函数,其定义域为det的矩阵A,取值为一个标量,写作det(A)或 | A | 。无论是在线性代数、多项式理论,还是在微积分学中(比如说换元积分法中),行列式作为基本的数学工具,都有着重要的应用。 行列式可以看做是有向面积或体积的概念在一般的欧几里得空间中的推广。或者
阅读全文
摘要:差分 如果去看我的树状数组的博客的话就懂了,就是记录相邻节点值的差值。这样一来,前缀和就相当于原值了。 树上差分 树上差分基本上就是差分在树上的实现。因为差分的原理,我们先将所有点的权值改变成差分值,再更改一段区间内的所有值时,只需要更改首尾两端的值,如果要求值的话dfs重新加上前缀和就是正常的值了
阅读全文
摘要:树上倍增 倍增算法就是通过倍增快速查找的算法。它在树的问题上比树链剖分处理得要快而且简单。 它的核心公式就是fa[x][j]=fa[fa[x][j-1]][j-1] / fa[x][j+1]=fa[fa[x][j]][j].为了更好地理解这个公式,我打了以下表格: 0 1 2 3 1 0 0 0 0
阅读全文
摘要:我的第一篇博客就是扫描线。虽然那时候什么也不懂,也非常幼稚,甚至不知扫描线的原理是如何,只是一门心思地去做,就像面对未知的生活。 扫描线处理矩阵面积之和的问题,当然它们会有互相覆盖而不能直接加起来。 扫描线就是从下往上一次扫描“线”,然后用线将图分成多个区域,累加即可。用线段树记录横坐标此时扫描线处
阅读全文
摘要:从个位到最高位对所有数字排列数位次。 又叫做桶排序。 时间复杂度很优秀,当然,排序时还可以干一些奇奇怪怪的事情。 我还不会排负数。 简单地排序并输出。a数组从0记录。 #include<iostream> #include<cstdio> #include<cstring> #include<alg
阅读全文
摘要:map就是映射。 定义 map<typename,typename> 注:map的元素是pair。 特性 map会对第一个对象自动排序。 map不允许有两个相同的关键字。 map可以定义迭代器iterator。当然,map相当于一个像pair的结构体,要访问元素时注意使用->或者(*it).firs
阅读全文
摘要:https://blog.csdn.net/duan19920101/article/details/51579136 简单理解就是一个通过映射直接查找的表(散列表),用哈希函数将数据按照其存储特点进行存储。查询效率接近是O(1)的。 存储方式是结合了数组和链表的思想,用链表将存储的数据直接相连,便
阅读全文
摘要:P1414 又是毕业季II 数论题,主要在于推演。 洛谷的《又是毕业季I》更好玩 发现对于所有的同学的能力值,只要我们选出每个数的所有因子并记录所有同学所有因子出现的次数,就可以得到一个c数组为所有因子出现的次数。 因为让输出1-n所有的值,而且因子数c[k-1]>=c[k],我们就一定可以从因子数
阅读全文
摘要:就是把字符串转变成一个树,每个节点连接下一个字符,用空间换时间。 对于区分大小写或不区分的题目,只需要改变ch[][26]的值就行了。 ch[u][x]表示u节点(标号决定)下一个x字符节点的标号。 如果题目让记录附加值,那就用val[标号]在插入时记录一下就好了。 #include<iostrea
阅读全文
摘要:线性筛 int prime[maxl]; bool mark[maxl]; int tot; inline void oula() { for(int i=2;i<=maxl;i++) { if(!mark[i])prime[++tot]=i; for(int j=1;j<=tot and i+pr
阅读全文
摘要:参照 有两个数字n,k,两个大小为n的数组a,b,将其分成k-n(包含)份,使得 R=sigma(ai)/sigma(bi) 最大。 我们将之化成di=ai-r*bi,求d的和,二分求出来r的最大值就行了。 POJ2976 //01分数规划 #include<iostream> #include<c
阅读全文
摘要:KMP 算法是 D.E.Knuth、J,H,Morris 和 V.R.Pratt 三位神人共同提出的,称之为 Knuth-Morria-Pratt 算法,简称 KMP 算法。 问题:求a字符串与b字符串中子串相同的串首位置。 暴力就不说了,设a长m,b长n,每次枚举比对每个字符,复杂度O(nm)。
阅读全文
摘要:P2375 [NOI2014]动物园 为什么复制题目连字体大小一块复制过来了(雾) 我竟然会做NOI的题目辣~\(≧▽≦)/~(看的题解 总而言之,这是一道简单的KMP问题。题面简直是给没学过KMP的人看的(比如我)。 我们发现,这个所谓的num数组和nxt有异曲同工之妙。但是我们对于不能重合这一块
阅读全文
摘要:http://poj.org/problem?id=3615 因为只需要求所在路径的最大高度的最小值,而且n<=300,我们可以用floyd跑。 g[i][j]=min(g[i][j],max(g[i][k],g[k][j]),简单地比大小,求最大值的最小值。 注意要先将g设为无限大。 #inclu
阅读全文
摘要:https://www.cnblogs.com/chinhhh/p/7965433.html<-详解 洛谷P3384<-模板 如果我会告诉你我不小心把%写成了*调了一个多小时吗 适用范围 在一棵树上+-点权/边权然后多次提问的问题等 原理 将一棵树剖分成若干条链,在链上通过数据结构维护。 照本宣科
阅读全文
摘要:因为是单向边,牛儿来回的路径长度并不相同,所以需要用两次dijkstra,一次正向从x开始dijkstra,再将边全部反向存再来一次。 因为是板子题比较良心n比较小,我们就可以用矩阵来存储啦。如果n比较大的话,我的想法是再造一个图,同时反向存边。内存可能占用比较大但是想起来简单。 代码很短。 #in
阅读全文
摘要:刚开始还觉得有点怪怪的。因为想着如果每个树只是单纯地记录它所在的区间的话会不会有不在区间内的数据给更新了,但是我好像是傻掉了因为如果有这种情况出现的话在父亲节点就会分成l,mid和mid+1,r两个区间查找,当节点区间和查找的区间完全吻合时就ok了。 这道题没有修改,连懒标记都不需要,是一道实打实的
阅读全文
摘要:不知从什么时候的哪里我看到了一个and关键字,心想这是个什么玩意。。。然后知道它相当于&&,于是开启了罪恶的生涯…… 替代关键字,似乎可读性更好,但是有些编译器可能会无法识别(eg.MSVC2017) 所有关键字可以在iso646.h头文件中找到: 替代关键词 对应符号and &&and_eq &=
阅读全文
摘要:素数筛,数据范围不大,直接暴力筛。 坑:有个数据是 1 1,答案是1.差点没把我卡去世。 我的三观哪去了。 #include<iostream> #include<cstdio> #include<utility> #include<algorithm> #include<cstring> usin
阅读全文
摘要:工程代码员请看详解 static adj.静止的;固定的;无活力的;静电的;静电干扰的 就是静态的意思啦~ 当我们在一个函数内部普通地定义一个变量时,相当于在程序中进栈,出函数就会被清除,程序也不会对其初始化,所以可以在不同函数内使用。 但是在前面加上static前缀就不一样了: 变量在全局数据区分
阅读全文
摘要:https://www.luogu.com.cn/problem/P1040 n很小,可以树形dp或者区间dp。 设fij为从i到j的最大加分值,则有f[i][j]=max(f[i][k-1]*f[k+1][j]+f[k][k])。 有一个小技巧,将f[i][i-1]全部设置为1,这样的话搜索到叶子
阅读全文
摘要:并查集有两种优化。第一种是直接连根——虽然是O(n)但是会破坏树形结构。 按秩合并 UVA11354(莫得原地址洛谷的凑合一下) 大意:求最小生成树的两个点间的最大路径。 带边权的并查集?多组数据? 我们按秩合并。 基本思想是使包含较少结点的树的根指向包含较多结点的树的根。 我们存边时,用结构体存边
阅读全文
摘要:https://www.luogu.com.cn/problem/P1880 一道区间dp题目。 用d[i][j]表示从i到j的最大/最小得分,那么依次枚举长度len,坐标i和j,三层循环就可以dp递推求得最值了(听说这是道NOI题目) 记得使用前缀和哦。 #include<iostream> #i
阅读全文
摘要:贝祖定理:即如果a、b是整数,那么一定存在整数x、y使得ax+by=gcd(a,b)。换句话说,如果ax+by=m有解,那么m一定是gcd(a,b)的若干倍。(可以来判断一个这样的式子有没有解)有一个直接的应用就是 如果ax+by=1有解,那么gcd(a,b)=1; int gcd(int a,in
阅读全文
摘要:关闭流同步 std::ios::sync_with_stdio(false); 关闭输入输出流与标准输入输出(scanf printf)的同步,加快流速度,但关闭后不可混用。 整形快读 从标准输入流读入一个 int #include<cctype> #include<cstdio> inline i
阅读全文
摘要:洛谷P2014选课 一道树形DP题。 f[i][j]表示i个点选j门课程的最大学分。 递推方程: for(int a=n;a>0;a--)//总共选择多少 for(int b=0;b<a;b++)//分别选择多少(b,a-b) f[x][a]=max(f[x][a],f[x][a-b]+f[u][b
阅读全文
摘要:transform:<algorithm> tolower:<ctype.h> transform有两种使用方法 第一种(参数): 源目标起始迭代器地址 源目标结束迭代器地址 输出迭代器地址 自定义函数符(一元函数) 例如某一个题:(也就是我这里将两个函数相提并论的原因) 将字符串不分辨大小写进行比
阅读全文
摘要:2118: 墨墨的等式 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2390 Solved: 937[Submit][Status][Discuss] Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2x2+…+anxn=B存在
阅读全文