《算法競賽進階指南》------圖論篇

文章目錄

    • 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<=5?105
思路:
在這里插入圖片描述
代碼如下:

#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.pswp.cn/news/207387.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207387.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207387.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

為什么Java程序員需要掌握多線程?揭秘并發編程的奧秘

為什么Java程序員需要掌握多線程&#xff1f;揭秘并發編程的奧秘 個人簡介前言多線程對于Java的意義&#x1f4cc;1.提高程序性能&#xff1a;&#x1f4cc;2 提高用戶體驗&#xff1a;&#x1f4cc;3支持并發處理&#xff1a;&#x1f4cc;4 資源共享和同步&#xff1a;&#…

OpenSSL 編程示例

參考&#xff1a;深入探索 OpenSSL&#xff1a;概念、原理、開發步驟、使用方法、使用場景及代碼示例 地址&#xff1a;https://oneisall.blog.csdn.net/article/details/131489812?spm1001.2014.3001.5502 目錄 1. OpenSSL 概念2. OpenSSL 原理3. OpenSSL 開發步驟4. OpenSSL…

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()函數&…

9. 從零用Rust編寫正反向代理, HTTP2改造篇之HPACK示例, 了解http2頭信息如何處理

wmproxy wmproxy是由Rust編寫&#xff0c;已實現http/https代理&#xff0c;socks5代理&#xff0c; 反向代理&#xff0c;靜態文件服務器&#xff0c;內網穿透&#xff0c;配置熱更新等&#xff0c; 后續將實現websocket代理等&#xff0c;同時會將實現過程分享出來&#xff…

vue3,元素可拖拽,自定義指令,鼠標以及手指事件的寫法不一樣

使用很簡單&#xff0c;直接 <div v-drag><div class"header"></div><div class"content"></div> </div>// 自定義指令 —— 拖動div const vDrag {// 在綁定元素的父組件// 及他自己的所有子節點都掛載完成后調用m…

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…

程序解釋與編譯

?1.程序的解釋執行方式 程序語言強寫的計策機指令序列稱為“源程序”,計算機并不能直接執行用高級語言編寫的源程序&#xff0c;源程序必須通過“翻譯程序”翻譯成機器指令的形式&#xff0c;計算機才能項別和執行。源程序的翻譯有兩種方式&#xff1a;解釋執行和編譯執行。不…

網絡編程基礎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…

vivado $clog2函數

對于.v文件在vivado中是不支持&#xff0c;但是可以修改為.sv或更改文件屬性使用sytemverilog來支持。 /*** Math function: $clog2 as specified in Verilog-2005** clog2 0 for value 0* ceil(log2(value)) for value > 1** This implementatio…

php+mysql期末作業小項目

目錄 1、登錄界面 2、注冊界面 3、主界面 4、學生表界面 5 、查詢學生界面?編輯 6、修改學生信息界面?編輯 7、刪除學生信息界面 8、添加學生信息界面 9、后臺數據庫?編輯 一個簡單的php?mysql項目學生信息管理系統&#xff0c;用于廣大學子完成期末作業的參考&…

測試架構工程師需要具備哪些能力 ?

前言 相比于我們常見的研發架構師&#xff0c;測試架構師是近幾年才出現的一個崗位&#xff0c;當然崗位title其實沒有特殊的含義&#xff0c;在我看來測試架構師其實更像對某一類人的抽象稱呼和對其復合能力的期待及認可。 在聊這篇文章的主題之前&#xff0c;先來看這樣一個…

算法訓練營Day4(鏈表)

語言 采用的Java語言&#xff0c;一些分析也是用于Java&#xff0c;請注意。 24. 兩兩交換鏈表中的節點 24. 兩兩交換鏈表中的節點 - 力扣&#xff08;LeetCode&#xff09; 解題 這道題就是考驗鏈表的基礎操作&#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年全球低代碼開發技術市場規模預計將…