牛客网暑期ACM多校训练营(第三场)

牛客网暑期ACM多校训练营(第三场)


A. PACM Team

01背包,输出方案,用bool存每种状态下用的哪一个物品,卡内存。官方题解上,说用char或者short就行了。还有一种做法是把用的物品压成一个int。

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define pb push_back
typedef long long ll;
typedef long double LD;
using namespace std;
int n,p[37],a[37],c[37],m[37],g[37],A,C,M,P,ans = 0;
int dp[37][37][37][37];
bool usd[37][37][37][37][37];
int v[40],cnt=0,vis[40];
int main() {int tp=0,ta=0,tc=0,tm=0,tmp=0;scanf("%d",&n);rep(i,0,n-1) {scanf("%d%d%d%d%d",&p[i],&a[i],&c[i],&m[i],&g[i]);}scanf("%d%d%d%d",&P,&A,&C,&M);dp[0][0][0][0] = tmp;rep(i,0,n-1) {per(ip,P,p[i])per(ia,A,a[i])per(ic,C,c[i])per(im,M,m[i]) {int t = 0,t2 = dp[ip-p[i]][ia-a[i]][ic-c[i]][im-m[i]] + g[i];t = dp[ip][ia][ic][im];if(t <= t2) {dp[ip][ia][ic][im] = t2;usd[ip][ia][ic][im][i] = 1;}}}tp = P; ta = A; tc = C; tm = M;per(i,n-1,0) if(tp>=0&&ta>=0&&tc>=0&&tm>=0) {if(usd[tp][ta][tc][tm][i]) {v[++cnt]=i;tp-=p[i];ta-=a[i];tc-=c[i];tm-=m[i];}}sort(v+1,v+1+cnt);printf("%d\n",cnt);int f=0;if(cnt) {for(int i=1;i<=cnt;++i) {if(f)printf(" ");f=1;printf("%d",v[i]);}puts("");}return 0;
}

C. Shuffle Cards

每次把中间一段数字移到开头。学习了rope的用法。然后写了个块链。。。t到爆炸。

rope:
push_back(x);//在末尾添加x
insert(pos,x);//在pos插入x,自然支持整个char数组的一次插入
erase(pos,x);//从pos开始删除x个
copy(pos,len,x);//从pos开始长度为len用x代替
replace(pos,x);//从pos开始换成x
substr(pos,x);//提取pos开始x个
at(x)/[x];//访问第x个元素

rope做法:

#include <bits/stdc++.h>
#include <ext/rope>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define pb push_back
typedef long long ll;
const int N = 1e6 + 7;
using namespace std;
using namespace __gnu_cxx;
int n,m;
rope<int> s;
int main() {scanf("%d%d",&n,&m);rep(i,1,n) s.pb(i);rep(i,1,m) {int p,x;scanf("%d%d",&p,&x);s = s.substr(p-1,x) + s.substr(0,p-1) + s.substr(p+x-1,n-(p+x-1));}int f=0;rep(i,0,n-1) {if(f)printf(" ");f=1;printf("%d",s[i]);}puts("");return 0;
}

块链做法:

