![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
总结
文章平均质量分 70
_铁铁铁铁铁_
这个作者很懒,什么都没留下…
展开
-
线段树基础+例题
一、问题——一定要开四倍空间啊啊啊1)query过程中区间的情况讨论设Tl,TrT_l,T_rTl,Tr为线段树中的区间左右端点,l,rl,rl,r为查询的区间左右端点[l,r]⊃[Tl,Tr][l,r]\supset[T_l,T_r][l,r]⊃[Tl,Tr],直接返回,不再进行往下搜索——由于这一步的剪枝可以时query操作控制在==O(4∗logN)O(4*logN)O(4∗logN)==的复杂度[l,r]∩[Tl,Tr]≠∅[l,r]\cap[T_l,T_r]\neq\em原创 2022-05-17 09:03:32 · 823 阅读 · 3 评论 -
DP模板—状压DP
一、状压DP利用二进制表示当前状态二、例题(1)蒙德里安的梦想当我们先尽可能摆放完1∗21*21∗2的方格时,剩下的空格的摆放方式是唯一的——只能用2∗12*12∗1补完或不能构成合法方案所以我们考虑只摆放1∗21*21∗2方格的方案并分析能否构成一个合法方案,状态表示:f[i][j]代表前i−1列已经用1∗2的方格摆放好,且从第i−1列伸出到第i列为状态j的所有方案f[i][j]代表前i-1列已经用1*2的方格摆放好,且从第i-1列伸出到第i列为状态j的所有方案f[i][j]代表前i−1列原创 2022-05-05 16:22:46 · 230 阅读 · 0 评论 -
DP模板整理—背包、线性、区间、计数类
一、背包问题01背包问题题解:ACM_01背包(恰好装满)解题思路:求01背包恰好装满时得到的最大价值,应该这样初始化:①dp[0]=0,表示背包容量为0时得到的最大价值也为0;②dp[1~W]=-inf,表示背包容量为其他状态下都为非法状态(未装满),因为我们还要求解恰好装满的情况下得到的最大价值。那么在求解过程中,由于动规的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解,所以如果子问题状态是非法的(-inf),则当前问题的状态依然非法,即不存在恰好装满原创 2022-03-26 12:11:21 · 1465 阅读 · 0 评论 -
AcWing基础课最小生成树模板
Prim算法(O(n2)O(n^2)O(n2))1)算法流程:设集合S为生成树集合,T为原始集合n次操作:1、找到集合中T中距离距离集合S最近的一个点加入集合S中2、利用该点更新T中其余点距离集合S的距离#include<bits/stdc++.h>using namespace std;const int N=510;int n,m;int g[N][N];int dist[N];bool vis[N];int prim(){ int res=0;//计算原创 2022-03-23 20:48:52 · 516 阅读 · 0 评论 -
AcWing算法基础课贪心模板题
一、区间问题区间选点、最大不相交区间数量题解:1)如何选点?(1)将每个区间按右端点递增排序、(2)从前往后遍历每个区间,如果当前区间中已经包含点,跳过,否则选取当前区间的右端点PS:此方法选择的点必然是序列中无交集的区间的数量,所以此方法适用于两题2)证明?最优解ansansans:所有合法方案中的最小值,贪心解cntcntcnt:上述选法(1)上述选法必然会使每个区间里至少包含一个点,是一种合法方案,所以ans<=cntans<=cntans<=cnt(2)通过贪心原创 2022-03-14 20:30:03 · 801 阅读 · 3 评论 -
acwing数论(痛苦面具非完整版)
质数试除法判断质数(素数)(O(sqrt(n))质数一定是严格大于一的整数,如果只包含1和本身这两个约数,就成为质数(素数)#include <iostream>#include <algorithm>using namespace std;bool is_prime(int x){ if (x < 2) return false;//注意是质数的条件 for (int i = 2; i <= x / i; i ++ )//注意循环条原创 2021-08-20 20:20:45 · 228 阅读 · 0 评论 -
AcWing基础课最短路模板
朴素Dijkstra(稠密图,O(n^2))集合S为已经确定最短路径的点集。初始化距离 一号结点的距离为零,其他未确定最短路的结点的距离设为无穷大。循环n次,每一次将集合S之外距离源点最短的点X加入到S中去(这里的距离最短指的是距离1号点(源点)最近。点X的路径一定最短,基于贪心)。然后用点X更新X邻接点的距离。寻找路径最短的点:O(n^2)加入集合S:O(n)更新距离:O(m)(实际就是每条边都比较一遍)使用邻接矩阵存储#include<bits/stdc++.h>.原创 2021-08-12 12:45:58 · 308 阅读 · 0 评论 -
acwing数据结构
单链表#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int e[N],ne[N],head=-1,idx;void add(int k,int x){//插入到下标为k的点的后面(下标从0开始) e[idx]=x; ne[idx]=ne[k]; ne[k]=idx++;}void add_head(int x){//插入在头节点上 e[idx]=x; ne[idx]原创 2021-08-06 21:04:26 · 178 阅读 · 0 评论 -
DFS,BFS初步学习
7-2 输出全排列 (20 分)#include<bits/stdc++.h>using namespace std;int vis[11],a[11],n;void dfs(int flag){ if(flag==n+1){ for(int i=1;i<=n;i++) cout<<a[i]; cout<<endl; return ; } for(int i=原创 2021-05-05 23:34:32 · 96 阅读 · 0 评论 -
五一补题
7-5 田忌赛马·Hard先同easy版对比一下:7-4 田忌赛马·Easy解决方法:对两组进行排序,如果a[n-i-1]>b[k-i-1],则k++;解题思路:——二分根据题目可知,我们寻找的是从某一天开始a中的????至少获胜k场,那么在这一天之前获胜场数一定是小于k,根据这种性质(类似于单调性)我们可以判断我们设定的第M天是在答案天数的左侧还是右侧,从而可以利用二分解决这个问题。蒟蒻的代码:#include<bits/stdc++.h>us原创 2021-05-04 11:40:27 · 89 阅读 · 0 评论 -
acwing基础算法
第一章Ⅰ.快速排序void quick_sort(int q[], int l, int r) { if (l >= r) return; int x = q[l], j = l; for (int i = l + 1; i <= r; i ++ ) if (q[i] < x) swap(q[ ++ j], q[i]); swap(q[l], q[j]); quick_sort(q, l, j - 1); qu原创 2021-05-02 18:08:47 · 3427 阅读 · 1 评论 -
STL-set
标准库提供set关联容器分为:1,按关键字有序保存元素:set(关键字即值,即只保存关键字的容器);multiset(关键字可重复出现的set);2,无序集合:unordered_set(用哈希函数组织的set);unordered_multiset(哈希组织的set,关键字可以重复出现)。set就是关键字的简单集合。当只是想知道一个值是否存在时,set是最有用的。set内部采用的是一种非常高效的平衡检索二叉树:红黑树,也称为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡原创 2021-03-19 18:58:17 · 163 阅读 · 0 评论 -
STL-map
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值,可类比函数)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。//第一种#include<map>#include<string>#includ原创 2021-03-18 00:32:14 · 97 阅读 · 0 评论 -
STL-vector
1.STL(Standard Template Library),也被称为标准模板库,包含大量的模板类和模板函数,是C++提供的一个由一些容器、算法和其他一些组件组成的集合。用于完成诸如输入/输出、数学计算等功能。STL被内置到支持C++的编译器中。在C++标准中,STL被组织为13个头文件:<iterator>,<functional>,<vector>,<deque>,<list>,<queue>,<stack>原创 2021-03-16 20:05:45 · 207 阅读 · 0 评论 -
大一下第一周
Ⅰ.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着(不仅数据元素所包含的数据的个数要相同,而且对应数据项的类型要一致)数据的存储结构是指(数据的逻辑结构在计算机中的表示)Ⅱ.Ⅲ.类型起别名——typedef关键字typedef用于为系统固有的或程序员自定义的数据类型定义的一个别名,如:Ⅰtypedef struct student{ char number[5]; char name[11]; int ...原创 2021-03-11 23:54:35 · 219 阅读 · 0 评论 -
高精度斐波那契
1.为何会有高精度斐波那契一说? 1 1 2 1 3 2 4 3 5 5 6 8 7 13 8 21 9 3410 5511 8912 14413 23314 37715 61016 98717 159718 258419 418120 676521 1094622 1771123 2865724 4636825 7502526 12139327 19641828 31781129 51422930 83204031 134626932 217原创 2021-02-23 09:54:38 · 1550 阅读 · 0 评论 -
写了也不看之第一学期c语言总结
一.循环,递归,遍历,迭代1.循环一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。c语言中的循环语句第一种for( ; ; ){}第二种while(){}第三种do{}while();2.递归——重复调用自己程序调用自身的编程技巧称为递归递归的缺点:递归算法解题相对常用的算法如普通循环等,运行效率较低。因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为原创 2020-12-18 19:15:46 · 560 阅读 · 0 评论