算法学习
各种算法
wrynhyxa
优秀
展开
-
素数
素数素数的判定求素数这次想写一篇关于素数的这个博客,因为在上一次的中国大学生acm的比赛中,我和我的队友们就困在了哪里,然后其实我们的思路是对的,但是在素数求的过程中有很多的问题,然后最近就看了一些题目,然后再把这些基本的代码总结一下。搬运的大佬对于lunch的解析链接#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<bitset&g原创 2020-09-27 22:21:39 · 89 阅读 · 0 评论 -
位运算
位运算运算符&|^<<~位运算的符合运算运算符输出的时候:cout<<(a运算符b)<<endl;其中的或的符号是 |&按位与。 当左右操作数相应的二进制都是1,结果的相应位才被置换为1或按位或。当左右操作相应的二进制为其中有一个是1,结果的相应位是1^按位异或。当且仅当左右操作数相应的二进制位其中有一个是1,相对应才被置换成1<<左移。将左操作数按位向左移动,移动后腾空的位数补0.移动的位数原创 2020-08-21 21:18:39 · 99 阅读 · 0 评论 -
图论--强连通分图
图论--强连通分图强连通分图定义算法:Kosaraju算法Tarjan算法强连通分图定义在有向图中,点a到点b的有一条路,同时点b也有条路可以到点a,则称a,b是强连通的。如果在一个图中任意两个点都是强连通则,则称强连通图。有向非强连通图的极大强连通过子图,称为强联通分量。点的数目越多越复杂,而且这个图并不是所有的都是强连通的,所以如果降低时间复杂度很重要算法:Kosaraju算法代码:void dfsOne(int x){ vst[x]=1; for(int i=1;i<原创 2020-08-07 21:56:29 · 2147 阅读 · 0 评论 -
图论--最短路
最短路最短路算法:Dijkstra算法Folyd算法及求解最小环Bellman-Ford算法SPFA算法最短路最短路问题分为多源最短路(求两点之间的最短路) 和 单源最短路(求所有点到某特定点的最短距离)。感觉和前面的最小生成树的感觉差不多,但是相比还是复杂一点(算法也多)。算法:Dijkstra算法不带负权的有向或者无向图如何实现这个算法首先找到一点其边最小然后以这个为中间,往外扩到两家连接起来(扩展的时候找最小的或最大的(根据题目要求))代码:priority_queue<原创 2020-08-06 23:40:43 · 143 阅读 · 0 评论 -
图论--最小生成树
最小生成树基本概念要求最小生成树是什么?最小边原则算法:Prim算法Kruskal算法基本概念要求1.不成环(就是不是首位相连,可以形成一个连接闭合的图形)2.连通(就是每个点在不成环的前提下都可以连起来,像贪吃蛇)最小生成树是什么?最小生成树就是由几个点,和几条边构成的树,由因为最小,所以在调边的时候各边的和应该是最小的。最小边原则图中权值最小的边(如果唯一)一定在最小生成树上。算法:Prim算法如何实现这个代码?首先找到两个点,然后由这两个点分片(就像地主画土地一样)然后由这两原创 2020-08-06 22:53:27 · 230 阅读 · 0 评论 -
单调队列(题目)
单调队列(题目)QueueBalanced PlaylisQueue题意:指的是海象进行排队,但是他们会因为年龄有不愉快的程度。如果是年轻的海象比他靠前他就会产生不愉快的程度,距离越远不愉快的程度越大。如果没有不愉快则输出-1.题目网址:https://codeforces.com/problemset/problem/91/B代码来源:https://blog.csdn.net/weixin_41380961/article/details/80404053#include<原创 2020-08-02 21:29:12 · 277 阅读 · 0 评论 -
树状数组&&线段树
树状数组树状数组lowbit修改:对某个元素进行加法操作扩展查询:查询前缀的和统计a[x]...a[y]的和树状数组树状数组就是一个可以是一个查询和修改复杂度都为log(n)的数据结构。为很多的查询和修改的速度提高了,减少的复杂度。首先,我感觉很多人对这个的第一个理解肯定是树状应该是相互包含的一个样子,事实也是这样的。然后我看了很多的视频进行理解这个到底是什么样的东西,确实最后感觉有点像排列组合都是由规律的东西,而且很多公式只要记住好像就可以进行运用。lowbitint lowbit(int n原创 2020-07-28 23:39:06 · 109 阅读 · 0 评论 -
二分法
二分法二分法的运用就是找到一个区间最大值最小值,然后在之间进行不停的缩小。这就是二分法的运用。大概就是图片这样的格式,然后就是对题目的不同的分析就可以操作了。经典例题这些题是我感觉这些题目中不好想的题目,而且我认为可以保存下来复习二分法的时候的题目。1.The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute how many quadruplet (原创 2020-05-10 22:35:42 · 160 阅读 · 0 评论 -
背包
背包背包问题就是我感觉很好理解的一个题目,可能是以前的dp的理解真的对于我而已有点难接受的比较慢在运用到题目中更是难上加难的,但是背包这个问题我感觉很好找到定位1.01背包问题和完全背包我认为就是简单的记住一个公式就好,往里面套其中的v表示包容量,然后c[i]表示的就是那个物体所占的容量,然后加其价值,进行比较就好了。然后完全背包和背包问题唯一差别就是完全背包问题可以无数的使用,这里是...原创 2020-05-03 23:47:03 · 127 阅读 · 0 评论 -
区间dp
区间dp一、理解区间dp区间dp就是根据划分区间,找到起止点,然后在很多个小区间中找到最优解。但是在做题过程中会很难找到这个划分点在哪里,然后又如何比较出最优值 ,这个是我不太会的点。然后我在看csdn中找到一个博主的通用公式感觉很好(这里是他的原博客)在这里插入代码片...原创 2020-04-26 19:09:06 · 183 阅读 · 0 评论 -
线性DP
线性DP最近对线性DP的学习中,我感觉在学习的过程中运用最多的就是这个dp[i]=dp[i+1]+1等各种有关dp[i]有关的式子的书写以及理解,然后在最近的题目中我有了一点点的体会但是还是不太会运用。于是我找到了几个不同的例题进行了分类学习1.第一个就是从后往前推,学名在书上是逆推法,在求最长不下降序列中,我理解的就是将最后一个数找到,然后往前推找比他小的数,然后表示出其到最后一个最小数的...原创 2020-03-29 23:30:18 · 78 阅读 · 0 评论 -
STL--2
STL–21.stringstring经常表示可变长度的字符串序列,在贪心算法最短前缀中运用的到,如何调用一段字符串中的其中一部分,也就是运用到来s.c_str()for(j=0;j<s[i].length();j++)//其中的length就是计算字符串的长度 { memset(str,0,sizeof str); fo...原创 2020-03-22 23:17:15 · 101 阅读 · 0 评论 -
STL--1
STL还有一些最近遇见一些新的知识点的总结sort(用于排序,头文件!!)swappairsort 需要头文件< algorithm > sort(begin,end,cmp),其中begin是sort第一个元素的指针,end是最后一个元素的下一个指针,cmp为排序准则,若没有则按降序排列。#include <iostream>#include ...原创 2020-03-15 16:58:07 · 102 阅读 · 0 评论 -
贪心算法--2
贪心算法–21.long long就是将其字节,通常int都是32位,而long long 则可以改成64位更大。2. const int INF=0x3f3f3f3f;意思是无穷大常量,且其inf一旦有值就不允许通过赋值来改变他的值。并且我在搜索中发现https://blog.csdn.net/while_black/article/details/89067947讲解的更加详细。电...原创 2020-03-22 22:01:46 · 164 阅读 · 0 评论 -
贪心算法
贪心算法贪心算法寻找题目的最优解是通过对局部的最优的选择,也就是将一个大问题分解成小问题,对小问题进行最优解的计算,或者对问题进行反向的思考做法。最优解问题由局部最优到整体最优无后效应金银岛(和背包问题差不多) 1. 首先看到题目,我们应该思考应该是根据价值来进行选择 2. 然后在价值的基础上我们要注意重量的大小输入第1行是测试数据的组数k,后面跟着k组输入。每组测试数据...原创 2020-03-15 12:31:00 · 146 阅读 · 0 评论 -
类与对象
类与对象 类是抽象的,当属性赋给具体值,方法有具体的内容时,才成为对象。 类定义的说明语句一般形式为:class <类名>{ public : 公有段数据成员和成员函数 protected : 保护段数据成员和成员函数 private : 私有的数据成员和成员函数 };...原创 2020-03-12 19:53:41 · 76 阅读 · 0 评论 -
结构体
结构结构由数目固定的成员(又称域、项目或元素)构成,各成员之间可以具有不同的数据类型,包括基本类型和非基本类型。一个结构变量在内存占有一片连续的储存空间,但是,因为各数据成员的类型不相同,所以具有特定的定义和访问形式。定义结构类型的基本语句形式struct 标识符{ 类型 成员 1;类型 成员 2;…类型 成员 n};(重点千万不要忘记最后的 ;)例子:struc...原创 2020-03-05 14:42:41 · 126 阅读 · 0 评论 -
递归运算-1
递归运算递归运算是运用有限的语句描述一个无穷的集合,并且递归的调用可以自身直接调用(直接递归调用),也可以其他函数进行调用(间接递归调用)递归的运算的要领:1. 找到终止条件!!!!(通常应该是第一个或者前几个做为)2. 然后就根据题目缩小规模进行运算!!!最简单例子—阶乘n!=1 * 2 * 3…*n 找到终止条件,当0!时等于1是最特别的,所以当n==1时为终止条件...原创 2020-03-04 22:52:16 · 320 阅读 · 0 评论