《算法竞赛进阶指南》------图论篇

文章目录

    • 0x01 Telephone Lines POJ - 3662
    • 0x02 P1073 [NOIP2009 提高组] 最优贸易
    • 0x03 道路和航线 BZOJ2200
    • 0x04 Sorting It All Out POJ - 1094 topo
    • 0x05 Sightseeing trip POJ - 1734 最小环问题
    • 0x06 Cow Relays POJ - 3613 S到E经过k条边的最短路
    • 0x07 走廊泼水节 (Kruskal)

0x01 Telephone Lines POJ - 3662

Telephone Lines
题意:从1到N修一条电缆,有p对电线杆之间是可以连接的,电信公司可以提供k条电缆,其他的由John提供,求john提供的电缆的最长的那根的长度(ret)。
思路:实则是求最短最长的边。
二分结果(sum)。对于 边值>sum, 电信公司需要提供电缆。
用djk 计算 1->n 路径上的最短路径。 满足d[n]< k ,sum是一个符合的结果。
代码如下:

#include<iostream>
#include<cstring>
#include<queue>
#define ll long long
#define ld long double
#define ull unsigned long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
ll gcd(ll a,ll b){ return b? gcd(b,a%b):a;}
const int N=2e4+10;
const ll P=1e9+7;
ll read(){ll s = 0, f = 1; char ch = getchar();while(!isdigit(ch)){if(ch == '-') f = -1;ch = getchar();}while(isdigit(ch)) s = (s << 3) + (s << 1) + (ch ^ 48), ch = getchar();return s * f;
}
using namespace std;
ll n,p,k;
ll head[N],ver[N],nex[N],edgevalue[N];
ll cnt;
void addedge(ll u,ll v,ll value)
{ver[++cnt]=v;edgevalue[cnt]=value;nex[cnt]=head[u];head[u]=cnt;
}
priority_queue<pair<int,int>> q;
ll d[N],v[N];
bool ischeck(ll sum)
{memset(d,0x3f,sizeof(d));memset(v,0,sizeof(v));while(!q.empty()){q.pop();}d[1]=0;q.push(make_pair(0,1));  //  距离  点while(!q.empty()){ll x=q.top().second;q.pop();if(v[x]) continue;v[x]=1;for(int i=head[x];i;i=nex[i]){int y=ver[i],z=edgevalue[i];if(z> sum)  z=1;else z=0;if(d[y]>d[x]+z){d[y]=d[x]+z;q.push(make_pair(-d[y],y));}}if(v[n]==1) break;}// printf("%lld\n",d[n]);// getchar();if(d[n]<=k) return true;elsereturn false;
}
void solve(){n=read();p=read();k=read();ll u,v,value;rep(i,1,p){u=read();v=read();value=read();addedge(u,v,value);addedge(v,u,value);        }ll l=0,r=1000010;ll mid;while(l<r){mid=(l+r)>>1;// printf("l:%lld r:%lld mid:%lld\n",l,r,mid);if(ischeck(mid)){r=mid;}else{l=mid+1;}}if(r==1000010) printf("-1\n");elseprintf("%lld\n",r);return ;
}
int main (){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);solve();getchar();getchar();return 0;
}

0x02 P1073 [NOIP2009 提高组] 最优贸易

最优贸易
题意:从1到达n号,在沿途中可选一点购买水晶球,在此之后可卖出去水晶球。商人阿龙只能购买一次,
问商人阿龙 旅游结束后,通过这样的方式最多赚取多少旅费?途中 一座城市可被重复经过。
数据范围: 1 < = n < = 1 0 5 , 1 < = m < = 5 ∗ 1 0 5 1<=n<=10^5,1<=m<=5*10^5 1<=n<=105,1<=m<=5105
思路:
在这里插入图片描述
代码如下:

