![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
ygx.
这个作者很懒,什么都没留下…
展开
-
快速掌握二分
r = mid 时候不用加1 因为下一步l = r 直接会退出循环。加不加1 完全取决于 l = mid 还是r = mid。l等于mid时必须+1向上取整 不然会陷入l=l的死循环。一个mid = (l+r+1)>>1。一个mid = (l+r)>>1。原创 2022-09-14 08:41:14 · 75 阅读 · 0 评论 -
简单的链表封装(类)
【代码】简单的链表封装(类)原创 2022-08-31 07:59:36 · 324 阅读 · 0 评论 -
链表的简单实现
【代码】链表的简单实现。原创 2022-08-30 13:37:21 · 134 阅读 · 0 评论 -
购买搭配(记录集合大小的并查集+01背包)
#include<bits/stdc++.h> using namespace std; const int N=1e4+10; int v[N],w[N],p[N],f[N]; int find(int x) { if(p[x]!=x) p[x]=find(p[x]); return p[x]; } int main() { int n,m,W; cin>>n>>m>>W; for(int .原创 2022-05-22 19:23:47 · 64 阅读 · 0 评论 -
格子游戏(二维坐标下的并查集)
#include<bits/stdc++.h> using namespace std; const int N=40010; int p[N]; int n,m; int get(int x,int y) { return x*n+y; } int find(int x) { if(p[x]!=x) p[x]=find(p[x]); return p[x]; } int main() { scanf("%d%d",&n,&m).原创 2022-05-22 18:22:37 · 245 阅读 · 0 评论 -
质因数分解
#include<bits/stdc++.h> using namespace std; /* 质因数分解 扫描2~sqrt(n)的每个数d,若d能整除n,则从n中除掉所有的因子d,同时累计出去d的个数 */ void fj(int x) { for(int i=2;i<=x/i;i++) //为什么循环结束条件是i<=x/i? { //i<=x/i ==> i<=sqrt(x); 因为.原创 2022-05-21 19:20:03 · 85 阅读 · 0 评论 -
埃氏筛分析
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; /* 埃氏筛 要得到自然数n以内的全部质数,必须把<=√n的所有质数的倍数剔除,剩下的就是质数。 */ int primes[N],n,cnt=1; bool st[N]; void get_prime(int n) //求1~n的所有质数 { for(int i=2;i<=n;i++) //1不是质数,故从2开始 if(!st原创 2022-05-19 19:01:24 · 74 阅读 · 0 评论 -
链状石子合并
#include<bits/stdc++.h> using namespace std; const int N=310; int a[N],f[N][N],s[N],n,g[N][N]; /* 状态表示 f[i][j] 集合 表示将第i堆到第j堆合并的所有方法的集合 属性 min 状态计算 以最后一次合并的分界线k来划分(即最后一次合并的是区间是[i,k],[k+1,j]) (i<=k<j) f[i][j]=min(以k为分界线的不同的分.原创 2022-05-18 18:09:21 · 73 阅读 · 0 评论 -
滑雪(记忆化搜索)
#include<bits/stdc++.h> using namespace std; /* 状态表示 f[i][j] 集合:表示所有从g[i][j]出发的路径长度 属性:max 状态划分 考虑下一步怎么走(前提是下一步可以走,即:下一步的高度小于当前所在的高度) 上 f[i-1][j] + 1 下 f[i+1][j] + 1 左 f[i][j-1] + 1 右 f[i][j+1] + 1 f[i][j]=上面四种情况中的最.原创 2022-05-16 16:44:02 · 96 阅读 · 0 评论 -
D - Doin‘ Time
该题考的是区间DP问题 可以把题中所说的选中x把a[x]用a[x]*a[x+1]%P替换理解为将a[x],a[x+1]合并得到a[x]*a[x+1]%P f[l][r]表示将 a[l] ~a[r] 合并的所有不同方法的集合 属性为得分的max 状态转移方程 f[l][r] = f[l][r]=max(f[l][r],f[l][k]+f[k+1][r]+(a[l][k]-a[k+1][r])*(a[l][k]-a[k+1][r])); f[i,j] 可以以最后 一次合并的分界不同将其分为...原创 2022-05-13 23:41:57 · 205 阅读 · 0 评论 -
快速幂及其推导
#include<bits/stdc++.h> using namespace std; typedef long long LL; int qmi(int a,int b,int p) { int res=1%p; while(b) { if(b&1) res=(LL)res*a%p; a=(LL)a*a%p; b >>= 1; } return res; } int .原创 2022-05-03 13:56:09 · 174 阅读 · 0 评论 -
BFS解决简单迷宫问题
#include<bits/stdc++.h> using namespace std; const int N=110; int g[N][N];//存地图 int n,m; typedef pair<int,int> PII; //存每个坐标 int dx[]={-1,0,1,0}; int dy[]={0,1,0,-1}; //表示方向 上 右 下 左 int dist[N][N];//1.标记每个点是否走过 注意:每个点只遍历一次 2.记录图中某个点到起点的最短距离 ..原创 2022-05-02 17:31:37 · 613 阅读 · 0 评论