摘要:
定义 邻域:是开集 区域:也是开集;闭区域才是闭集 区域单连通和多连通:取决于中间有没有洞,无就是单连通。通常把多联通的转化为单连通来解决问题。 内点:某个点存在邻域全在某区域内。同理还有 外点,边界点 简单曲线(若当曲线):中间没有任意两点重叠的曲线。 简单闭曲线(若当闭曲线):简单曲线首尾相接, 阅读全文
摘要:
【BZOJ4698】[SDOI2008]Sandy的卡片 差分一下然后选一个串,用这个串的所有前缀和其他串kmp,求出最长的公共部分即可 代码: 1 #include <bits/stdc++.h> 2 #define f(c,a,b) for (int c=a; c<=b; c++) 3 #def 阅读全文
摘要:
大佬的bitset用法小结 https://www.cnblogs.com/zwfymqz/p/8696631.html BZOJ3687简单题 题意:求子集的算术和的异或和,子集大小为n(n<=1000),所有数和sum<=2000000 求子集和可以用01背包的那个动规,f[i]表示有多少个子集 阅读全文
摘要:
把问题转化成一堆不等式,然后用最短路求解 POJ3169 Layout 最后要求1和n之间最大dis是多少 -> 转化为得到一堆 d[n] - d[1] <= xi 然后求xi的最小值 对于给出的是d[u] - d[v] >= xi 同乘-1转化为 d[v] - d[u] <= -xi 即可 然后用 阅读全文
摘要:
spfa 有负边时使用 复杂度可以被卡到nm(坑:怎么卡?) 判负环(一个点入队了n次) djkstra 每次走最短的路 有负边时不能使用 每次出队一个点(logn),更新点的所有边,每条边都可能导致一次优先队列的操作,所以是mlogn的复杂度 当图是一个完全图,就变成了n^2logn,那就不如暴力 阅读全文
摘要:
碎碎念 变量重名了吗 该用long long 的用了吗 特殊情况考虑了吗 全局变量变了吗,用全局变量要注意 二分 注意二分的东西是离散的还是连续的 注意结果是取最左的还是最右的 可持久化 修改记录的时候一定要新建记录,不能在原纪录上修改,会影响到其他历史记录的。。。 阅读全文
摘要:
BZOJ4241: 历史研究 给一个长为n的数组,q次查询,查询l~r区间内某个数的值乘以该数出现的次数的最大值。 明显添加比较容易删除比较难,所以回滚莫队 先离散化数,然后在莫队的时候维护桶。 所谓回滚莫队就是lefl每次都到块的最右边这样就不会有删除操作了。 1 #include <bits/s 阅读全文
摘要:
性质 若n个节点有两个孩子,则叶子数为n+1 若n个节点有两个孩子,则边数为2*n,(去掉一个孩子的边和点),总点数为2*n+1,所以叶子数为n+1 若有n个节点,则有n+1个空指针 假设空指针指向x个空节点,总边数为2*n,总节点数为2*n+1,x=总节点数-节点数 = 2*n+1-n = n+1 阅读全文
摘要:
一些调试经验 要修改某个时间点的树时一定要再整一个新的树出来,不能在上一个树的根节点就这样修改,因为某一个时间点的树永远连着以前的,改了的话会对前面的版本产生影响 cnt一直在累加,用cnt赋值的时候注意再注意。 洛谷P3834 【模板】可持久化线段树 1(主席树) 静态区间第 k 小 先把输入的a 阅读全文
摘要:
POJ3061Subsequence 模板题,给出n个数和S,求长度最小的区间,使得区间和不小于S 代码: 1 #include <cstdio> 2 #include <iostream> 3 #include <algorithm> 4 #define nmax 100010 5 6 using 阅读全文