2024算法基础公选课练习七(BFS1)

一、前言

还是偏基础的bfs,但是有几个题不是很好写

二、题目总览

三、具体题目

3.1 问题 A: 数据结构-队列-奇怪的电梯

我的代码

可以看成求一维平面的bfs最短路

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 1e5+5,M = 1e6+5,INF = 0x3f3f3f3f;
std::vector<int> a(N,0);
std::vector<bool> vis(N,false);int n,st,ed;void bfs(){std::queue<pii> q;vis[st] = true;pii p;p.first = st,p.second = 0;q.emplace(p);while(!q.empty()){auto t = q.front();q.pop();if(t.first==ed){std::cout << t.second << '\n';return;}pii t1,t2;t1.first = t.first+a[t.first];t1.second = t.second+1;if(t1.first<=n&&!vis[t1.first]){vis[t1.first] = true;q.emplace(t1);}t2.first = t.first-a[t.first];t2.second = t.second+1;if(t2.first>=1&&!vis[t2.first]){vis[t2.first] = true;q.emplace(t2);}}std::cout << "-1\n";
}void solve(){std::cin >> n >> st >> ed;for(int i = 1;i<=n;++i) std::cin >> a[i];bfs();}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

3.2 问题 B: 连通块

我的代码

找全是1的联通块个数,直接枚举每个点bfs(当前未访问过的点)即可

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 1e2+5,M = 1e6+5,INF = 0x3f3f3f3f;
int n,m;
int g[N][N];
bool vis[N][N];
int ans;
using node = std::array<int,3>;
int dx[] = {0,0,-1,1};
int dy[] = {-1,1,0,0};
void bfs(int sx,int sy){std::queue<node> q;node t;t[0] = sx,t[1] = sy,t[2] = 0;q.emplace(t);vis[sx][sy] = true;++ans;while(!q.empty()){auto t = q.front();q.pop();for(int i = 0;i<4;++i){int u = t[0]+dx[i],v = t[1]+dy[i];if(u<1||u>n||v<1||v>m||vis[u][v]||g[u][v]==0) continue;node t1;vis[u][v] = true;t1[0] = u,t1[1] = v,t1[2] = t[2]+1;q.emplace(t1);}}
}
void solve(){std::cin >> n >> m;for(int i = 1;i<=n;++i){for(int j = 1;j<=m;++j){std::cin >> g[i][j];}}for(int i = 1;i<=n;++i){for(int j = 1;j<=m;++j){if(!vis[i][j]&&g[i][j]==1){bfs(i,j);}}}std::cout << ans << '\n';
}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

3.3 问题 C: 广搜——营救

我的代码

用char读图,不能用int,后续就是简单的求二维平面的bfs最短路

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 1e3+5,M = 1e6+5,INF = 0x3f3f3f3f;
int n;
char g[N][N];
bool vis[N][N];
int sx,sy,ex,ey;
using node = std::array<int,3>;
int dx[] = {0,0,-1,1};
int dy[] = {-1,1,0,0};void bfs(){std::queue<node> q;node tt;tt[0] = sx,tt[1] = sy,tt[2] = 0;q.emplace(tt);vis[sx][sy] = true;while(!q.empty()){auto t = q.front();q.pop();if(t[0]==ex&&t[1]==ey){std::cout << t[2] << '\n';return;}for(int i = 0;i<4;++i){int u = t[0]+dx[i],v = t[1]+dy[i];if(u<1||u>n||v<1||v>n||vis[u][v]||g[u][v]=='1') continue;vis[u][v] = true;node t1;t1[0] = u,t1[1] = v,t1[2] = t[2]+1;q.emplace(t1);}}
}
void solve(){std::cin >> n;for(int i = 1;i<=n;++i){for(int j = 1;j<=n;++j){std::cin >> g[i][j];}}std::cin >> sx >> sy >> ex >> ey;bfs();
}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

3.4 问题 D: 迷宫的最短路径

我的代码