#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define ull unsigned long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
ll gcd(ll a,ll b){ return b? gcd(b,a%b):a;}
const int N=1e6+10;
const ll P=1e9+7;
ll read(){ll s = 0, f = 1; char ch = getchar();while(!isdigit(ch)){if(ch == '-') f = -1;ch = getchar();}while(isdigit(ch)) s = (s << 3) + (s << 1) + (ch ^ 48), ch = getchar();return s * f;
}
using namespace std;
ll n,m;
ll vVAlue[N];
ll head[N],nex[N],ver[N];
ll cnt;
ll addedge(ll u,ll v)
{ver[++cnt]=v;nex[cnt]=head[u];head[u]=cnt;   
}ll vis[N];
void djk(ll u,ll *D,ll flag)
{     priority_queue< pair<int,int> > q;memset(vis,0,sizeof(vis));if(flag==1)rep(i,1,n) D[i]=200;elserep(i,1,n) D[i]=0;//    rep(i,1,n)  cout<<D[i]<<" "; cout<<endl;D[u]=vVAlue[u];q.push(make_pair(D[u],u));while(!q.empty()){ll x=q.top().second;q.pop();for(int i=head[x];i;i=nex[i]){   //   cout<<"321"<<endl;ll y=ver[i];if(flag==1){if(D[y] > D[x]){   // cout<<vVAlue[y]<<" "<<D[x]<<endl;D[y]=min(vVAlue[y],D[x]);q.push(make_pair(-D[y],y));}}else {if(D[y] < D[x]){   //cout<<vVAlue[y]<<" "<<D[x]<<endl;D[y]=max(vVAlue[y],D[x]);q.push(make_pair(D[y],y));}}  }}//   cout<<flag<<endl;//   rep(i,1,n)//   {//       printf("u:%lld  value:%lld\n",i,D[i]);//   }return ;
}
struct zw
{ll x,y,z;
}a[N];
ll D[N],F[N];
void solve(){n=read();m=read();rep(i,1,n) vVAlue[i]=read();ll x,y,z;rep(i,1,m){a[i].x=read();a[i].y=read();a[i].z=read();addedge(a[i].x,a[i].y);if(a[i].z==2){addedge(a[i].y,a[i].x);}}djk(1,D,1);cnt=0;memset(head,0,sizeof(head));rep(i,1,m){addedge(a[i].y,a[i].x);if(a[i].z==2){addedge(a[i].x,a[i].y);}}djk(n,F,-1);ll sum=0;rep(i,1,n) sum=max(sum,F[i]-D[i]);printf("%lld\n",sum);return ;
}
int main (){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);solve();getchar();getchar();return 0;
}

0x03 道路和航线 BZOJ2200

拓扑排序,djk,
道路和航线
题意:
在这里插入图片描述思路:
在这里插入图片描述
代码如下:

#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define ull unsigned long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
ll gcd(ll a,ll b){ return b? gcd(b,a%b):a;}
const int N=2e5+10;
// const ll P=1e9+7;
ll read(){ll s = 0, f = 1; char ch = getchar();while(!isdigit(ch)){if(ch == '-') f = -1;ch = getchar();}while(isdigit(ch)) s = (s << 3) + (s << 1) + (ch ^ 48), ch = getchar();return s * f;
}
using namespace std;
ll n,R,P,S;
ll  cnt;
ll head[N],nex[N],edgevalue[N],var[N];
ll D[N],vis[N];
ll num[N],in[N];
ll ans;   // 编号个数
queue<int> c;  //存放编号
priority_queue< pair<ll,int>> q;
void addedge(ll u,ll v,ll value)
{var[++cnt]=v;edgevalue[cnt]=value;nex[cnt]=head[u];head[u]=cnt;
}
void dfs(ll u)
{   num[u]=ans;for(int i=head[u];i;i=nex[i]){int v=var[i];if(num[v]) continue;dfs(v);}return ;
}
void  djk(ll s)
{     ll u,v,value;memset(D,0x7f,sizeof(D));memset(vis,0,sizeof(vis));D[s]=0;c.push(num[s]);rep(i,1,ans){if(in[i]==0 and num[s]!=i)c.push(i);}while(!c.empty()){ll x=c.front();c.pop();rep(i,1,n){if(num[i]==x) q.push(make_pair(-D[i],i));}while(!q.empty()){u=q.top().second;q.pop();if(vis[u])  continue;vis[u]=1;for(int i=head[u];i;i=nex[i]){v=var[i];value=edgevalue[i];if(D[v] > D[u]+value){D[v]=D[u]+value;if(num[u]==num[v]){q.push(make_pair(-D[v],v));}}if(num[u]!=num[v]){   in[num[v]]--;if(in[num[v]]==0){c.push(num[v]);}} }}}
}
void solve(){n=read();R=read();P=read();S=read();ll u,v,value;rep(i,1,R){u=read(); v=read(); value=read();addedge(u,v,value);addedge(v,u,value);}rep(i,1,n){if(num[i]==0){ans++;dfs(i);}}rep(i,1,P){u=read();v=read();value=read();in[num[v]]++;addedge(u,v,value);}djk(S);rep(i,1,n){if(D[i]>0x3f3f3f3f) printf("NO PATH\n");else printf("%lld\n",D[i]);}return ;
}
int main (){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);solve();getchar();getchar();return 0;
}

