当前位置: 首页 > news >正文

0基础刷图论最短路 3(从ATcoder 0分到1800分)

AT最短路刷题3(本文难度rated 1200~ 1400)

题目来源:Atcoder
题目收集:
https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path
(里面按tag分类好了Atcoder的所有题目,类似cf)
(访问需要魔法)

这算是一个题单,各位有兴趣可以按照这个顺序来刷。
我的代码仅供参考。
会提示关键性质和步骤。 部分有注释。
洛谷、知乎、可以搜到题解。

文章目录

  • AT最短路刷题3(本文难度rated 1200~ 1400)
    • 1-**身体バランス**
    • 2-**Road Reduction**
    • **3 - Swap Places**
    • 4-**Come Back Quickly**
    • 5-**正直者の高橋くん**
    • 6-**joisino's travel**
    • 7-**Traveler**
    • 8- **Merge Set**

1-身体バランス

这道题其实就是求两边dijkstra
一遍正图
一遍反图然后枚举每个点,
1 --> i  的路径长度  == i--> n 的路径长度
并且, dist1[i]+dist2[i] == dist1[n]然后找有没有这样的点就行了。贴答案ing
#include <bits/stdc++.h>#define rep(i,n) for(int i=0;i<(n);i++)using namespace std;template<class T> struct edge{int to;T wt;edge(int to,const T& wt):to(to),wt(wt){}
};
template<class T> using weighted_graph=vector<vector<edge<T>>>;template<class T>
vector<T> Dijkstra(const weighted_graph<T>& G,int s){const T INF=numeric_limits<T>::max();int n=G.size();vector<T> d(n,INF); d[s]=0;priority_queue<pair<T,int>> Q; Q.emplace(0,s);while(!Q.empty()){T d0=-Q.top().first;int u=Q.top().second; Q.pop();if(d0>d[u]) continue;for(const auto& e:G[u]){int v=e.to;if(d[v]>d[u]+e.wt) d[v]=d[u]+e.wt, Q.emplace(-d[v],v);}}return d;
}const int INF=1<<29;int main(){int n,m,s,t; scanf("%d%d%d%d",&n,&m,&s,&t); s--; t--;weighted_graph<int> G(n);rep(i,m){int u,v,c; scanf("%d%d%d",&u,&v,&c); u--; v--;G[u].emplace_back(v,c);G[v].emplace_back(u,c);}auto d1=Dijkstra(G,s);auto d2=Dijkstra(G,t);rep(u,n) if(d1[u]<INF && d1[u]==d2[u]) return printf("%d\n",u+1),0;puts("-1");return 0;
}

2-Road Reduction

最短路

https://atcoder.jp/contests/abc252/tasks/abc252_e

一张图,有N个点。
M条边。
现在我们要删除一些边,最终会剩下N-1条边。然后,求出:
1到每个城市的最短路径这个问题只是看上去很唬人。我们只要知道一个事情:
如果一张图是连通的,那么它的边最少都要是N-1由于,最短路只会比这个多,不会比这个少。
所以,直接跑最短路。
拓展到谁就是谁。#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define PII pair<int,pair<int,int>>
#define INF 1e18
const int N = 2e5+7;
struct node{int v;int w;int id; //edge编号
};
struct edge{int u;int id;int step;bool operator<(edge b)const{return step>b.step;}
};
vector<node> g[N];
int dist[N];
int flag[N];
int n,m;void dijkstra(){for(int i=1;i<=n;i++)dist[i]=INF;dist[1]=0;priority_queue<edge> q;q.push(edge{1,-1,0});while(q.size()){int u = q.top().u;int id = q.top().id;q.pop();if(flag[u])continue;flag[u]=1;if(id!=-1){cout<< id<<' ';}for(auto i:g[u]){int v = i.v;int w = i.w;int id = i.id;if(dist[v]>dist[u]+w){dist[v]=dist[u]+w;q.push(edge{v,id,dist[v]});}}}
}
void slove(){cin>>n>>m;for(int i=1;i<=m;i++){int u,v,w;cin>>u>>v>>w;g[u].push_back(node{v,w,i});g[v].push_back(node{u,w,i});}dijkstra();
}signed main(){slove();
}

3 - Swap Places

https://atcoder.jp/contests/abc289/tasks/abc289_e]

