学习笔记
文章平均质量分 94
d3ac
这个作者很懒,什么都没留下…
展开
-
素数判断相关算法
基础素数判断 , 欧拉筛 , Miller_Rabin原创 2021-10-30 10:28:25 · 175 阅读 · 0 评论 -
数据结构基本模板复习
这就一篇简短模板博客,没有什么解说的,就是一些注意事项,准备后期写一点技巧性的东西比如线段树合并,李超线段树,动态开点,010101线段树,用于维护乘法数论,二维的树,分块,莫队,线段树优化建图,lctlctlct之类的,看情况学习一点点其他的奇怪的树或者说图(像仙人掌这种).模板1: 并查集三个核心函数int getf(int x){return fa[x]==x?x:getf(fa[x]);}void merge(int v,int u){ int temp1,temp2; temp1=ge原创 2021-09-15 17:06:29 · 178 阅读 · 0 评论 -
整除分块
引入问题:∑i=1n⌊ni⌋\sum_{i=1}^n\lfloor \frac{n}{i}\rfloor∑i=1n⌊in⌋,其中n<=109n<=10^9n<=109暴力:for(int i=1;i<=n;i++) ans+=n/i;//有手就行这个的时间复杂度是n2n^2n2正解:i/ji/ji/j最终的答案一定是单调递减的而且可能还有一段是连续的一段数字.比如202020除下来的结果就是20,10,6,5,4,3,2,2,2,2,1,1,1,1,1,1,1,原创 2021-09-01 22:33:24 · 484 阅读 · 8 评论 -
并查集
模板: 并查集三个核心函数int getf(int x){return fa[x]==x?x:getf(fa[x]);}void merge(int v,int u){ int temp1,temp2; temp1=getf(v); temp2=getf(u); if(temp2<temp1) swap(temp2,temp1); if(temp1!=temp2) fa[temp2]=temp1;}bool find(int u,int v){ int temp1,temp2;原创 2021-08-23 22:46:17 · 214 阅读 · 2 评论 -
斜率优化dp
斜率优化例题1:洛谷P2365 任务安排我们先使用前缀和的方式,将t[i]t[i]t[i]和c[i]c[i]c[i]预处理,f[i]f[i]f[i]表示前面iii个整好之后的花费,然后得到方程式:f[i]=minj=0i−1{f[j]+t[i]∗(c[i]−c[j])+s∗(c[n]−c[j])}f[i]=min_{j=0}^{i-1}\{f[j]+t[i]*(c[i]-c[j])+s*(c[n]-c[j]) \}f[i]=minj=0i−1{f[j]+t[i]∗(c[i]−c[j])+s∗原创 2021-08-21 22:35:12 · 81 阅读 · 0 评论 -
[学习笔记] 背包九讲
01背包问题题目:有NNN件物品和一个容量为VVV的背包。第iii件物品的费用是c[ic[ic[i],价值是w[i]w[i]w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。解答f[i][v]f[i][v]f[i][v]表示前面iii个物品放进空间为vvv的背包获得的最大收益f[i][v]=max(f[i−1][v],f[i−1][v−c[i]]+w[i])f[i][v]=max(f[i-1][v],f[i-1][v-c[i]]+w[i])f[i][v]=m原创 2021-08-21 22:26:28 · 168 阅读 · 0 评论