注意输出不要漏单词或者空格,其他没啥好说的

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 1e3+5,M = 1e6+5,INF = 0x3f3f3f3f;
int n,m;
char g[N][N];
bool vis[N][N];
int sx,sy,ex,ey;
int dx[] = {0,0,-1,1};
int dy[] = {-1,1,0,0};
using node = std::array<int,3>;void bfs(){std::queue<node> q;node tt;tt[0] = sx,tt[1] = sy,tt[2] = 0;q.emplace(tt);vis[sx][sy] = true;while(!q.empty()){auto t = q.front();q.pop();if(t[0]==ex&&t[1]==ey){std::cout << "The min steps are:" << t[2] << "!\n";return;}for(int i = 0;i<4;++i){int u = t[0]+dx[i],v = t[1]+dy[i];if(u<1||u>n||v<1||v>m||vis[u][v]||g[u][v]=='#') continue;vis[u][v] = true;node t1;t1[0] = u,t1[1] = v,t1[2] = t[2]+1;q.emplace(t1);}}std::cout << "sorry!\n";
}void solve(){std::cin >> n >> m;for(int i = 1;i<=n;++i){for(int j = 1;j<=m;++j){std::cin >> g[i][j];if(g[i][j]=='S'){sx=i,sy=j;}else if(g[i][j]=='G'){ex=i,ey=j;}}}bfs();
}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

3.5 问题 E: 象棋中的马之进阶

我的代码

求八方向二维平面最短路的bfs

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 1e3+5,M = 1e6+5,INF = 0x3f3f3f3f;
bool vis[N][N];
int sx,sy,ex,ey;
int dx[] = {-2,-1,1,2,2,1,-1,-2};
int dy[] = {1,2,2,1,-1,-2,-2,-1};
using node = std::array<int,3>;void bfs(){std::queue<node> q;node tt;tt[0] = sx,tt[1] = sy,tt[2] = 0;q.emplace(tt);vis[sx][sy] = true;while(!q.empty()){auto t = q.front();q.pop();if(t[0]==ex&&t[1]==ey){std::cout << t[2] << '\n';return;}for(int i = 0;i<8;++i){int u = t[0]+dx[i],v = t[1]+dy[i];if(u<1||u>9||v<1||v>10||vis[u][v]) continue;vis[u][v] = true;node t1;t1[0] = u,t1[1] = v,t1[2] = t[2]+1;q.emplace(t1);}}std::cout << 0 << '\n';
}
void solve(){std::cin >> sx >> sy >> ex >> ey;bfs();
}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

3.6 问题 F: 搜索——我的世界

我的代码

求三维空间最短路的bfs

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 1e2+5,M = 1e6+5,INF = 0x3f3f3f3f;int k,n,m;
char g[N][N][N];
bool vis[N][N][N];
int dx[] = {0,0,-1,1,0,0};
int dy[] = {-1,1,0,0,0,0};
int dz[] = {0,0,0,0,1,-1};
using node = std::array<int,4>;
int sx,sy,sz,ex,ey,ez;
void bfs(){std::queue<node> q;node tt;tt[0] = sz,tt[1] = sx,tt[2] = sy,tt[3] = 0;q.emplace(tt);vis[sx][sy][sz] = true;while(!q.empty()){auto t = q.front();q.pop();if(t[0]==ez&&t[1]==ex&&t[2]==ey){std::cout << t[3] << '\n';return;}for(int i = 0;i<6;++i){int u = t[0]+dz[i],v = t[1]+dx[i],w = t[2]+dy[i];if(u<1||u>k||v<1||v>n||w<1||w>m||vis[u][v][w]||g[u][v][w]=='^') continue;vis[u][v][w] = true;node t1;t1[0] = u,t1[1] = v,t1[2] = w,t1[3] = t[3]+1;q.emplace(t1);}}std::cout << 2333333 << '\n';
}
void solve(){std::cin >> k >> n >> m;for(int i = 1;i<=k;++i){for(int j = 1;j<=n;++j){for(int l = 1;l<=m;++l){std::cin >> g[i][j][l];if(g[i][j][l]=='S'){sx=j,sy=l,sz=i;}else if(g[i][j][l]=='E'){ex=j,ey=l,ez=i;}}}}bfs();
}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

3.7 问题 G: 最小倍数

我的代码

不会爆long long,思路见代码

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 1e5+5,M = 1e6+5,INF = 0x3f3f3f3f;
i64 n;void bfs(){std::queue<i64> q;q.emplace(1);while(!q.empty()){auto t = q.front();q.pop();if(t%n==0){std::cout << t << '\n';return;}q.emplace(t*10);q.emplace(t*10+1);}
}
void solve(){while(std::cin >> n){if(n==0) break;bfs();}
}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