BFS 存两个点状态

/*
一种新类型
想过双搜,但其实这比双搜简单。
因为他有限制条件。1、它们两个移动到的顶点必须是不同颜色
2、它们两个要同时到达起点和终点然后我们再思考一下flag这么写?
是一个点不能重复,还是一个状态不能重复。
显然是一个状态,也就是两个人所在的位置不能重复入队我们bfs可不可以回头或者一个人停下来等?为什么要回头?假如一方更快到达,一方更慢到达。需要有人停下来等下。显然这种情况是不会发生的...因为它们两个是同时移动,而不是先后移动。所以只要存在路径它们能一直往前走,那么就可以同时到达。所以我们的flag函数,记录的是:一个状态不可到达两次*/#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define PII pair<int,int>
#define endl "\n"
#define INF 1e18
#define int long long
const int N = 2001; // 1e6 + 5struct node{int n1;int n2;int step;
};
int color[N];
bool flag[N][N];void solve() {memset(color,0,sizeof color);memset(flag,0,sizeof flag);vector<int> g[N];int n,m;cin>>n>>m;for(int i=1;i<=n;i++)cin>>color[i];for(int i=1;i<=m;i++){int u,v;cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}queue<node> q;q.push(node{1,n,0});while(q.size()){int n1 = q.front().n1;int n2 = q.front().n2;int step = q.front().step;q.pop();if(flag[n1][n2])continue;flag[n1][n2]=1;if(n1==n and n2==1){cout<<step<<endl;return;}for(auto i:g[n1]){for(auto j:g[n2]){if(color[i]!=color[j])q.push({i,j,step+1});}}}cout<<-1<<endl;}
signed main () {std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int t;cin>> t;while(t --)solve();
}

4-Come Back Quickly

https://atcoder.jp/contests/abc191/tasks/abc191_e

dijkstra

/*
对于每个城镇,我们需要找到一个城镇:1、从起点出发走到那里还能再回来
2、出发+回来的时间最短N=2000
跑2000遍最短路。对于每个起点  ,更新 dist[i][j]
跑完之后,
对于每个起点,找到一个点使得  dist[i][j]+dist[j][i] 最短
如果i==j 那么只加一遍。关于输入:
对于同一对点,只取最短的路。
一开始全部初始为INF*/#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define PII pair<int,int>
#define INF 1e18
const int N =2001;
int n,m;
struct node{int v;int w;
};
vector<node> g[N];
int dist[N];
bool flag[N];
int d[N][N];void dijkstra(int start){for(int i=1;i<=n;i++) dist[i]=INF;for(int i=1;i<=n;i++) flag[i]=0;dist[start]=0;priority_queue<PII,vector<PII>,greater<PII>> q;q.push({0,start});while(q.size()){int u = q.top().second;q.pop();if(flag[u])continue;flag[u]=1;for(auto i:g[u]){int v =i.v;int w =i.w;if(dist[v]>dist[u]+w){dist[v]=dist[u]+w;d[start][v] = min(d[start][v],dist[v]);q.push({dist[v],v});}}}}
void slove(){cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)d[i][j]=INF;for(int i=1;i<=m;i++){int u,v,w;cin>>u>>v>>w;d[u][v]=min(d[u][v],w);}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i!=j){if(d[i][j]!=INF)g[i].push_back(node{j,d[i][j]});}}}for(int i=1;i<=n;i++){dijkstra(i);}for(int i=1;i<=n;i++){int ans = INF;for(int j=1;j<=n;j++){if(i==j){ans = min(ans,d[i][j]);}else{ans = min(ans,d[i][j]+d[j][i]);}}if(ans==INF)cout<<-1<<endl;else cout<<ans<<endl;}}signed main(){slove();
}

5-正直者の高橋くん

https://atcoder.jp/contests/abc021/tasks/abc021_c

dp+dijkstra