0x04 Sorting It All Out POJ - 1094 topo

Sorting It All Out
题意:
在这里插入图片描述
思路:
在这里插入图片描述
代码如下:

#include<iostream>
#include<cstring>
#include<queue>
#define ll long long
#define ld long double
#define ull unsigned long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
ll gcd(ll a,ll b){ return b? gcd(b,a%b):a;}
const int N=30;
const ll P=1e9+7;
ll read(){ll s = 0, f = 1; char ch = getchar();while(!isdigit(ch)){if(ch == '-') f = -1;ch = getchar();}while(isdigit(ch)) s = (s << 3) + (s << 1) + (ch ^ 48), ch = getchar();return s * f;
}
using namespace std;
ll n,m,cnt;
ll in[N],in1[N];
ll head[N],var[1000],nex[1000];
void addedge(ll u,ll v)
{var[++cnt]=v;nex[cnt]=head[u];head[u]=cnt;
}
ll ans=0;
char ch[N];
ll topo()
{rep(i,0,n-1) in[i]=in1[i];ans=0;queue<int> q;rep(i,0,n-1){if(in[i]==0)  q.push(i);}bool logo=true;ll u,v;while(!q.empty()){if(q.size()>1) logo=false;ll u=q.front();ch[ans++]=u;q.pop();for(int i=head[u];i;i=nex[i]){v=var[i];if((--in[v])==0) q.push(v);} }// cout<<ans<<" "<<logo<<n<<endl;if(ans<n) return -1;else {if(logo==true) return 1;else return 0;}
}
void solve(){while(1){n=read();m=read();if(n==0 and m==0) break;rep(i,0,n){in1[i]=0;head[i]=0;cnt=0;}char x,y;ll u,v;ll res=0;ll inde=0;rep(i,1,m){cin>>x>>y>>y;u=x-'A';v=y-'A';addedge(u,v);in1[v]++;if(res==0){res=topo();// cout<<res<<endl;inde=i;} }// cout<<res<<endl;if(res==0) cout<<"Sorted sequence cannot be determined."<<endl;else if(res==-1) cout<<"Inconsistency found after "<<inde<<" relations."<<endl;else if(res==1) {cout<<"Sorted sequence determined after "<<inde<<" relations: ";rep(i,0,ans-1)  printf("%c",ch[i]+'A');cout<<"."<<endl;}}
}
int main (){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);solve();getchar();getchar();return 0;
}

0x05 Sightseeing trip POJ - 1734 最小环问题

留下一个小疑问点: int 和 ll a=0x3f3f3f3f 在这道题中 使用ll a=0x3f3f3f3f 会错。
Sightseeing trip
题意:
在这里插入图片描述
思路:弗洛伊德, 回溯路径。
外层循环k开始,对所以的路径刷新,添上k和步添上k
这个算法的思想很关键
在这里插入图片描述

在这里插入图片描述

#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
const int N=300+10;
using namespace std;
int a[N][N],dist[N][N],pos[N][N];
ll n,m;
ll ans=1e8;
vector<int> path;
void get_path(int x,int y){if(pos[x][y]==0) return ;get_path(x,pos[x][y]);path.push_back(pos[x][y]);get_path(pos[x][y],y);
}
void solve(){cin>>n>>m;//  memset(a,0x3f,sizeof(a));for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){a[i][j]=1e8;}}for(int i=0;i<=n;i++) a[i][i]=0;for(int i=1;i<=m;i++){   int u,v,w;cin>>u>>v>>w;a[u][v]=a[v][u]=min(a[u][v],w);}memcpy(dist,a,sizeof(a));for(int k=1;k<=n;k++){for(int i=1;i<k;i++){for(int j=i+1;j<k;j++){if(dist[i][j]+a[j][k]+a[k][i]<ans){ans=dist[i][j]+a[j][k]+a[k][i];path.clear();path.push_back(i);get_path(i,j);path.push_back(j);path.push_back(k);}}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(dist[i][j]> dist[i][k]+dist[k][j]){dist[i][j]=dist[i][k]+dist[k][j];pos[i][j]=k;}}}}if(ans == 1e8){cout << "No solution." << endl;}else {for(int i=0;i<(int)path.size();i++){cout<<path[i]<<" ";}}return ;
}
int main (){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);solve();getchar();getchar();return 0;
}

0x06 Cow Relays POJ - 3613 S到E经过k条边的最短路

传送门
题意:
在这里插入图片描述
思路: 点编号映射,矩阵快速幂
代码如下:

#include<iostream>
#include<cstring>
#define ll long long
#define ld long double
#define ull unsigned long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
ll gcd(ll a,ll b){ return b? gcd(b,a%b):a;}
const int N=2e5+10;
const ll P=1e9+7;
const ll INF=0x3f3f3f3f;
ll read(){ll s = 0, f = 1; char ch = getchar();while(!isdigit(ch)){if(ch == '-') f = -1;ch = getchar();}while(isdigit(ch)) s = (s << 3) + (s << 1) + (ch ^ 48), ch = getchar();return s * f;
}
using namespace std;
ll  p[1010];
ll  a[300];
ll cnt;
struct M{ll edge[210][210];void init(){rep(i,1,200){rep(j,1,200){edge[i][j]=INF;                }}}
};
M add(M a,M b){M sum;sum.init();rep(i,1,cnt){rep(j,1,cnt){rep(k,1,cnt){sum.edge[i][j]=min(sum.edge[i][j],a.edge[i][k]+b.edge[k][j]);}}}return sum;
}
void solve(){ll n,t,s,e;cin>>n>>t>>s>>e;ll w,u,v;M sum;sum.init();for(int i=1;i<=t;i++){cin>>w>>u>>v;if(!p[u]){p[u]=(++cnt);a[cnt]=u;}if(!p[v]){p[v]=(++cnt);a[cnt]=v;}sum.edge[p[u]][p[v]]=min(w, sum.edge[p[u]][p[v]]);sum.edge[p[v]][p[u]]=min(w, sum.edge[p[v]][p[u]]);}M ans;memcpy(ans.edge,sum.edge,sizeof(sum.edge));// sum=add(sum,sum);n--;while(n){if(n&1) ans=add(ans,sum);sum=add(sum,sum);n>>=1;}cout<<ans.edge[p[s]][p[e]]<<endl;
}
int main (){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);solve();getchar();getchar();return 0;
}