3.8 问题 H: 01组成的N的倍数

我的代码

会爆long long和unsigned long long,而且用高精度也会超时,时间复杂度卡得有点死,只能用string

#include <bits/stdc++.h> 
using namespace std;
using i64 = long long;
constexpr int N=1e6+5;
struct node{string str;i64 sum;
} now,temp;
queue<node> q;
int vis[N];
int n;
void bfs(){queue<node> q;memset(vis,0,sizeof(vis));now.str="1";now.sum=1%n;vis[now.sum]=1;q.push(now);while(!q.empty()){now=q.front();q.pop();if(now.sum==0){cout << now.str << endl;break;}temp.str=now.str+'0';temp.sum=(now.sum*10)%n;if(vis[temp.sum]==0){vis[temp.sum]=1;q.push(temp);}temp.str=now.str+'1';temp.sum=(now.sum*10+1)%n;if(vis[temp.sum]==0){vis[temp.sum]=1;q.push(temp);}}
}
int main(){while(~scanf("%d",&n)){bfs();}return 0;
}

3.9 问题 I: 新迷宫探险

我的代码

注意多组数据,写法跟前面的求二维平面最短路的bfs一样

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 1e2+5,M = 1e6+5,INF = 0x3f3f3f3f;
int n;
char g[N][N];
bool vis[N][N];
int sx,sy,ex,ey;
int dx[] = {0,0,-1,1};
int dy[] = {-1,1,0,0};
using node = std::array<int,3>;
void bfs(){std::queue<node> q;node tt;tt[0] = sx,tt[1] = sy,tt[2] = 0;vis[sx][sy] = true;q.emplace(tt);while(!q.empty()){auto t = q.front();q.pop();if(t[0]==ex&&t[1]==ey){std::cout << t[2] << '\n';return;}for(int i = 0;i<4;++i){int u = t[0]+dx[i],v = t[1]+dy[i];if(u<1||u>n||v<1||v>n||vis[u][v]||g[u][v]=='#') continue;vis[u][v] = true;node t1;t1[0] = u,t1[1] = v,t1[2] = t[2]+1;q.emplace(t1);}}std::cout << -1 << '\n';
}
void solve(){while(std::cin >> n){for(int i = 1;i<=n;++i){for(int j = 1;j<=n;++j){std::cin >> g[i][j];}}memset(vis,false,sizeof vis);sx = 1,sy = 1,ex = n,ey = n;bfs();}
}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

3.10 问题 J: 山峰和山谷

我的代码

枚举每个没有访问过的点,bfs看是否能够形成山峰或者山谷

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 1e3+5,M = 1e6+5,INF = 0x3f3f3f3f;
int n;
int g[N][N];
bool vis[N][N];
int ans1,ans2;
int dx[] = {0,0,-1,1,-1,1,1,-1};
int dy[] = {-1,1,0,0,1,1,-1,-1};using node = std::array<int,2>;void bfs(int i,int j){std::queue<node> q;node tt;tt[0] = i,tt[1] = j;q.emplace(tt);vis[i][j] = true;bool flag1 = false,flag2 = false;int cnt = 1;while(!q.empty()){auto t = q.front();q.pop();for(int i = 0;i<8;++i){int u = t[0]+dx[i],v = t[1]+dy[i];if(u<1||u>n||v<1||v>n||(vis[u][v]&&g[u][v]==g[t[0]][t[1]])) continue;if(g[u][v]<g[t[0]][t[1]]) flag1=true;else if(g[u][v]>g[t[0]][t[1]]) flag2=true;else{++cnt;vis[u][v] = true;node t1;t1[0] = u,t1[1] = v;q.emplace(t1);}}}if(flag1&&flag2) return;if(flag1) ++ans1;else if(flag2) ++ans2;if(cnt==n*n) ++ans1,++ans2;
}
void solve(){std::cin >> n;for(int i = 1;i<=n;++i){for(int j = 1;j<=n;++j){std::cin >> g[i][j];}}for(int i = 1;i<=n;++i){for(int j = 1;j<=n;++j){if(!vis[i][j]){bfs(i,j);}}}std::cout << ans1 << ' ' << ans2 << '\n';
}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

3.11 问题 K: 兔兔之漂亮图

我的代码