/*
新的题型:求起点到终点,的最短路有多少条。考虑dp设dp[i][j]表示从起点出发,走到i,且距离为j的路的数量假设结尾是end,
答案是 dp[end][dist];那么从所有能扩展到end的点中
dp[end][dist] += dp[i][dist-1]我们考虑初始是怎么得到状态的:从起点开始扩展:dp[v][j] += dp[u][j-1]初始化就是
dp[start][0]=1;
*/
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define PII pair<int,int>
#define INF 1e18
const int mod = 1e9+7;
const int N = 101;
int dp[101][1000]; //答案
int dist[101]; //最短路
bool flag[101];
vector<int> g[N];int a,b; //起点终点
int n,m;void dijkstra(){for(int i=1;i<=n;i++)dist[i]=INF;dist[a]=0;dp[a][0]=1;priority_queue<PII,vector<PII>,greater<PII>> q;q.push({0,a});while(q.size()){int u = q.top().second;q.pop();if(flag[u])continue;flag[u]=1;for(auto i:g[u]){if(dist[i]>=dist[u]+1){dist[i]=dist[u]+1;dp[i][dist[i]]=( dp[i][dist[i]]+dp[u][dist[u]])%mod;q.push({dist[i],i});}}}cout<<dp[b][dist[b]]%mod<<endl;
}
void slove(){cin>>n;cin>>a>>b;cin>>m;for(int i=1;i<=m;i++){int u,v;cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}dijkstra();}signed main(){slove();
}

6-joisino’s travel

https://atcoder.jp/contests/abc073/tasks/abc073_d

floyd + 全排列

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;int n,m,R,dist[300][300],r[10];int main()
{memset(dist,0x3f,sizeof dist);int Min,ans;cin>>n>>m>>R;for(int i=0;i<R;i++)cin>>r[i];for(int i=0;i<m;i++){int x,y,z;cin>>x>>y>>z;dist[x][y]=dist[y][x]=z;}for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(dist[i][k]+dist[k][j]<dist[i][j])dist[i][j]=dist[i][k]+dist[k][j];sort(r,r+R);ans=0x3f3f3f3f;do{Min=0;for(int i=0;i<R-1;i++)Min+=dist[r[i]][r[i+1]];ans=min(Min,ans);}while(next_permutation(r,r+R));cout<<ans;
}

7-Traveler

https://atcoder.jp/contests/abc197/tasks/abc197_e