0x07 走廊泼水节 (Kruskal)

走廊泼水节
题意:
在这里插入图片描述
思路: 克里斯特+模拟
在这里插入图片描述

#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define ull unsigned long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
ll gcd(ll a,ll b){ return b? gcd(b,a%b):a;}
const int N=1e4+10;
const ll P=1e9+7;
ll read(){ll s = 0, f = 1; char ch = getchar();while(!isdigit(ch)){if(ch == '-') f = -1;ch = getchar();}while(isdigit(ch)) s = (s << 3) + (s << 1) + (ch ^ 48), ch = getchar();return s * f;
}
using namespace std;
ll fa[N];
ll num[N];
ll  getfa(ll x){return x==fa[x] ? x: fa[x]=getfa(fa[x]);
}
struct zw{int x,y,z;
}a[N];
bool operator <(zw a,zw b){return a.z<b.z;
}
void solve(){ll n;cin>>n;rep(i,1,n-1){cin>>a[i].x>>a[i].y>>a[i].z;}rep(i,1,n){fa[i]=i;num[i]=1;}sort(a+1,a+n);ll sum=0;for(int i=1;i<=n-1;i++){int x=getfa(a[i].x);int y=getfa(a[i].y);if(x==y) continue;sum+=( num[x]*num[y]-1 )*(a[i].z+1);fa[y]=x;num[x]+=num[y];}cout<<sum<<endl;return ;
}
int main (){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int T=read();while(T--)solve();getchar();getchar();return 0;
}

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

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