//listblock TLE#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define pb push_back
typedef long long ll;
const int N = 300010;
const int M = 1000 + 7;
using namespace std;
int n,m,B,num,hd;
struct listBlock{vector<int> s;int nxt,pre;void init(){s.clear();nxt=pre=0;}void ins(int x) {s.pb(x);}
}block[N];
void init(int s[]) {B = sqrt(n);num = n/B; if(n%B)++num;hd=0;block[hd].nxt = 1;rep(i,1,num) block[i].init(),block[i].nxt=i+1,block[i].pre=i-1;block[num].nxt = -1;rep(i,0,n-1) block[i/B+1].ins(s[i]);
}
void split(int x,int p) {//(l[x],p)(p+1,r[x])if(p==(int)block[x].s.size()-1)return;int n = (int)block[x].s.size();listBlock tmp = block[x];block[x].init();rep(i,0,p)block[x].ins(tmp.s[i]);block[x].pre = tmp.pre;block[x].nxt = num+1;++num; block[num].init();rep(i,p+1,n-1)block[num].ins(tmp.s[i]);block[num].pre = x;block[num].nxt = tmp.nxt;block[tmp.pre].nxt = x;block[tmp.nxt].pre = num;tmp.init();
}
int fd(int x,int &sum) {sum=0;for(int i=hd;i!=-1;i=block[i].nxt) {sum+=(int)block[i].s.size();if(sum>=x) return i;}return 0;
}
void pt(int x) {printf("%d block:\n",x);printf("sz: %d\n",block[x].s.size());rep(i,0,block[x].s.size()-1)printf("%d ",block[x].s[i]);puts("");printf("nxt: %d\n",block[x].nxt);printf("pre: %d\n",block[x].pre);
}
int merge(int x,int y) {if(x==y)return x;if(x==-1||y==-1||x==hd||y==hd)return x;rep(i,0,(int)block[y].s.size()-1)block[x].ins(block[y].s[i]);block[x].nxt = block[y].nxt;block[block[y].nxt].pre = x;block[y].init();return x;
}
void adpt() {for(int i=hd;i!=-1;i=block[i].nxt) {if(i!=hd&&block[i].nxt!=-1&&(int)block[i].s.size()+(int)block[block[i].nxt].s.size() <= B) {i = merge(i,block[i].nxt);}}
}
void solve(int l,int r) {int suml=0,sumr=0;int pl = fd(l,suml);int pr = fd(r,sumr);if(l>suml-(int)block[pl].s.size()+1) split(pl,l-(suml-(int)block[pl].s.size())-1-1);if(r<sumr) split(pr,r-(sumr-(int)block[pr].s.size())-1);pl = fd(l,suml);pr = fd(r,sumr);block[block[pl].pre].nxt = block[pr].nxt;block[block[pr].nxt].pre = block[pl].pre;block[block[hd].nxt].pre = pr;block[pl].pre = hd;block[pr].nxt = block[hd].nxt;block[hd].nxt = pl;
}
int s[N];
int main() {scanf("%d%d",&n,&m);for(int i=0;i<n;++i) s[i]=i+1;init(s);rep(i,1,m) {int l,r,p;scanf("%d%d",&l,&p);r = l+p-1;solve(l,r);adpt();}int f=0;for(int i=hd;~i;i=block[i].nxt) {if(i!=hd) {for(int j=0;j<(int)block[i].s.size();++j) {if(f)printf(" ");f=1;printf("%d",block[i].s[j]);}}}puts("");return 0;
}

E. Sort String

这句话脑抽读不懂。。。就查了下中文题意

For each i in [0,|S|-1], let Si be the substring of S starting from i-th character to the end followed by the substring of first i characters of S. Index of string starts from 0.

就是我把这个串循环移位,把相同的分在一组输出。
做法就是kmp找循环节,如果这个串不是周期串,则每个位置都不在一组,否则就把一个周期拆开即可。难点真的在读题。

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define pb push_back
typedef long long ll;
const int N = 1e6 + 7;
using namespace std;
int len,nxt[N];
char s[N];
void getnxt() {int i=0,j;j=nxt[0]=-1;while(i<len) {while(j!=-1&&s[i]!=s[j])j=nxt[j];nxt[++i]=++j;}
}
int main() {scanf(" %s",s);len = strlen(s);getnxt();int t = len - nxt[len];if(len%t) {printf("%d\n",len);rep(i,0,len-1)printf("1 %d\n",i);}else {printf("%d\n",t);rep(i,0,t-1) {printf("%d",len/t);for(int j=i;j<len;j+=t)printf(" %d",j);puts("");}}return 0;
}

G. Coloring Tree

还是不太理解。。 大佬题解

H. Diff-prime Pairs

先保证i小于j,打了个表发现,对于素数j,与他配对的就是它比他小的所有素数,对于合数,与他配对的就是它的所有素因子,的配对之和。于是考虑,每个素数x对答案的贡献,就是能整除x的数乘上比他小的素数的个数,最后乘2