/*
这是一个新问题:
如果你必须要走完所有点 or 必须走完所选中的点。
你的最短路是多少?建图:如果小球ID一样,那么两者之间建立双向边。标记数组:
标记每个球其实最终这是一条链。
因为对于id不一样的小球,我们是线性升序的,也就是一条链but... 对于ID一样的小球,我们必须采用特定的顺序。使之变成一条链。对于id一样的小球,我们只关心分布两端的球。
中间的球在拣两端的球的路上会被捡走。而对于同一种id的小球,我们最后拣左端 还是 拣右段 是不知道的           。这需要跟下一种要捡的id有关。
而。。下一种要捡的id,也是找左端和右段。显然,状态有点太多了。
所以考虑dp设dp[i][2]表示当前是 id = i的小球,我们最后一次是捡 0左边/1右边 的最短路假设序列已经排好序:捡左边: abs(now - d[1]) + abs(d[k] - d[1])
显然,我们还需要一个中间变量记录每一种id开始捡的时候的坐标。捡右边:abs(now - d[k]) + abs(d[1]-d[k]) ;*/#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define PII pair<int,int>
#define INF 1e18
const int N = 2e5+7;
int dp[N][2];
set<int> color;
vector<int> g[N];
void slove(){int n;cin>>n;for(int i=1;i<=n;i++){int x,c;cin>>x>>c;color.insert(c);g[c].push_back(x);}for(auto i:color){sort(g[i].begin(),g[i].end());}int now = 0;for(auto i = color.begin() ; i!=color.end();i++){int id = *i;auto it = i;auto is = it;if(it!=color.begin()){is--;int pre = *is; //上一次的小球id//当前id的小球,最后一次收集是左边:// 上一次的小球收集最后是在左边:int temp1 = dp[pre][0] + abs(g[pre][0]-g[id][g[id].size()-1]) + abs(g[id][0]-g[id][g[id].size()-1]);//上一次的小球收集在右边int temp2 = dp[pre][1] + abs(g[pre][g[pre].size()-1]-g[id][g[id].size()-1]) + abs(g[id][0]-g[id][g[id].size()-1]);dp[id][0] = min(temp1,temp2);//当前id的小球,最后一次收集在右边:// 上一次的小球收集最后是在左边:temp1 = dp[pre][0] + abs(g[pre][0]-g[id][0]) + abs(g[id][0]-g[id][g[id].size()-1]);//上一次的小球收集在右边temp2 = dp[pre][1] + abs(g[pre][g[pre].size()-1]-g[id][0]) + abs(g[id][0]-g[id][g[id].size()-1]);dp[id][1] = min(temp1,temp2);}else{//当前id的小球,最后一次收集是左边:// 上一次的在起点:int temp1 = 0 + abs(0-g[id][g[id].size()-1]) + abs(g[id][0]-g[id][g[id].size()-1]);//上一次的在起点:int temp2 = 0 + abs(0-g[id][g[id].size()-1]) + abs(g[id][0]-g[id][g[id].size()-1]);dp[id][0] = min(temp1,temp2);//当前id的小球,最后一次收集在右边:// 上一次的在起点:temp1 = 0 + abs(0-g[id][0]) + abs(g[id][0]-g[id][g[id].size()-1]);//上一次的在起点:temp2 = 0 + abs(0-g[id][0]) + abs(g[id][0]-g[id][g[id].size()-1]);dp[id][1] = min(temp1,temp2);}}// 加上回到起点的距离cout<<min(dp[*color.rbegin()][1]+abs(g[*color.rbegin()][g[*color.rbegin()].size()-1]),dp[*color.rbegin()][0] + abs(g[*color.rbegin()][0]) )<<endl;}signed main(){slove();
}

8- Merge Set

https://atcoder.jp/contests/abc302/tasks/abc302_f

警钟长鸣:N要开大点

/*
一共有N个集合
每个集合包含图内的一些点。当前仅当,两个集合内有交点,那么我们可以将这两个集合合并集合内部是互通的。我们现在要从1,到M请问需要连接多少集合。我们可以在每个集合内部连接一条边权为0的点。在每个集合间连接一条边权为1的点。然后跑一遍最短路。问题是:
如何在集合之间连边?考虑集合之间是如何互通的?这题算是一个套路的建图题。对于这种集合间连边的问题:
我们可以给每个集合都编号。这个编号不能和现在有的点重复。
所以可以考虑i+M然后把每个集合内部的点,都和这个集合相连。点到集合的边为0
集合到点的边为1答案就是最短路-1
*/#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define PII pair<int,int>
#define INF 1e18struct node{int v;int w;
};
struct point{int u;int step;bool operator <(point b)const{return step>b.step;}
};const int N = 5e6+6;
int dist[N];
int flag[N];
vector<node> g[N];
void slove(){int n,m;cin>>n>>m;for(int i=1;i<=n;i++){int len;cin>>len;while(len--){int v;int u = i+m;cin>>v;g[v].push_back(node{u,1});g[u].push_back(node{v,1});}}priority_queue<point> q;q.push(point{1,0});while(q.size()){int u  = q.top().u;int step = q.top().step;q.pop();if(flag[u])continue;flag[u]=1;if(u==m){cout<<step/2-1<<endl;return;}for(auto i : g[u]){int v = i.v;int w = i.w;q.push(point{v,w+step});}}cout<<-1<<endl;}signed main(){slove();
}

相关文章:

0基础刷图论最短路 3(从ATcoder 0分到1800分)

AT最短路刷题3&#xff08;本文难度rated 1200~ 1400&#xff09; 题目来源&#xff1a;Atcoder 题目收集&#xff1a; https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path &#xff08;里面按tag分类好了Atcoder的所有题目&#xff0c;类似cf&#xff09; &#x…...

k8s+docker一键安装过程

环境: k8s 1.20 docker 20.10 centos7.9 #docker安装 yum install -y epel-release yum install -y yum-utils yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce-20.10.6 docker-ce-cli-2…...

Python3+Appium+Android SDK+真机+实现app自动化测试-基于Red Hat7.9版本搭建环境及运行python脚本。

1、总体概述? 收费有收费的服务,那就是细致。Red Hat9.0自动化环境也有,需要的说一声。 1、实现在Red Ha/t Enterprise Linux7.9环境中搭建部署app自动化测试环境,提供详细步骤。 2、版本说明:jdk8/17+nodejs16/18/19/20/21+android sdk29+python3.9.18/3.11.1+appium1…...

深入理解MD5算法:原理、应用与安全

title: 深入理解MD5算法&#xff1a;原理、应用与安全 date: 2024/4/11 20:55:57 updated: 2024/4/11 20:55:57 tags: MD5算法数据安全哈希函数摘要算法安全漏洞SHA算法密码学 第一章&#xff1a;引言 导言 在当今数字化时代&#xff0c;数据安全和完整性变得至关重要。消息…...

架构师系列-搜索引擎ElasticSearch(三)- Java API

SpringBoot整合ES 搭建SpringBoot工程&#xff0c;引入ElasticSearch相关坐标 <!--引入es的坐标--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><versi…...

Ubuntu下配置Android NDK环境

Android-NDK的下载 下载Android-NDK wget -c http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin 执行bin文件&#xff08;即解压&#xff09; ./android-ndk-r10c-linux-x86_64.bin Android-NDK的配置 要想使用Android-NDK&#xff0c;还需要进行环境变量…...

使用 vue3-sfc-loader 加载远程Vue文件, 在运行时动态加载 .vue 文件。无需 Node.js 环境,无需 (webpack) 构建步骤

加载远程Vue文件 vue3-sfc-loader vue3-sfc-loader &#xff0c;它是Vue3/Vue2 单文件组件加载器。 在运行时从 html/js 动态加载 .vue 文件。无需 Node.js 环境&#xff0c;无需 (webpack) 构建步骤。 主要特征 支持 Vue 3 和 Vue 2&#xff08;参见dist/&#xff09;仅需…...

stm32移植嵌入式数据库FlashDB

本次实验的程序链接stm32f103FlashDB嵌入式数据库程序资源-CSDN文库 一、介绍 FlashDB 是一款超轻量级的嵌入式数据库&#xff0c;专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同&#xff0c;FlashDB 结合了 Flash 的特性&#xff0c;具有较强的性能…...

Ubuntu 安装Java、Git、maven、Jenkins等持续集成环境

Ubuntu 持续集成 安装OpenJdk 查看所有可安装的 JDK 版本 apt list OpenJDK\*使用 apt 安装 JDK&#xff08;以 11为例&#xff09;,最好是用11&#xff0c;java8对应的jenkins会有兼容问题。 sudo apt install openjdk-11-jdk openjdk-11-jre安装成功后&#xff0c;可以使用以…...

文件批量重命名并批量修改文件扩展名,支持随机大小写字母命名并修改扩展名字母

在数字时代&#xff0c;文件的管理和整理成为了我们日常工作与生活中不可或缺的一部分。然而&#xff0c;面对堆积如山的文件&#xff0c;如何高效地对其进行重命名和修改扩展名&#xff0c;成为了许多人的难题。 第一步&#xff0c;进入文件批量改名高手的主页面&#xff0c;…...

【管理咨询宝藏70】MBB大型城投集团内外部环境分析报告

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏70】MBB大型城投集团内外部环境分析报告 【格式】PDF版本 【关键词】战略规划、商业分析、管理咨询、MBB顶级咨询公司 【强烈推荐】 这是一套市…...

服务器挖矿病毒解决ponscan,定时任务解决

服务器挖矿病毒解决ponscan&#xff0c;定时任务解决 挖矿病毒会隐藏chattr的操作权限&#xff0c;让我们无法删除病毒文件&#xff0c;杀掉病毒进程。所以要去下载chattr.c的文件&#xff0c;编译成a.out。然后再对原来的chattr文件的权限进行修改。然后覆盖掉它。 chattr.c …...

【鸿蒙开发】第二十一章 Media媒体服务(二)--- 音频播放和录制

1 AVPlayer音频播放 使用AVPlayer可以实现端到端播放原始媒体资源&#xff0c;本开发指导将以完整地播放一首音乐作为示例&#xff0c;向开发者讲解AVPlayer音频播放相关功能。 以下指导仅介绍如何实现媒体资源播放&#xff0c;如果要实现后台播放或熄屏播放&#xff0c;需要…...

网络安全从入门到精通(特别篇I):Windows安全事件应急响应之Windows应急响应基础必备技能

Windows应急 询问攻击情况范围 事件发生时的状况或安全设备告警等,能帮助应急处置人员快速分析确定事件类型,方便前期准备。 通用排查思路 入侵肯定会留下痕迹,另外重点强调的是不要一上来就各种查查查,问清楚谁在什么时间发现的主机异常情况,异常的现象是什么,受害用…...

基于SpringBoot+Mybatis框架的私人影院预约系统(附源码,包含数据库文件)

基于SpringBootMybatis框架的私人影院预约系统&#xff0c;附源码&#xff0c;包含数据库文件。 非常完整的一个项目&#xff0c;希望能对大家有帮助哈。 本系统的完整源码以及数据库文件都在文章结尾处&#xff0c;大家自行获取即可。 项目简介 该项目设计了基于SpringBoo…...

【SERVERLESS】AWS Lambda上实操

通过Serverless的发展历程及带给我们的挑战&#xff0c;引出我们改如何改变思路&#xff0c;化繁为简&#xff0c;趋利避害&#xff0c;更好的利用其优势&#xff0c;来释放企业效能&#xff0c;为创造带来无限可能。 一 Serverless概述 无服务器计算近年来与云原生计算都是在…...

IDEA2023 开发环境配置

目录 1. 关闭IDEA自动更新1.2 IDEA 新版样式切换 2. Maven配置2.1本地仓库优先加载2.2 maven.config配置文件中 3. 全局配置JDK4. 配置文件编码:UTF-85. 开启自动编译&#xff08;全局配置&#xff09;6. 开启自动导包7. 开启鼠标悬浮&#xff08;提示文档信息&#xff09;8. 设…...

YOLOV5 + 双目相机实现三维测距(新版本)

文章目录 YOLOV5 双目相机实现三维测距&#xff08;新版本&#xff09;1. 项目流程2. 测距原理3. 操作步骤和代码解析4. 实时检测5. 训练6. 源码下载 YOLOV5 双目相机实现三维测距&#xff08;新版本&#xff09; 本文主要是对此篇文章做一些改进&#xff0c;以及解释读者在…...

【计算机网络】(一)计算机网络概述

文章目录 【计算机网络】&#xff08;一&#xff09;计算机网络概述前言1.1 计算机网络在信息时代中的作用1.2 互联网概述1.2.1 网络的网络1.2.2 互联网基础结构发展的三个阶段1.2.3 互联网标准化工作 1.3 互联网的组成1.3.1 互联网的边缘部分1.3.2 互联网的核心部分 1.4 计算机…...

前端npm常用命令总结

npm&#xff08;Node Package Manager&#xff09;是Node.js的包管理器&#xff0c;用于安装和管理Node.js的依赖库。以下是一份npm命令的总结文档&#xff0c;涵盖了常用的npm命令及其功能&#xff1a; 包相关的 安装和卸载包 npm install &#xff1a;安装指定名称的包。n…...

[尚硅谷flink] 检查点笔记

在Flink中&#xff0c;有一套完整的容错机制来保证故障后的恢复&#xff0c;其中最重要的就是检查点。 文章目录 11.1 检查点11.1.1 检查点的保存1&#xff09;周期性的触发保存2&#xff09;保存的时间点3&#xff09;保存的具体流程 11.1.2 从检查点恢复状态11.1.3 检查点算法…...

JVM虚拟机(五)强引用、软引用、弱引用、虚引用

目录 一、强引用二、软引用三、弱引用四、虚引用五、总结 引文&#xff1a; 在 Java 中一共存在 4 种引用&#xff1a;强、软、弱、虚。它们主要指的是&#xff0c;在进行垃圾回收的时候&#xff0c;对于不同的引用垃圾回收的情况是不一样的。下面我们就一起来看一下这 4 种引用…...

(最新)itext7 freemarker动态模板转pdf

1.引入依赖 <!--PDF导出POM--> <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>8.0.3</version><type>pom</type> </dependency> <dependency><grou…...

solidworks electrical 2D和3D有什么区别

SolidWorks Electrical 是一款专为电气设计开发的软件工具&#xff0c;它提供了两种主要的工作环境&#xff1a;2D电气设计和3D电气集成设计。两者在功能和应用场景上存在显著的区别&#xff1a; SolidWorks Electrical 2D 设计 特点与用途&#xff1a; SolidWorks Electrica…...

4.2、ipex-llm(原bigdl-llm)进行语音识别

ipex-llm环境配置及模型下载 由于需要处理音频文件&#xff0c;还需要安装用于音频分析的 librosa 软件包。 pip install librosa下载音频文件 !wget -O audio_en.mp3 https://datasets-server.huggingface.co/assets/common_voice/--/en/train/5/audio/audio.mp3 !wget -O a…...

上海亚商投顾:创业板指低开低走 黄金、家电股逆势大涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指4月12日震荡调整&#xff0c;创业板指尾盘跌超1%。黄金板块延续强势&#xff0c;莱绅通灵9连板&#xff0…...

AIGC革新浪潮:大语言模型如何优化企业运营

在当今快速发展的商业环境中&#xff0c;企业对于有效管理知识资产的需求日益增长。知识管理作为企业核心竞争力的关键组成部分&#xff0c;对于提高决策质量、增强创新能力和优化运营流程起着至关重要的作用。随着数字化转型的推进&#xff0c;企业对知识管理系统提出了新的要…...

Golang基础-12

Go语言基础 介绍 目录操作 创建 删除 重命名 遍历目录 修改权限 文件操作 创建 打开关闭 删除 重命名 修改权限 读文件 写文件 文件定位 拷贝 测试 单元测试 基准测试 示例 介绍 本文介绍Go语言中目录操作&#xff08;创建目录、删除目录、重命名、遍历…...

python递归统计文件夹下pdf文件的数量

python递归统计文件夹下pdf文件的数量 import os from docx import Documentdef count_all_pages(root_dir):total_pages 0# 遍历文件夹for dirpath, dirnames, filenames in os.walk(root_dir):for filename in filenames:# if filename.endswith(.docx) or filename.endswit…...

Kafka 硬件和操作系统

目录 一. 前言 二. Kafka 硬件和操作系统&#xff08;Hardware and OS&#xff09; 2.1. 操作系统&#xff08;OS&#xff09; 2.2. 磁盘和文件系统&#xff08;Disks and Filesystem&#xff09; 一. 前言 Kafka 是 I/O 密集型而非计算密集型的框架&#xff0c;所以对 CP…...

双线主机可以做彩票网站吗/网站优化包括对什么优化

64位windows安装storm前需要先搞定zookeeper和python&#xff0c;所以下面我们3步走&#xff1a; 一、zookeeper 1、上https://zookeeper.apache.org/点击下方download到新页面&#xff0c;还得点一次中间的download&#xff0c;再选一个镜像链接http://mirrors.tuna.tsinghua.…...

网站如何设置域名/网络营销有哪些推广方式

数组 数组&#xff1a;是相同类型数据的有序集合&#xff0c;描述的是相同类型的若干个数据&#xff0c;按照一定先后顺序排列组合而成&#xff0c;可以通过下标来访问数组元素&#xff0c;下标从0开始。 声明&#xff1a;dataType[] arrays;或者dataType array[];首选第一种 …...

铜川做网站的公司电话/最新的销售平台

本文主要介绍了毕业设计选题系统的研究背景和意义&#xff0c;同时分析了该系统的可行性问题。另外还有相关技术介绍&#xff0c;以及系统的结构与功能模块、数据库的设计、界面设计等。随着网络技术和办公自动化的高速发展&#xff0c;信息技术已经深入到了社会的每一个角落&a…...

液体硅胶 技术支持 东莞网站建设/互联网营销师报名

2.5 C运算符 本文讲的是PIC微控制器项目设计&#xff1a;C语言一2.5 C运算符&#xff0c;运算符应用在表达式里的变量和其他对象上&#xff0c;它们会引起一些条件或计算的发生。mikroC Pro for PIC语言支持以下运算符&#xff1a;算术运算符逻辑运算符位运算符条件运算符赋值…...

web网站建设与计划论文/大连网站优化

点击上方“程序员小灰”&#xff0c;选择“置顶公众号”有趣有内涵的文章第一时间送达&#xff01;本文授权转载自 CSDN 与言则整理圣诞将至&#xff0c;还不赶快微信官方 求顶圣诞帽~~点开朋友圈&#xff0c;你会发现许多好友的头像&#xff0c;都戴着一顶红色的圣诞帽&#x…...

建筑设计地图网站/企业宣传软文范例

文章目录封装&#xff08;Encapsulation&#xff09;继承&#xff08;inheritance&#xff09;多态&#xff08;polymorphism&#xff09;深入理解多态和继承多重继承的弊端封装&#xff08;Encapsulation&#xff09; 一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法…...