- 博客(20)
- 收藏
- 关注
原创 数学的基础
在编程过程中,可能会因为范围的变化而超时。最大公约数#include<bits/stdc++.h>using namespace std;int f(int m,int n,int o,int k){ int l,a,b; a=m,b=n; while(n!=0) { l=m%n; m=n; n=l; } if(m==o&&a*b/m==k) retur...
2022-04-21 21:14:25 252
原创 数论的集合
倍数约数核心代码本质是跟据倍数进行约数。素数判断素数核心代码不需要够多判断。由于约数。会造成重复优化代码朴素筛法以判断出来的素数为底。是素数倍数的比不是素数艾诗筛法改进进一步判断是素数才更新。欧几里得算法张转相除法用这个可以解不定方程。强同与方程#include<bits/stdc++.h>using namespace std;long long x, y...
2022-03-31 22:44:09 163
原创 树的dp,背包。区间dp
区间中不断往上寻找最优解#include<bits/stdc++.h>using namespace std;const int INF=0x3f;const int maxn=300+10;int a[maxn],f[maxn][maxn];int s[maxn];int main(){ memset(f,INF,sizeof(f)); int n; cin>>n; for(int i=1;i<=n;i++) {...
2022-03-31 21:46:06 72
原创 dp+记忆化搜索
dp一般用于解决多阶段决策问题,即每个阶段都要做一个决策,全部的决策是一个决策序列,要你求一个,最好的决策序列使得这个问题有最优解。将待求解的问题分为若干个相互联系的子问题,只在第一次遇到的时候求解,然后将这个子问题的答案保存下来,下次又遇到的时候直接拿过来用即可。数字金字塔#include<bits/stdc++.h>using namespace std;int main(){ int n; scanf("%d",&n);//n行...
2022-03-26 23:05:03 633
原创 递推算法问题
这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。无论顺推还是逆推,其关键是要找到递推式。这种处理问题的方法能使复杂运算化为若干步重复的简单运算,充分发挥出计算机擅长于重复处理的特点。递推算法的首要问题是得到相邻的数据项间的关系(即递推关系)。递推算法避开了求通项公式的麻烦,把一个复杂的问题的求解,分解成了连续的若干步简单运算。一般说来,可以将递推
2022-03-23 18:15:28 138
原创 分治算法思想
一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时,不...
2022-03-21 01:10:53 333
原创 二分算法类型
二分已学,直接上代码模板#include<bits/stdc++.h>using namespace std;int a[110];int search(int a[],int x,int y){ int left=0,right=x-1; while(left<=right) { int mid=(left+right)/2; if(a[mid]>y) right=mid; else if(a[mi...
2022-03-12 23:09:36 101
原创 二分图拓扑tarjan
割点是连接两族之间的连接桥割边是去边标记深度与回溯值。转换成数学。核心思想。结合dfs的算法。运用链表的思想。顺序为1(2)456789 (3)规律可用于树的计算中规律总结适用于有交集的链表适用于孤立无交集的点。先运用dfs进行枚举。一个一个的进行试探。知道全部结束。在运用链表连接未配对的点。注:代码不清晰。未贴代码。理论知识较多。...
2022-03-07 22:16:58 245
原创 并查集和最小生成数
弗洛伊德算法代码模板固定。好,结构简单。并且能够很好的处理负权边。应用较多。迪杰斯克算法时间复杂度低。容易理解。传统复杂。但操作比较麻烦。贝尔曼福特算法可以处理很多东西。spfa算法容易卡样例图的存储唯一的缺点就是数据过大。将图转换成表格的形式。用数学的方法打表格形式数字表示出来。用链表不会爆空间头插法,代码的实现#include<iostream>using namespace std;struct node{ int data; stru...
2022-03-06 10:08:02 7069
原创 最短路径算法
floyed算法如何转化成程序语言。编程方法的实现此算法不能带负数。样题Dijkstra算法代码的实现代码的改进最小花费bellman__ford算法算法的优化算法的核心优化的原理实现邻接表...
2022-03-01 20:13:01 115
原创 进制的转换
#include<stdio.h>#include<string.h>typedef long long ll;int f(char c[],int x){ int i,s=0; for(i=0;i<strlen(c);i++) { if(c[i]<='9'&&c[i]>='0') s=s*x+c[i]-'0'; else s=s*x+c[i]-'A'+10; }...
2022-02-09 16:32:32 419
原创 递归跳台阶
#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N=20;int n;int f[N];int main(){ scanf("%d",&n); f[0]=1; for(int i=1;i<=n;i++) f[i]=f[i-1]+f[i-2]; printf("%d\n",f[n]);...
2022-02-09 15:50:56 435
原创 二分的主要体现
#include <stdio.h>#define MAXN 100000int binary_search(int nums[], int x, int n) { int lo = 0, hi = n - 1; while (lo < hi) { int mid = lo + (hi - lo) / 2; if (nums[mid] < x) lo = mid + 1; else if (nums[.
2022-02-07 01:02:26 6199
原创 第四课 结构体,栈,与指针应用。
结构体与int类型差不多。。当成int看待。只不过它是一串数组.结构体变量可以进行交换..。指针可以指向结构体。。先入后出。后入先出。答案为d。因为a在b的下面。。不可能在b之前拿出来。。本质是奇偶的判断,以及二进制的输出。记住,p表示地址。null是空指针p[9]=*[p+9];...
2022-01-19 22:08:58 3610
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人