#include <bits/stdc++.h>
typedef long long ll;
const int N = 10000000;
using namespace std;
ll ans=0,num=0;
int n,phi[N+1],notp[N+1],p[N+1];
void init() {notp[1]=1;for(int i=2; i<=n; i++) {if(!notp[i]) p[++p[0]] = i;for(int j=1; j<=p[0] && i*p[j]<=n; j++) {notp[i*p[j]] = 1;if(i%p[j] == 0) break;}}
}int main() {scanf("%d",&n);init();for(int i=1;i<=n;++i) if(!notp[i]){ans += (n/i)*num;++num;}printf("%lld\n",ans*2LL);return 0;
}

I. Expected Size of Random Convex Hull

一开始读错题,拿pick定理搞了半天。。。因为n十分的小,于是直接随机然后取平均。然后写了锐角坐标系中的随机取点。WA了之后,发现答案好像与三角形的形状无关,感性思考一下,任何一种点的分布,都可以通过线性变换成为另一个三角坐标系中的点。所以答案与n相关,那就可以打表了。三角形直接取最简单的沿xy轴的等腰直角三角形,让边长尽可能长。然后,我的写法每种n随机了1e8次,精度才够。(好像是因为ans,手残定义成了long double

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define pb push_back
typedef long long ll;
typedef long double LD;
const int lim = 100000005;
using namespace std;
struct point{double x,y;point operator + (const point a)const {point t;t.x = a.x+x, t.y = a.y+y;return t;}point operator - (const point a)const {point t;t.x = x - a.x, t.y = y - a.y;return t;}
}p[3],v[12];
int n,cnt;
point mkp() {point C;C.x = ((double)rand())/RAND_MAX;C.y = ((double)rand())/RAND_MAX;return C;
}
struct Line_segment {point s,e;Line_segment() {}Line_segment(point a,point b):s(a),e(b) {}
};
double multiply(point sp,point  ep,point op) {return((sp.x-op.x)*(ep.y-op.y)-(ep.x-op.x)*(sp.y-op.y));
}bool cmp1(point a,point b) {if(a.x == b.x) return a.y < b.y;return a.x < b.x;
}
point res[22];
int graham(point pnt[],int n,point res[]) {sort(pnt,pnt+n,cmp1);int m=0, k;for(int i = 0; i < n; i++) {while(m>1 && multiply(res[m-1],pnt[i],res[m-2])<=0) m--;res[m++]=pnt[i];}k = m;for(int i = n-2; i >= 0; i--) {while(m>k && multiply(res[m-1],pnt[i],res[m-2])<=0) m--;res[m++]=pnt[i];}if(n > 1) m--;return m;
}
void getpoint() {for(int i=0;i<n;++i) {point p1 = mkp();if(p1.x<p1.y)swap(p1.x,p1.y);v[i]=p1;}
}
int tubao() {return graham(v,n,res);
}
double a[]={0,0,0,3.000000,3.6667248067,4.1667674917,4.5667089017,4.9000191650,5.1856561607,5.4356834882,5.6579956371};
int main() {//freopen("out.txt","w",stdout);rep(i,0,2)scanf("%lf%lf",&p[i].x,&p[i].y);scanf("%d",&n);
//    for(n=3;n<=10;++n) {
//        srand(time(0));
//        LD ans = 0;
//        rep(ti,1,lim) {
//            getpoint();
//            int tmp = tubao();
//            ans += tmp;
//        }
//        printf("%.10f\n",(double)ans/lim);
//    }printf("%.10f\n",a[n]);return 0;
}

J. Distance to Work

就是二分半径,然后圆和多边形交。然而我的板子精度疯狂被卡。。。网上贴了一份就过了。。。计算几何都是送命题啊。(换了的kuangbin神犇的板子,测试了一下应该比较稳。

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
const double eps = 1e-8;
const double inf = 1e20;
const double pi = acos(-1.0);
const int maxp = 1010;
using namespace std;
int sgn(double x) {if(fabs(x) < eps) return 0;if(x < 0) return -1;else return 1;
}
struct Point {double x,y;Point(){}Point(double _x,double _y){x=_x;y=_y;}void input() {scanf("%lf%lf",&x,&y);}bool operator == (Point b) const{return sgn(x-b.x) == 0 && sgn(y-b.y) == 0;}bool operator < (Point b) const{return sgn(x-b.x)==0?sgn(y-b.y)<0:x<b.x;}Point operator - (const Point &b) const {return Point(x-b.x,y-b.y);}double operator ^ (const Point &b) const {return x*b.y - y*b.x;}double operator * (const Point &b) const {return x*b.x + y*b.y;}Point operator * (const double &k) const {return Point(x*k,y*k);}Point operator / (const double &k) const {return Point(x/k,y/k);}Point operator + (const Point &b) const {return Point(x+b.x,y+b.y);}double len() {return hypot(x,y);}double len2() {return x*x+y*y;}double distance(Point p) {return hypot(x-p.x,y-p.y);}double rad(Point a,Point b) {Point p = *this;return fabs(atan2( fabs((a-p)^(b-p)),(a-p)*(b-p) ));}Point trunc(double r) {double l = len();if(!sgn(l)) return *this;r /= l;return Point(x*r,y*r);}
};
struct Line {Point s,e;Line(){}Line(Point _s,Point _e){s=_s;e=_e;}double length(){return s.distance(e);}double dispointtoline(Point p) {return fabs((p-s)^(e-s))/length();}Point lineprog(Point p) {return s + ( ((e-s)*((e-s)*(p-s)))/(e-s).len2() );}
};struct circle {Point p;double r;circle(){}circle(Point _p,double _r){p=_p;r=_r;}int relation(Point b) {double dst = b.distance(p);if(sgn(dst-r)<0) return 2;else if(sgn(dst-r)==0) return 1;return 0;}int relationline(Line v) {double dst = v.dispointtoline(p);if(sgn(dst-r)<0)return 2;else if(sgn(dst-r)==0)return 1;return 0;}int pointcrossline(Line v,Point &p1,Point &p2) {if(!(*this).relationline(v)) return 0;Point a = v.lineprog(p);double d = v.dispointtoline(p);d = sqrt(r*r-d*d);if(sgn(d)==0) {p1=a;p2=a;return 1;}p1 = a + (v.e-v.s).trunc(d);p2 = a - (v.e-v.s).trunc(d);return 2;}double areatriangle(Point a,Point b) {if(sgn((p-a)^(p-b)) == 0) return 0.0;Point q[5];int len = 0;q[len++] = a;Line l(a,b);Point p1,p2;if(pointcrossline(l,q[1],q[2]) == 2) {if(sgn((a-q[1])*(b-q[1])) < 0) q[len++] = q[1];if(sgn((a-q[2])*(b-q[2])) < 0) q[len++] = q[2];}q[len++] = b;if(len == 4 && sgn((q[0]-q[1])*(q[2]-q[1]))>0) swap(q[1],q[2]);double res = 0;rep(i,0,len-2) {if(relation(q[i]) == 0||relation(q[i+1]) == 0) {double arg = p.rad(q[i],q[i+1]);res += r*r*arg*0.5;}else {res += fabs((q[i]-p)^(q[i+1]-p))*0.5;}}return res;}
};struct polygon {int n;Point p[maxp];void input(int _n) {n = _n;rep(i,0,n-1) p[i].input();}double getarea() {double sum = 0;rep(i,0,n-1)sum += (p[i]^p[(i+1)%n]);return fabs(sum)*0.5;}double areacircle(circle c) {double ans = 0;rep(i,0,n-1) {int j = (i+1)%n;if(sgn((p[j]-c.p)^(p[i]-c.p)) >= 0)ans += c.areatriangle(p[i],p[j]);elseans -= c.areatriangle(p[i],p[j]);}return fabs(ans);}
};int n,q;
double Sp;
polygon P;
double solve(Point s,double PP,double Q) {double l = 0, r = 1e7,mid;int TT=200;while(TT--) {mid = (l+r)/2.0;circle c;c.p = s; c.r = mid;double t = P.areacircle(c);if(t*Q<Sp*(Q-PP)) l=mid;else r = mid;}return l;
}int main() {scanf("%d",&n);P.input(n);Sp = P.getarea();scanf("%d",&q);while(q--) {Point s;double PP,Q;s.input();scanf("%lf %lf",&PP,&Q);printf("%.10f\n",solve(s,PP,Q));}return 0;
}

转载于:https://www.cnblogs.com/RRRR-wys/p/9379778.html

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

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

相关文章

P4096-[HEOI2013]Eden的博弈树

正题 题目链接:https://www.luogu.com.cn/problem/P4096 题目大意 一个博弈树&#xff0c;黑方先手。定义一个最小的叶子节点集为黑胜状态为黑方胜利集合&#xff0c;白色亦然。求所有既属于黑方胜利集合有属于白方胜利集合的点。 解题思路 设fi,0/1f_{i,0/1}fi,0/1​表示ii…

【DP】数字编码

数字编码 题目大意&#xff1a; 有一个序列&#xff0c;可以把它分为一些子序列&#xff0c;但要按题意用字符串表示出来&#xff0c;现在要求字符串的字符最小是多少 原题&#xff1a; 题目描述 一列有顺序的非负整数&#xff0c;需要把它们编码成一个0、10、10、1字符串…

NOIP2013货车运输

NOIP2013货车运输 题目描述 A 国有 n 座城市&#xff0c;编号从 1 到 n&#xff0c;城市之间有 m 条双向道路。每一条道路对车辆都有重量限制&#xff0c;简称限重。现在有 q 辆货车在运输货物&#xff0c;司机们想知道每辆车在不超过车辆限重的情况下&#xff0c;最多能运多重…

52ABP模板 ASP.Net Core 与 Angular的开源实例项目

阅读文本大概需要 5 分钟。开始之前自从上一篇文章".NET:持续进化的统一开发平台"发布后&#xff0c;已经有三个月的时间没有写过文章了。这段时间&#xff0c;做了两场线下活动&#xff0c;一场在上海&#xff0c;一场在成都。 中途顺带去参加了微软的人工智能的ope…

jzoj1281-旅行【dp】

正题 题目大意 nnn个地方&#xff0c;第iii个高度为hih_ihi​。每次可以交换一个hjh_jhj​和hj1h_{j1}hj1​但是要满足操作的jjj递增。 解题思路 也就是可以选择若干个区间&#xff0c;然后将区间的头部丢到尾部。 发现dpdpdp的瓶颈在于我们在枚举下一个时无法知道上一个的具…

初一模拟赛总结(2019.6.15)

成绩&#xff1a; 注&#xff1a;T1好像因为精度问题&#xff0c;有一些本地对的代码交上去WA了 rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4T5T5T5111lyflyflyf320320320202020100100100100100100100100100000222hkyhkyhky298298298989898100100100100…

概率期望学习笔记

概率期望学习笔记 POJ3869 题意&#xff1a;两个人转左轮手枪&#xff0c;朝自己打&#xff0c;枪里保证至少有一个空的&#xff0c;你的对手上一轮活下来了&#xff0c;现在到你了&#xff0c;问重新转左轮和直接打&#xff0c;哪个概率高。 做法&#xff1a;考虑00&#xff0…

jzoj1282-资源勘探【统计】

正题 题目链接:https://gmoj.net/senior/#contest/show/3146/2 题目大意 一个以左上角为端点的子矩形价值定义为区间内唯一的数的数量&#xff0c;求所有子矩形的权值和。 解题思路 考虑每个数字的贡献&#xff0c;对于相同的数字&#xff0c;产生贡献的右下角一定是一个若干…

Quartz.Net分布式任务管理平台(第二版)

前言&#xff1a;在Quartz.Net项目发布第一版Quartz.Net分布式任务管理平台后&#xff0c;有挺多园友去下载使用&#xff0c;我们通过QQ去探讨&#xff0c;其中项目中还是存在一定的不完善。所以有了现在这个版本。这个版本的编写完成其实有段时间了一直没有放上去。现在已经同…

【模拟】表达式求值(jzoj 1768)

表达式求值 jzoj 1768 题目大意&#xff1a; 有一个式子&#xff08;只含数字和加号乘号&#xff09;&#xff0c;让你求出结果的前四位 输入样例 输入样例#1 11*34输入样例#2 11234567890*1 输入样例#3 11000000003*1输出样例 输出样例#1 8输出样例#2 7891输出样例…

Gym101128J

Gym101128J 二分判断点是否在凸包内&#xff0c;模板更新 //Gym - 101128J #include <bits/stdc.h> #define rep(i,a,b) for(int ia;i<b;i) const double eps 1e-8; const double inf 1e20; const double pi acos(-1.0); const int maxp 10110; using namespace s…

.NET Core开发日志——WCF Client

WCF作为.NET Framework3.0就被引入的用于构建面向服务的框架在众多项目中发挥着重大作用。时至今日&#xff0c;虽然已有更新的技术可以替代它&#xff0c;但对于那些既存项目或产品&#xff0c;使用新框架重构的代价未必能找到人愿意买单。而在.NET Core平台环境中&#xff0c…

jzoj4279-[NOIP2015模拟10.29B组]树上路径【树形dp】

正题 题目链接:https://gmoj.net/senior/#main/show/4279 题目大意 nnn个点的一棵树求经过每个点的最长路径。 解题思路 设fif_{i}fi​表示iii子树内的最长路径。 我们第二次转移一个位置时我们枚举除了这个子树之外的其他子树&#xff0c;找到之外最大的fif_ifi​转移下去即…

纪中培训总结(2019年9月4~13日)

Day0&#xff08;4号&#xff09; 今天来到纪中&#xff0c;收拾了一下行李&#xff0c;然后来到机房&#xff0c;老师讲了一下规则&#xff0c;然后刷题去了 Day1&#xff08;5号&#xff09; 早上起来去吃了个早餐&#xff0c;喝了瓶奶&#xff0c;然后来到机房&#xff0…

jzoj4282-[NOIP2015模拟10.29B组]平方数游戏【构造】

正题 题目大意 构造一个ai{1,−1}a_i\{1,-1\}ai​{1,−1}使得最小化∣∑i1naii2∣|\sum_{i1}^na_ii^2|∣i1∑n​ai​i2∣ 解题思路 我们发现有对于一段连续的x2−(x1)2−(x2)2(x3)24x^2-(x1)^2-(x2)^2(x3)^24x2−(x1)2−(x2)2(x3)24&#xff0c;那么就有x2−(x1)2−(x2)2(x3)…

POJ3335(半平面交)

POJ3335 半平面交裸题 //poj3335 #include <cstdio> #include <cmath> #include <algorithm> #define rep(i,a,b) for(int ia;i<b;i) const double eps 1e-8; const double inf 1e20; const double pi acos(-1.0); const int maxp 50110;using namesp…

通过 Docker Compose 组合 ASP NET Core 和 SQL Server

本文模拟一个比较完整的项目&#xff0c;包括前端(MVC), 后端(WebApi)和数据库(mssql-server-linux)。通过Docker Compose 定义&#xff0c;组合并执行它们。涉及到 Docker Compose 安装&#xff0c;命令&#xff0c;docker-compose.yml文件编写&#xff0c;WebApi 和 MVC 项目…

【模拟】交换(jzoj 1518)

交换 jzoj 1518 题目大意&#xff1a; 有两个字符串&#xff08;只包含‘R’‘G’‘B’三个字符&#xff0c;且相邻的字符互不相同&#xff09;&#xff0c;现在要交换两个字符串中的一个数&#xff0c;使两个字符串内都各有3个连续且相同的字符&#xff0c;问有多少种换法 …

组合博弈学习笔记

组合博弈学习笔记 说在前边 下面的博弈题目基本就是sg函数&#xff0c;搜必败必胜态&#xff0c;找规律&#xff0c;推策略。。。没有对理论进行深入了解。HDU1527 搜索时发现&#xff0c;必败态的数对貌似有规律&#xff0c;首先他们的大小两个数的差值是逐个增加的。然后&…

winserver的consul部署实践与.net core客户端使用(附demo源码)

前言随着微服务兴起&#xff0c;服务的管理显得极其重要。都知道微服务就是”拆“&#xff0c;把臃肿的单块应用&#xff0c;拆分成多个轻量级的服务&#xff0c;每个服务可以在短周期内重构、迭代、交付。随着微服务的数量增多&#xff0c;因量变引起了质量&#xff0c;带来新…