随笔分类 - 模板
1
摘要:#include<bits/stdc++.h> using namespace std; #define ll long long #define clean(a,b) memset(a,b,sizeof(a)) const int inf=0x3f3f3f3f; const int maxn=2e
阅读全文
摘要:string Manacher(string s) { string t = "$#"; for(int i=0;i<s.size();i++) { t+=s[i]; t+="#"; } vector<int>p(t.size(),0); int mx=0,id=0,reCenter=0,reLen
阅读全文
摘要:背包问题 1 01背包问题 1.1 问题: 有$N$件物品和容量为$V$的背包,放第$i$件物品的体积是$C_i$,得到的价值是$W_i$,问放入背包哪些物品能使价值总和最大。 1.2 思路: 首先,在类似的问题中,贪心思想是错误的,这点可以自己思考一下。 在这样一个问题中,我们思考经典
阅读全文
摘要:数学 //本篇为学习记录,会一直更新 常见符号: 整除符号:\(x\) \(|\) \(y\), $x$整除$y$ 取模符号:\(x\) \(mod\) \(y\), $x$除以$y$ 的余数 互质符号: \(x\) \(\bot\) \(y\), $x$除以$y$ 的余数 最大公约数:\(gcd
阅读全文
摘要:int mod(string a,int b)//高精度a除以单精度b { int d=0,len=a.size(); for(int i=0;i<len;i++) d=(d*10+(a[i]-'0'))%b; //求出余数 return d; }
阅读全文
摘要:tarjan缩点 #include <bits/stdc++.h> using namespace std; #define ll long long #define lowbit(a) ((a) & -(a)) #define clean(a, b) memset(a, b, sizeof(a))
阅读全文
摘要:最短路 单源最短路:dijkstra dijkstra用于解决单源最短路问题,即起点唯一,终点不唯一 适用于稠密图,算法时间复杂度$O(n^2)$ 该算法要求图中不能有负环 通过从起始点向外扩散,不断进行松弛操作,dis[i]表示从起点到当前点的最短的路径长度 dijkstra的贪心策略用在最长路上
阅读全文
摘要:拓扑排序 在一个有向图中,对所有的节点进行排序,要求没有一个节点指向它前面的节点 具体实现 1 找到一个入度为0的点 2 把这个点删掉(放入ans中),把所有以他为起点的路断掉 3 重复 1 2 直到没有入度为0的点 如果还有点没有被删掉 那就是有环(所以还可以用来判断图里是否有环) ans中的顺序
阅读全文
摘要:哈希 简单来说,哈希相当于一种单向加密,一种映射过程,并且要尽量保证加密后不会重复,通过这种方式来替代一些很费时间的操作 字符串哈希 也叫进制哈希 当你想判断两个字符串是否相等时,不知道你有没有过一种想法,将两个字符串通过一些独特方式的计算转换成两个数字,然后判断两个数是否相等不就好了,那么进制哈希
阅读全文
摘要:可持久化并查集 前置: %%%AgOH的B站:https://space.bilibili.com/120174936/ 什么是可持久化并查集呢?当然是 并查集+可持久化(主席树) 啦 好像废话 害,当然不懂这两个知识的建议先去看看,简单学习一下 我在这就简单的回忆一下 并查集 开始时让每个元素构成
阅读全文
摘要://并查集-都要给fa赋初值!!// /*递归版路径压缩*/ int fa[maxn]; int find(int x) { return fa[x]==x?x:fa[x]=find(fa[x]); } void merge(int x,int y) { fa[find(x)]=find(y); }
阅读全文
摘要:dfs序与树链剖分 还是先安利一发AgOH https://space.bilibili.com/120174936 模板题:洛谷 P3384 【模板】轻重链剖分 https://www.luogu.com.cn/problem/P3384 如题,已知一棵包含 N个结点的树(连通且无环),每个节点上
阅读全文
摘要:主席树 然后在这先%%%一个B站宝藏up主,数据结构讲的很清楚,主席树这一节也是听了很多很多遍 https://space.bilibili.com/120174936?spm_id_from=333.788.b_765f7570696e666f.1 有些概念来自up主的ppt,主席树的代码习惯也是
阅读全文
摘要:码 计算几何模板 原博客在这 https://blog.csdn.net/clasky/article/details/9990235?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&ut
阅读全文
摘要:一、数位dp?干嘛的? 通常用来求两个数之间符合条件的数的个数,而且这两个数很大,暴力做不来,数位dp一般用来计数,因为数位dp是按位来计算,所以大数都搞得定,数的大小对时间复杂度的影响很小,而且一般符合某种条件的这个条件与数的组成有关,与大小无关 二、如何设计状态?? 据我所知,数位dp一般有两种
阅读全文
摘要:What does the 树状数组 do? 树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构 主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值 经过简单修改可以在log(n)的复杂度下进
阅读全文
摘要:快速乘 引自2009国家集训队论文:骆可强:《论程序底层优化的一些方法与技巧》 代码://挺迷的,不知道为什么,好用就是了 ll fast_mult(ll a,ll b,ll mod) { return (a*b-(ll)((long double)a/mod*b)*mod+mod)%mod; }/
阅读全文
摘要:声明:搬运自:https://blog.csdn.net/weixin_43093481/article/details/82432254 但写上了自己的理解,对其补充以及修改,(持续更新……) 一.STL中数据结构常见操作 1. a.assign(b.begin(), b.begin()+3);
阅读全文
摘要:存个组合数板子 预处理阶乘求组合数 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 const ll mod=1e9+7; 5 const ll maxn=1e6+7; 6 ll pr[maxn];
阅读全文
摘要:一.解释 以前遇到二分的题目都是手动实现二分,不得不说错误比较多,关于返回值,关于区间的左闭右开等很容易出错,最近做题发现直接使用STL中的二分函数方便快捷还不会出错,不过对于没有接触过的同学,二分函数确实是一个头疼的部分,自己查的内容又有点乱,找不到具体的使用方法,有必要自己总结一份完整的以后备用
阅读全文
1

浙公网安备 33010602011771号