这题看代码吧,暂时不知道要怎么说清楚这个思路

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 3e5+5,M = 1e6+5,INF = 0x3f3f3f3f;
constexpr int P = 998244353;i64 power(i64 a, i64 b) {i64 res = 1;for (; b; b /= 2, a = a*a%P) {if (b % 2) {res = res*a%P;}}return res;
}std::vector<std::vector<int>> edges(N,std::vector<int>());
std::vector<int> a(N,0);
int n,m;
i64 ans;
std::queue<int> q;
i64 t = 2;void bfs(){for(int i = 1;i<=n;++i){if(a[i]!=0) continue;a[i] = 1;i64 cnt1 = 1,cnt2 = 0;q.emplace(i);while(!q.empty()){auto u = q.front();q.pop();for(auto v:edges[u]){if(a[v]==0){a[v] = 3-a[u];if(a[v]==1) cnt1+=1;else cnt2+=1;q.emplace(v);}else if(a[u]+a[v]!=3){ans = 0;break;}}}if(ans==0) break;//power(2,cnt)ans=ans*((power(t,cnt1)%P+power(t,cnt2)%P)%P)%P;}}
void solve(){std::cin >> n >> m;for(int i = 1;i<=n;++i){edges[i].clear();a[i] = 0;}ans = 1;while(m--){int u,v;std::cin >> u >> v;edges[u].emplace_back(v);edges[v].emplace_back(u);}bfs();std::cout << ans << '\n';
}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

3.12 问题 L: 兔兔的导航系统

我的代码

原题:

2024算法基础公选课练习三(DFS1)的L题

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 2e5+5,M = 1e6+5,INF = 0x3f3f3f3f;int n,m,k;
std::vector<std::vector<int>> edges(N,std::vector<int>());
std::vector<std::vector<int>> reverse_edges(N,std::vector<int>());
std::vector<bool> vis(N,false);
std::vector<int> dist(N,INF);
std::vector<int> p(N,0);
int st,ed;
int maxn=0,minn=0;
void bfs() {std::queue<int> q;vis[st] = true;dist[st] = 0;q.emplace(st);while(!q.empty()) {auto t = q.front();q.pop();for(int i = 0;i<reverse_edges[t].size();++i) {int to = reverse_edges[t][i];if(vis[to]) continue;vis[to] = true;dist[to] = dist[t]+1;q.emplace(to);}}
}void solve(){std::cin >> n >> m;while(m--){int u,v;std::cin >> u >> v;edges[u].emplace_back(v);reverse_edges[v].emplace_back(u);}std::cin >> k;for(int i = 1;i<=k;++i) std::cin >> p[i];st = p[1],ed = p[k];bfs();for(int i = 1;i<=k-1;++i) {int u = p[i],v = p[i+1];bool flag = false;//用于判断是否当前u->v是最短路for(int j = 0;j<edges[u].size();++j) {int w = edges[u][j];if(dist[w]==dist[u]-1) {if(v==w) {flag = true;}else {++maxn;}}}if(!flag) ++minn,++maxn;}std::cout << minn << ' ' << maxn << '\n';
}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;// std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

3.13 问题 M: 龙哥的换根树

我的代码

bfs两次,然后换根dp

#include <bits/stdc++.h>
using i64 = long long;
using pii = std::pair<int,int>;
constexpr int N = 2e5+5,M = 1e6+5,INF = 0x3f3f3f3f;
i64 n,k,c;
void bfs(int root,std::vector<std::vector<int>> &edges,std::vector<bool> &vis,std::vector<i64> &dist){std::queue<int> q;vis[root] = true;q.emplace(root);dist[root] = 0;while(!q.empty()){auto u = q.front();q.pop();for(auto &v:edges[u]){if(vis[v]) continue;vis[v] = true;dist[v] = dist[u]+1;q.emplace(v);}}
}
void solve(){std::cin >> n >> k >> c;std::vector<std::vector<int>> edges(n+5,std::vector<int>());std::vector<bool> vis(n+5,false);std::vector<i64> dist(n+5,INF);//vector建边for(int i = 1;i<=n-1;++i){int u,v;std::cin >> u >> v;edges[u].emplace_back(v);edges[v].emplace_back(u);}i64 ans=0,max=0,tmp=0,leaf=1;bfs(1,edges,vis,dist);//拷贝dist数组留用std::vector<i64> prev_dist(n+5);std::copy(dist.begin(),dist.end(),prev_dist.begin());//找到最远的叶子结点leaf和这个最远距离maxfor(int i = 1;i<=n;++i){if(dist[i]>max){max = dist[i];leaf = i;}}//初始化for(int i = 1;i<=n;++i){vis[i] = false;dist[i] = INF;}//以这个叶子结点为根进行bfsbfs(leaf,edges,vis,dist);//枚举换根到每个点最大价值for(int i = 1;i<=n;++i){ans = std::max(ans,dist[i]*k-prev_dist[i]*c);}std::cout << ans << '\n';
}
int main(){std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;std::cin >> t;for(int ti = 0;ti<t;++ti) {solve();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索.NET世界的无限可能——带你轻松了解.NET

前言 由于目前用到的技术栈有C#&#xff0c;而学习C#离不开.NET框架&#xff0c;正如学习Java离不开学习Spring框架一样。 .NET是微软开发的一个非常强大的框架&#xff0c;它不仅擅长桌面和移动开发&#xff0c;而且还能够支持Web开发和游戏引擎开发&#xff0c;在现在热门的…

[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker pull线上镜像方式构建编译环境

T. 已测试目录 主机类型主机版本Docker镜像版本结果WSL2Ubuntu22.04Ubuntu20.04PASSWSL2Ubuntu22.04Ubuntu18.04PASS R. 软硬件要求&#xff1a; 硬件&#xff1a; 设备容量备注硬盘>500G多版本系统测试&#xff0c;必须固态&#xff0c;否则编译卡死硬盘>300G单系统…

RHCE——SELinux

SELinux 什么是SELinux呢&#xff1f;其实它是【Security-Enhanced Linux】的英文缩写&#xff0c;字母上的意思就是安全强化Linux的意思。 SELinux是由美国国家安全局(NSA)开发的&#xff0c;当初开发的原因是很多企业发现&#xff0c;系统出现问题的原因大部分都在于【内部…

Python - 函数(四)

函数&#xff1a;在编写程序的过程中&#xff0c;有某一功能代码块出现多次&#xff0c; 但是为了提高编写的效率以及代码的重用&#xff0c;所以把具有独立功能的代码块组织为一个小模块&#xff0c;这就是函数 ‌Python中的函数‌是一组被命名的可执行代码&#xff0c;用于完…

代码随想录打卡DAY21

算法记录第21天 [二叉树] 1.LeetCode 538. 把二叉搜索树转换为累加树 题目描述&#xff1a; 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值等于原…

[在线实验]-ActiveMQ Docker镜像的下载与部署

镜像下载 下载ActiveMQ的Docker镜像文件。通常&#xff0c;这些文件会以.tar格式提供&#xff0c;例如activemq.tar。 docker的activemq镜像资源-CSDN文库 加载镜像 下载完成后&#xff0c;您可以使用以下命令将镜像文件加载到Docker中&#xff1a; docker load --input a…

VTK中对于相机camera的设置

1. 相机的核心属性 在 VTK 中&#xff0c;vtkCamera 的核心属性有默认值。如果你不设置这些属性&#xff0c;相机会使用默认值来渲染场景。 Position&#xff08;默认值&#xff1a;(0, 0, 1)&#xff09;&#xff1a; 默认情况下&#xff0c;相机位于 Z 轴正方向的 (0, 0, 1)…

学习日志017--python的几种排序算法

冒泡排序 def bubble_sort(alist):i 0while i<len(alist):j0while j<len(alist)-1:if alist[j]>alist[j1]:alist[j],alist[j1] alist[j1],alist[j]j1i1l [2,4,6,8,0,1,3,5,7,9] bubble_sort(l) print(l) 选择排序 def select_sort(alist):i 0while i<len(al…

超高流量多级缓存架构设计!

文章内容已经收录在《面试进阶之路》&#xff0c;从原理出发&#xff0c;直击面试难点&#xff0c;实现更高维度的降维打击&#xff01; 文章目录 电商-多级缓存架构设计多级缓存架构介绍多级缓存请求流程负载均衡算法的选择轮询负载均衡一致性哈希负载均衡算法选择 应用层 Ngi…

红黑树的概念以及基本模拟

目录 一、概念和规则&#xff1a; 1、思考为什么最长路径不超过最短路径的二倍&#xff1f; 2、红黑树的效率&#xff1f; 二、红黑树的代码实现 1、红黑树的节点结构 2、红黑树的插入 1、大致过程&#xff1a; 2、维护的三种情况&#xff1a; 1、情况一&#xff1a;变…

IP反向追踪技术,了解一下?

DOSS&#xff08;拒绝服务&#xff09;攻击是现在比较常见的网络攻击手段。想象一下&#xff0c;有某个恶意分子想要搞垮某个网站&#xff0c;他就会使用DOSS攻击。这种攻击常常使用的方式是IP欺骗。他会伪装成正常的IP地址&#xff0c;让网络服务器以为有很多平常的请求&#…

【C++习题】15.滑动窗口_串联所有单词的子串

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 30. 串联所有单词的子串 题目描述&#xff1a; 解法 滑动窗口哈希表 这题和第14题不同的是&#xff1a; 哈希表不同&#xff1a;hash<string,int>left与right指…

论文笔记(五十七)Diffusion Model Predictive Control

Diffusion Model Predictive Control 文章概括摘要1. Introduction2. Related work3. 方法3.1 模型预测控制3.2. 模型学习3.3. 规划&#xff08;Planning&#xff09;3.4. 适应 4. 实验&#xff08;Experiments&#xff09;4.1. 对于固定奖励&#xff0c;D-MPC 可与其他离线 RL…

oracle 创建只可以查询权限用户+sqldeveloper如何看到对应表

声明 申明部分是从其他csdn用户哪里复制的&#xff0c;只是自己操作后发现无法达到我最后的预期&#xff0c;所以关闭忘记是看的那篇了&#xff0c;如果有侵权请见谅&#xff0c;联系我删除谢谢。 好了&#xff0c;故事的开始是我最近删投产表了。没错职业黑点&#xff0c;清…

比特币libsecp256k1中safegcd算法形式化验证完成

1. 引言 比特币和其他链&#xff08;如 Liquid&#xff09;的安全性取决于 ECDSA 和 Schnorr 签名等数字签名算法的使用。Bitcoin Core 和 Liquid 都使用名为 libsecp256k1 的 C 库来提供这些数字签名算法&#xff0c;该库以其所运行的椭圆曲线命名。这些算法利用一种称为modu…

15分钟做完一个小程序,腾讯这个工具有点东西

我记得很久之前&#xff0c;我们都在讲什么低代码/无代码平台&#xff0c;这个概念很久了&#xff0c;但是&#xff0c;一直没有很好的落地&#xff0c;整体的效果也不算好。 自从去年 ChatGPT 这类大模型大火以来&#xff0c;各大科技公司也都推出了很多 AI 代码助手&#xff…

Kafka知识体系

一、认识Kafka 1. kafka适用场景 消息系统&#xff1a;kafka不仅具备传统的系统解耦、流量削峰、缓冲、异步通信、可扩展性、可恢复性等功能&#xff0c;还有其他消息系统难以实现的消息顺序消费及消息回溯功能。 存储系统&#xff1a;kafka把消息持久化到磁盘上&#xff0c…

JVM调优篇之JVM基础入门AND字节码文件解读

目录 Java程序编译class文件内容常量池附录-访问标识表附录-常量池类型列表 Java程序编译 Java文件通过编译成class文件后&#xff0c;通过JVM虚拟机解释字节码文件转为操作系统执行的二进制码运行。 规范 Java虚拟机有自己的一套规范&#xff0c;遵循这套规范&#xff0c;任…

【Petri网导论学习笔记】Petri网导论入门学习(十一) —— 3.3 变迁发生序列与Petri网语言

目录 3.3 变迁发生序列与Petri网语言定义 3.4定义 3.5定义 3.6定理 3.5例 3.9定义 3.7例 3.10定理 3.6定理 3.7 有界Petri网泵引理推论 3.5定义 3.9定理 3.8定义 3.10定义 3.11定义 3.12定理 3.93.3 变迁发生序列与Petri网语言 对于 Petri 网进行分析的另一种方法是考察网系统…

Flink--API 之Transformation-转换算子的使用解析

目录 一、常用转换算子详解 &#xff08;一&#xff09;map 算子 &#xff08;二&#xff09;flatMap 算子 &#xff08;三&#xff09;filter 算子 &#xff08;四&#xff09;keyBy 算子 元组类型 POJO &#xff08;五&#xff09;reduce 算子 二、合并与连接操作 …