相关文章

为什么Java程序员需要掌握多线程?揭秘并发编程的奥秘

为什么Java程序员需要掌握多线程&#xff1f;揭秘并发编程的奥秘 个人简介前言多线程对于Java的意义&#x1f4cc;1.提高程序性能&#xff1a;&#x1f4cc;2 提高用户体验&#xff1a;&#x1f4cc;3支持并发处理&#xff1a;&#x1f4cc;4 资源共享和同步&#xff1a;&#…

C# 语法笔记

1.ref、out&#xff1a;参数传递的两种方式 ref&#xff1a;引用传递 using System; namespace CalculatorApplication {class NumberManipulator{public void swap(ref int x, ref int y){int temp;temp x; /* 保存 x 的值 */x y; /* 把 y 赋值给 x */y temp; /* 把 t…

Python中的range()函数详解:掌握迭代的利器

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Python中的range()函数是一个强大的工具&#xff0c;用于生成一系列的数字&#xff0c;常用于循环操作。虽然看似简单&#xff0c;但其灵活性和功能却不容小觑。在本文中&#xff0c;将深入研究range()函数&…

docker容器_自定义上传jenkins镜像(Dockerfile实现)

1.创建jenkins目录&#xff0c;并上传相应的包 mkdir /jenkins/ 2.创建一个Dockerfile文件 FROM daocloud.io/library/centos:7#把当前目录下的jenkins.war包传到内部容器的/ 下 ADD ./jenkins.war /#把当前目录下的jdk传到内部容器的/opt/,并解压 ADD ./jdk-11.0.19_linu…

网络编程基础api

1. IP 协议 1.1 IP 分片 &#xff08;1&#xff09;IP 分片和重组主要依靠 IP 头部三个字段&#xff1a;数据报标识、标志和片偏移 以太网帧的 MTU 是 1500 字节&#xff1b; 一个每个分片都有自己的 IP 头部&#xff0c;它们都具有相同的标识值&#xff0c;有不同的片偏移…

css 十字分割线(含四等分布局)

核心技术 伪类选择器含义li:nth-child(2)第2个 lili:nth-child(n)所有的lili:nth-child(2n)所有的第偶数个 lili:nth-child(2n1)所有的第奇数个 lili:nth-child(-n5)前5个 lili:nth-last-child(-n5)最后5个 lili:nth-child(7n)选中7的倍数 border-right: 3px solid white;borde…

EasyExcel-最简单的读写excel工具类

前言&#xff1a; easyExcel 的官网文档给的示例非常全&#xff0c;可以参考https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read 在此我贴出自己的工具类&#xff0c;可以直接用 导包 <dependency><groupId>com.alibaba</groupId><…

机器学习第15天:GBDT模型

☁️主页 Nowl &#x1f525;专栏《机器学习实战》 《机器学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 ​​ 文章目录 GBDT模型介绍 Boosting 残差 GBDT的缺点 python代码实现 代码 模型参数解释 结语 GBDT模型介绍 GBDT&#xff08;Gradient Boos…

php+mysql期末作业小项目

目录 1、登录界面 2、注册界面 3、主界面 4、学生表界面 5 、查询学生界面​编辑 6、修改学生信息界面​编辑 7、删除学生信息界面 8、添加学生信息界面 9、后台数据库​编辑 一个简单的php➕mysql项目学生信息管理系统&#xff0c;用于广大学子完成期末作业的参考&…

测试架构工程师需要具备哪些能力 ?

前言 相比于我们常见的研发架构师&#xff0c;测试架构师是近几年才出现的一个岗位&#xff0c;当然岗位title其实没有特殊的含义&#xff0c;在我看来测试架构师其实更像对某一类人的抽象称呼和对其复合能力的期待及认可。 在聊这篇文章的主题之前&#xff0c;先来看这样一个…

