算法学习C++
慢慢学习算法,保持编程能力。
简生_
总想努力达到自己满意的样子
展开
-
4.并查集理解与模板
Acwing 1249.亲戚。原创 2023-03-03 17:08:40 · 56 阅读 · 0 评论 -
2.二分问题理解与模板
如下是Acwing上面的 1460题。的情况只需要对上面做一些改动。的二分模板,是输出mid。该模板只需要记住循环条件是。例如在区间内求目标值的。原创 2023-02-27 10:45:36 · 66 阅读 · 0 评论 -
1.差分问题的理解与模板
a[l + 1] = b[1] + ··· +·b[l] + b[l + 1],也会因为b[l]这个值的问题,加上c,因此a[l]之后的值都会加c。因为 a[l] = b[1] + b[ 2] + ··· +b[l] ,a[l] 也会因为b[l] 加上c。我们构建差分数组b[n],使b[1] = a[1];但是我们需要的是区间[l,r] + c,所以r之后的区间需要-c来保持不变。最后只需要把数组b[n],累加起来就是原数组a[n],操作之后的结果。即b[n] = a[n] - a[n- 1];原创 2023-02-23 13:24:47 · 324 阅读 · 0 评论 -
洛谷刷题DFS-《全排列》-递归
递归问题,第一步:设置好递归结束的判断、第二步:设置递归的规则。#include<bits/stdc++.h>using namespace std;int n;bool vis[20];int a[20];void pr(){ for(int i=1;i<=n;i++) { cout<<setw(5)<<a[i]; } cout<<endl;}void dfs(int x){ if(x>n) { pr();原创 2022-04-12 15:08:22 · 87 阅读 · 0 评论 -
洛谷刷题BFS-《字串变换》-map容器-find、substr
容器map<string ,int> 相当于键和值。map[string]=int ===>map["lrd"]=6做标记使用string类型 find()函数的返回值是查找到子串在母串的起始位置,如果查找不到,返回-1 t.find(x[i],p)//表示在string类型变量t中查找x[i]字符串,从p位置开始查找,并返回int型值,代表查找到的首字符在母串中的位置。t.substr(0,p)//表示取t中0到p位置的字符。// An highlighted block原创 2022-04-03 22:03:08 · 147 阅读 · 0 评论 -
洛谷刷题BFS-《马的步数》
遇到要走多少次的问题,考虑广度优先搜索,广搜要用到队列:queue,队列的特点是 先进先出#include<bits/stdc++.h>using namespace std;int xx[]={-2,-2,-1,-1,1,1,2,2};//左下右上 int yy[]={-1,1,-2,2,2,-2,1,-1};int mp[405][405]; int n,m,x,y;int main(){ cin>>n>>m>>x>>y;原创 2022-04-03 21:52:16 · 103 阅读 · 0 评论