TCP通信

第二十一章 网络通信 本章节主要讲解的是TCP和UDP两种通信方式它们都有着自己的优点和缺点 这两种通讯方式不通的地方就是TCP是一对一通信 UDP是一对多的通信方式 接下来会一一讲解 TCP通信 TCP通信方式呢 主要的通讯方式是一对一的通讯方式&#xff0c;也有着优点和缺点…

如何在Android平板上远程连接Ubuntu服务器使用code-server代码开发

目录 1.ubuntu本地安装code-server 2. 安装cpolar内网穿透 3. 创建隧道映射本地端口 4. 安卓平板测试访问 5.固定域名公网地址 6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以&#xff0c;这里以VMwhere ubuntu系统为例 下载code server服务…

el-table 表格多选(后端接口搜索分页)实现已选中的记忆功能。实现表格数据和已选数据(前端分页)动态同步更新。

实现效果&#xff1a;&#xff08;可拉代码下来看&#xff1a;vue-demo: vueDemo&#xff09; 左侧表格为点击查询调用接口查询出来的数据&#xff0c;右侧表格为左侧表格所有选择的数据&#xff0c;由前端实现分页。 两个el-table勾选数据联动更新 实现逻辑&#xff1a; el-…

低代码开发到底是补品还是垃圾食品?

2023&#xff0c;低代码彻底火了&#xff0c;甚至火到没有点相关经验&#xff0c;都不好意思出去面试的程度。 从业者对低代码的发展充满了想象&#xff0c;都认为未来低代码的商业价值不可估量。 据Gartner的最新报告显示&#xff0c;2023年全球低代码开发技术市场规模预计将…

内部文件上传以及渲染-接口API

文件上传 地址http://172.16.0.118:8090/api/pm/base/affix/upload请求类型POSTContent-Type:text/plain;charsetutf-8参数 prjData {"prjId":"", "jobId":"3031b2c8-c809-4110-8e88-22c80a9c1ec0721aca89-96a1-4346-9b6e-022331d221d1Nec…

【EMNLP 2023】面向Stable Diffusion的自动Prompt工程算法BeautifulPrompt

近日&#xff0c;阿里云人工智能平台PAI与华南理工大学朱金辉教授团队合作在自然语言处理顶级会议EMNLP2023上发表了BeautifulPrompt的深度生成模型&#xff0c;可以从简单的图片描述中生成高质量的提示词&#xff0c;从而使文生图模型能够生成更美观的图像。BeautifulPrompt通…

【MATLAB】MODWT分解+FFT+HHT组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 MODWT分解FFTHHT组合算法是一种综合性的信号处理方法&#xff0c;它结合了经验小波变换&#xff08;Empirical Wavelet Transform&#xff0c;EWT&#xff09;、快速傅里叶变换&#xff…

爱智EdgerOS之深入解析如何应用爱智的视频流模块完成拉流

一、ONVIF 规范和常见视频流传输协议 ① ONVIF 规范 随着视频监控产业链的成熟&#xff0c;市面上陆陆续续出现了各式各样的网络摄像设备&#xff0c;这些设备都需要通讯协议才能进行数据传输。早期厂商都采用私有协议&#xff0c;但是现在厂商分工明确&#xff0c;有的负责生…

程序员的技术成长攻略

推荐语&#xff1a;偶尔在公众号看到的一篇文章&#xff0c;写的非常好&#xff0c;在此分享给各位程序员兄弟&#xff0c;不光是对技术成长有帮助&#xff0c;其他领域也是同样适用的&#xff01;建议反复阅读&#xff0c;形成一套自己的技术成长策略。 原文地址&#xff1a;…

【EI会议征稿】2024年粤港澳大湾区数字经济与人工智能国际学术会议(DEAI2024)

2024年粤港澳大湾区数字经济与人工智能国际学术会议(DEAI2024) 2024 Guangdong-Hong Kong-Macao Greater Bay Area International Conference on Digital Economy and Artificial Intelligence(DEAI2024) 2024年粤港澳大湾区数字经济与人工智能国际学术会议(DEAI2024)由广东科…