Codeforces Round #654 (Div. 2) A~E 题解
LINK:CF R 654 div2
前言:F题是一个线段树分类讨论的题目 比赛的时候没看 赛后感觉没什么意思 所以咕掉了。
记事:第一次笼统的写一场比赛的题目 可能是我这场比赛打的太差了 题目不难 赛后轻而易举的解决 赛时可能是状态的问题吧.
A.Magical Sticks
容易发现不论奇偶构成的数字最优解一定为n 然后偶数答案显然为n/2 奇数可以多构成一对 n/2+1.
code
//#include<bits\stdc++.h>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<queue>
#include<deque>
#include<stack>
#include<vector>
#include<algorithm>
#include<utility>
#include<bitset>
#include<set>
#include<map>
#define ll long long
#define db double
#define INF 1000000000
#define ldb long double
#define pb push_back
#define put_(x) printf("%d ",x);
#define get(x) x=read()
#define gt(x) scanf("%d",&x)
#define gi(x) scanf("%lf",&x)
#define put(x) printf("%d\n",x)
#define putl(x) printf("%lld\n",x)
#define gc(a) scanf("%s",a+1)
#define rep(p,n,i) for(RE int i=p;i<=n;++i)
#define go(x) for(int i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])
#define fep(n,p,i) for(RE int i=n;i>=p;--i)
#define vep(p,n,i) for(RE int i=p;i<n;++i)
#define pii pair<int,int>
#define mk make_pair
#define RE register
#define P 1000000007
#define gf(x) scanf("%lf",&x)
#define pf(x) ((x)*(x))
#define uint unsigned long long
#define ui unsigned
#define EPS 1e-9
#define sq sqrt
#define mod 998244353
#define S second
#define F first
#define op(x) t[x].op
#define d(x) t[x].d
#define Set(a,v) memset(a,v,sizeof(a))
#define pf(x) ((x)*(x))
using namespace std;
char buf[1<<15],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;
}
inline int read()
{
RE int x=0,f=1;RE char ch=getc();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getc();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getc();}
return x*f;
}
const int MAXN=2010;
int n,T;
int main()
{
//freopen("1.in","r",stdin);
get(T);
while(T--)
{
get(n);
put(n/2+(n&1));
}
return 0;
}
B.Magical Calendar
怀疑题意迷惑选手。。根据题意m的范围可以对n取min.
考虑格子宽度为1是方案为1 2的时候方案为2......不过注意宽度为n的时候方案为1 特判一下就做完了。
code
//#include<bits\stdc++.h>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<queue>
#include<deque>
#include<stack>
#include<vector>
#include<algorithm>
#include<utility>
#include<bitset>
#include<set>
#include<map>
#define ll long long
#define db double
#define INF 1000000000
#define ldb long double
#define pb push_back
#define put_(x) printf("%d ",x);
#define get(x) x=read()
#define gt(x) scanf("%d",&x)
#define gi(x) scanf("%lf",&x)
#define put(x) printf("%d\n",x)
#define putl(x) printf("%lld\n",x)
#define gc(a) scanf("%s",a+1)
#define rep(p,n,i) for(RE int i=p;i<=n;++i)
#define go(x) for(int i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])
#define fep(n,p,i) for(RE int i=n;i>=p;--i)
#define vep(p,n,i) for(RE int i=p;i<n;++i)
#define pii pair<int,int>
#define mk make_pair
#define RE register
#define P 1000000007
#define gf(x) scanf("%lf",&x)
#define pf(x) ((x)*(x))
#define uint unsigned long long
#define ui unsigned
#define EPS 1e-9
#define sq sqrt
#define mod 998244353
#define S second
#define F first
#define op(x) t[x].op
#define d(x) t[x].d
#define Set(a,v) memset(a,v,sizeof(a))
#define pf(x) ((x)*(x))
using namespace std;
char buf[1<<15],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;
}
inline int read()
{
RE int x=0,f=1;RE char ch=getc();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getc();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getc();}
return x*f;
}
const int MAXN=2010;
int n,T,m;
int main()
{
//freopen("1.in","r",stdin);
get(T);
while(T--)
{
int ww=get(n);get(m);
m=min(m,n);
if(m==ww)putl((ll)m*(m+1)/2-n+1);
else putl((ll)m*(m+1)/2);
}
return 0;
}
</details>
**C.A Cookie for You**
比赛的时候人傻了 觉得不太会写 写了几个特判没过去 赛后写了两个特判就过了。
首先特判a+b<n+m的情况 下面讨论a+b>=n+m的情况。然后要多熟悉几遍题目中的两种顾客的吃法。
然后可以将两种顾客分别归纳为:1 谁多吃谁。2 谁少吃谁。
仔细观察发现第一种顾客对于任何一种局面来看都是可以做完的。
那么只需要让第二个顾客做完就行了,谁少吃谁 那么考虑这个少的能否支持下去 如果不行肯定是要想到能否吃到多的那个
而想要吃到多的那个只能让多的变成和这个少的至少相等或者更少然后才能吃 可以发现对方的那个此时也不为解 如此循环结果会更差 所以只需要特判min(a,b)和m的大小关系.
<details>
<summary>code</summary>
//#include<bits\stdc++.h>
include
include
include
include
include
include
include
include
include
include
include
include
include
include
include
include
include
include
define ll long long
define db double
define INF 1000000000
define ldb long double
define pb push_back
define put_(x) printf("%d ",x);
define get(x) x=read()
define gt(x) scanf("%d",&x)
define gi(x) scanf("%lf",&x)
define put(x) printf("%d\n",x)
define putl(x) printf("%lld\n",x)
define gc(a) scanf("%s",a+1)
define rep(p,n,i) for(RE ll i=p;i<=n;++i)
define go(x) for(ll i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])
define fep(n,p,i) for(RE ll i=n;i>=p;--i)
define vep(p,n,i) for(RE ll i=p;i<n;++i)
define pii pair<ll,ll>
define mk make_pair
define RE register
define P 1000000007
define gf(x) scanf("%lf",&x)
define pf(x) ((x)*(x))
define uint unsigned long long
define ui unsigned
define EPS 1e-9
define sq sqrt
define mod 998244353
define S second
define F first
define op(x) t[x].op
define d(x) t[x].d
define Set(a,v) memset(a,v,sizeof(a))
define pf(x) ((x)*(x))
using namespace std;
char buf[1<<15],fs,ft;
inline char getc()
{
return (fsft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fsft))?0:fs++;
}
inline ll read()
{
RE ll x=0,f=1;RE char ch=getc();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getc();}
while(ch>='0'&&ch<='9'){x=x10+ch-'0';ch=getc();}
return x*f;
}
const ll MAXN=310;
ll a,b,n,m,T;
signed main()
{
//freopen("1.in","r",stdin);
get(T);
while(T--)
{
get(a);get(b);
get(n);get(m);
if(a+b<n+m){puts("No");continue;}
if(min(a,b)>=m){puts("Yes");continue;}
puts("No");
}
return 0;
}
D.Grid-00100
考试的时候人傻了 没想到绝妙的n^2的直接构造方法 然后放弃治疗。赛后一发n^2log过了。。然后被自己蠢到了。
n^2确实不好想这道题不卡多带一个log的做法 且官方的做法虽然是n^2的也没给证明 那么证明管我毛事
值得一提的是 这个n^2log的做法可以拓展优化到n^2.
容易想到答案要么为0要么为2.为0的时候k|n。然后可以强制给每一行和每一列安排上1的个数。
然后考虑构造 通过观察发现无论什么情况都能够构造出来。
那么考虑逐行构造 盲目填1会出错 然后考虑每次填那些1的时候填列尽量少的列 证明的话可以意会一下.
code
//#include<bits\stdc++.h>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<queue>
#include<deque>
#include<stack>
#include<vector>
#include<algorithm>
#include<utility>
#include<bitset>
#include<set>
#include<map>
#define ll long long
#define db double
#define INF 1000000000
#define ldb long double
#define pb push_back
#define put_(x) printf("%d ",x);
#define get(x) x=read()
#define gt(x) scanf("%d",&x)
#define gi(x) scanf("%lf",&x)
#define put(x) printf("%d\n",x)
#define putl(x) printf("%lld\n",x)
#define gc(a) scanf("%s",a+1)
#define rep(p,n,i) for(RE int i=p;i<=n;++i)
#define go(x) for(int i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])
#define fep(n,p,i) for(RE int i=n;i>=p;--i)
#define vep(p,n,i) for(RE int i=p;i<n;++i)
#define pii pair<int,int>
#define mk make_pair
#define RE register
#define P 1000000007
#define gf(x) scanf("%lf",&x)
#define pf(x) ((x)*(x))
#define uint unsigned long long
#define ui unsigned
#define EPS 1e-9
#define sq sqrt
#define mod 998244353
#define S second
#define F first
#define op(x) t[x].op
#define d(x) t[x].d
#define Set(a,v) memset(a,v,sizeof(a))
#define pf(x) ((x)*(x))
using namespace std;
char buf[1<<15],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;
}
inline int read()
{
RE int x=0,f=1;RE char ch=getc();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getc();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getc();}
return x*f;
}
const int MAXN=310;
int n,T,m,k;
int res[MAXN];
pii s[MAXN];
int a[MAXN][MAXN];
inline int cmp(pii a,pii b){return a.F>b.F;}
int main()
{
//freopen("1.in","r",stdin);
get(T);
while(T--)
{
get(n);get(k);
memset(res,0,sizeof(res));
if(k%n){puts("2");}
else puts("0");
rep(1,n,i)
{
int ww=k/n+(i<=k%n),top=0;
rep(1,n,j)
{
int cc=k/n+(j<=k%n);
a[i][j]=0;
s[++top]=mk(cc-res[j],j);
}
sort(s+1,s+1+top,cmp);
rep(1,n,j)if(ww)a[i][s[j].S]=1,--ww,++res[s[j].S];else break;
rep(1,n,j)cout<<a[i][j];
cout<<endl;
}
}
return 0;
}
容易发现每次填的时候对于列来说01的段都是连续的 可以强行使用双端队列优化 进一步的记录上一次的位置直接推就行了 复杂度n^2.
code
//#include<bits\stdc++.h>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<queue>
#include<deque>
#include<stack>
#include<vector>
#include<algorithm>
#include<utility>
#include<bitset>
#include<set>
#include<map>
#define ll long long
#define db double
#define INF 1000000000
#define ldb long double
#define pb push_back
#define put_(x) printf("%d ",x);
#define get(x) x=read()
#define gt(x) scanf("%d",&x)
#define gi(x) scanf("%lf",&x)
#define put(x) printf("%d\n",x)
#define putl(x) printf("%lld\n",x)
#define gc(a) scanf("%s",a+1)
#define rep(p,n,i) for(RE int i=p;i<=n;++i)
#define go(x) for(int i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])
#define fep(n,p,i) for(RE int i=n;i>=p;--i)
#define vep(p,n,i) for(RE int i=p;i<n;++i)
#define pii pair<int,int>
#define mk make_pair
#define RE register
#define P 1000000007
#define gf(x) scanf("%lf",&x)
#define pf(x) ((x)*(x))
#define uint unsigned long long
#define ui unsigned
#define EPS 1e-9
#define sq sqrt
#define mod 998244353
#define S second
#define F first
#define op(x) t[x].op
#define d(x) t[x].d
#define Set(a,v) memset(a,v,sizeof(a))
#define pf(x) ((x)*(x))
using namespace std;
char buf[1<<15],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;
}
inline int read()
{
RE int x=0,f=1;RE char ch=getc();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getc();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getc();}
return x*f;
}
const int MAXN=310;
int n,T,m,k;
int res[MAXN],nex[MAXN];
int a[MAXN][MAXN];
inline int cmp(pii a,pii b){return a.F>b.F;}
int main()
{
//freopen("1.in","r",stdin);
get(T);
while(T--)
{
get(n);get(k);
memset(res,0,sizeof(res));
if(k%n){puts("2");}
else puts("0");
int last=1;
rep(1,n,i)nex[i]=i+1;nex[n]=1;
rep(1,n,i)
{
int ww=k/n+(i<=k%n);
rep(1,n,j)a[i][j]=0;
while(ww)
{
a[i][last]=1;
--ww;last=nex[last];
}
rep(1,n,j)cout<<a[i][j];
cout<<endl;
}
}
return 0;
}
证明比较容易这里不再赘述.
E1.Asterism (Easy Version)
这题怎么说呢 比较简单 考场的时候写懵逼了 写的都不知道是啥然后过了 非常的迷 导致E2更迷惑。。
考虑知道一个x如何求F(x). 先考虑x是否会存在方案数:安排最优的话那么必然是从小到大挑战。
将a数组排序 x要满足 \(x>=max{a_i-i+1}\)
方案数:这个是关键 可以考虑容斥 总方案-一个位置不合法+两个位置不合法-...然后可以发现这个方法不太行。
那么只能考虑直接求出合法的方案了 对于每个位置限制数字已经固定 即\(b_i=x+i-1\)
那么第一个点放数字的个数可以求出 第二个数字放数字的集合包含第一个集合 设\(w_i\)表示第i个位置能放的数字个数
\(F(x)=\Pi (w_i-i+1)\)可以发现这个方案不重不漏了。
这样就得了 \(n\cdot Max\) 不过过不了 题目中有\(a_i<=2000\)当x取到2000的时候显然此时%p一定为0 所以复杂度\(n^2\)
code
//#include<bits\stdc++.h>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<queue>
#include<deque>
#include<stack>
#include<vector>
#include<algorithm>
#include<utility>
#include<bitset>
#include<set>
#include<map>
#define ll long long
#define db double
#define INF 1000000000
#define ldb long double
#define pb push_back
#define put_(x) printf("%d ",x);
#define get(x) x=read()
#define gt(x) scanf("%d",&x)
#define gi(x) scanf("%lf",&x)
#define put(x) printf("%d\n",x)
#define putl(x) printf("%lld\n",x)
#define gc(a) scanf("%s",a+1)
#define rep(p,n,i) for(RE int i=p;i<=n;++i)
#define go(x) for(int i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])
#define fep(n,p,i) for(RE int i=n;i>=p;--i)
#define vep(p,n,i) for(RE int i=p;i<n;++i)
#define pii pair<int,int>
#define mk make_pair
#define RE register
#define P 1000000007
#define gf(x) scanf("%lf",&x)
#define pf(x) ((x)*(x))
#define uint unsigned long long
#define ui unsigned
#define EPS 1e-8
#define sq sqrt
#define S second
#define F first
#define op(x) t[x].op
#define d(x) t[x].d
#define Set(a,v) memset(a,v,sizeof(a))
using namespace std;
char buf[1<<15],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;
}
inline int read()
{
RE int x=0,f=1;RE char ch=getc();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getc();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getc();}
return x*f;
}
const int MAXN=5010,maxn=155;
int n,mod,cnt;
int a[MAXN],ans[MAXN];
inline int F(int x)
{
int flag=0;ll ans=1;
rep(1,n,i)
{
while(a[flag+1]<=x+i-1&&flag+1<=n)++flag;
ans=ans*(flag-i+1)%mod;
}
return ans;
}
int main()
{
//freopen("1.in","r",stdin);
//freopen("2.out","w",stdout);
get(n);get(mod);
rep(1,n,i)get(a[i]);
sort(a+1,a+1+n);
int minn=0;
rep(1,n,i)minn=max(minn,a[i]-i+1);
rep(minn,2000,i)if(F(i))ans[++cnt]=i;
put(cnt);
rep(1,cnt,i)printf("%d ",ans[i]);
return 0;
}
E2.Asterism (Hard Version)
这个需要一点小功力。不过也不难想。设minn为最小合法答案。
考虑F(minn)模p为0的时候后面也一定为0 由此从F(w)为0开始后面都为0所以1的部分是连续的一段。
二分出来r输出即可。复杂度\(nlogn+nlogMx\)
还有一种更快的做法 是我想出上述做法之前想到的一个做法:其实知道答案左端点minn 然后什么时候mod p为0呢?
对于一个x 存在\(x+i-1>=a_y\)那么其实\(y-i+1>=p\)即可.等式可以变成\(x+i-1>=a_{i+p-1}\)
再变形\(x>=a_{i+p-1}-i+1\)取p~n的那段的最小值 得到一个x就可以O(1)判断。
甚至不需要二分从minn开始暴力扫就行 二分也可以一个log。
所以总复杂度\(nlogn+logMx\)
code
//#include<bits\stdc++.h>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<queue>
#include<deque>
#include<stack>
#include<vector>
#include<algorithm>
#include<utility>
#include<bitset>
#include<set>
#include<map>
#define ll long long
#define db double
#define INF 1000000000
#define ldb long double
#define pb push_back
#define put_(x) printf("%d ",x);
#define get(x) x=read()
#define gt(x) scanf("%d",&x)
#define gi(x) scanf("%lf",&x)
#define put(x) printf("%d\n",x)
#define putl(x) printf("%lld\n",x)
#define gc(a) scanf("%s",a+1)
#define rep(p,n,i) for(RE int i=p;i<=n;++i)
#define go(x) for(int i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])
#define fep(n,p,i) for(RE int i=n;i>=p;--i)
#define vep(p,n,i) for(RE int i=p;i<n;++i)
#define pii pair<int,int>
#define mk make_pair
#define RE register
#define P 1000000007
#define gf(x) scanf("%lf",&x)
#define pf(x) ((x)*(x))
#define uint unsigned long long
#define ui unsigned
#define EPS 1e-8
#define sq sqrt
#define S second
#define F first
#define op(x) t[x].op
#define d(x) t[x].d
#define Set(a,v) memset(a,v,sizeof(a))
using namespace std;
char buf[1<<15],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;
}
inline int read()
{
RE int x=0,f=1;RE char ch=getc();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getc();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getc();}
return x*f;
}
const int MAXN=100010,maxn=155;
int n,mod,cnt;
int a[MAXN];
int maxx=INF;
int main()
{
//freopen("1.in","r",stdin);
//freopen("2.out","w",stdout);
get(n);get(mod);
rep(1,n,i)get(a[i]);
sort(a+1,a+1+n);
int minn=0;
for(int i=mod,j=0;i<=n;++i,++j)minn=max(minn,a[i]-i+1),a[i]-=j,maxx=min(maxx,a[i]);
rep(1,mod-1,i)minn=max(minn,a[i]-i+1);
if(minn>=maxx){puts("0");return 0;}
int l=minn,r=1000000000;
while(l<r)
{
int mid=(l+r)>>1;
if(mid<maxx)l=mid+1;
else r=mid;
}
put(r-minn);
rep(minn,r-1,i)printf("%d ",i);
return 0;
}
写完辣 成就感慢慢的 不过掉分了/ll 下次一定涨回来。
Codeforces Round #654 (Div. 2) A~E 题解的更多相关文章
- Codeforces Round #612 (Div. 2) 前四题题解
这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...
- Codeforces Round #198 (Div. 2)A,B题解
Codeforces Round #198 (Div. 2) 昨天看到奋斗群的群赛,好奇的去做了一下, 大概花了3个小时Ak,我大概可以退役了吧 那下面来稍微总结一下 A. The Wall Iahu ...
- Codeforces Round #672 (Div. 2) A - C1题解
[Codeforces Round #672 (Div. 2) A - C1 ] 题目链接# A. Cubes Sorting 思路: " If Wheatley needs more th ...
- Codeforces Round #614 (Div. 2) A-E简要题解
链接:https://codeforces.com/contest/1293 A. ConneR and the A.R.C. Markland-N 题意:略 思路:上下枚举1000次扫一遍,比较一下 ...
- Codeforces Round #610 (Div. 2) A-E简要题解
contest链接: https://codeforces.com/contest/1282 A. Temporarily unavailable 题意: 给一个区间L,R通有网络,有个点x,在x+r ...
- Codeforces Round #611 (Div. 3) A-F简要题解
contest链接:https://codeforces.com/contest/1283 A. Minutes Before the New Year 题意:给一个当前时间,输出离第二天差多少分钟 ...
- Codeforces Round #654 (Div. 2)
比赛链接:https://codeforces.com/contest/1371 A. Magical Sticks 题意 有 $n$ 根小棍,长度从 $1$ 到 $n$,每次可以将两根小棍连接起来, ...
- Codeforces Round #499 (Div. 2) D. Rocket题解
题目: http://codeforces.com/contest/1011/problem/D This is an interactive problem. Natasha is going to ...
- Codeforces Round #499 (Div. 2) C Fly题解
题目 http://codeforces.com/contest/1011/problem/C Natasha is going to fly on a rocket to Mars and retu ...
随机推荐
- 怎么给tbody加滚动条?通过css样式给表格tbody加垂直滚动条
tbody加滚动条实现思路: 1,把tbody设置成display:block,然后就对其高度设置一个固定值,overflow设置成auto. 2,把thead的tr设置成display:block. ...
- 数据库基础01-SQL基础语法
数据库查询语言(Structured Query Language) 数据库查询语言: DDL(data definition language) -数据定义语言,建库建表 DML (data man ...
- Linux下对拍(A+B问题)
对拍代码 #include<bits/stdc++.h> using namespace std; int main(){ for(int i=1;;i++){ system(" ...
- 3W字干货深入分析基于Micrometer和Prometheus实现度量和监控的方案
前提 最近线上的项目使用了spring-actuator做度量统计收集,使用Prometheus进行数据收集,Grafana进行数据展示,用于监控生成环境机器的性能指标和业务数据指标.一般,我们叫这样 ...
- [设计模式]工厂方法模式(Factory Method)
模式目的 定义一个用于创建对象的接口,让其子类来决定实例化哪个类. 工厂方法模式将类的实例化延迟到了子类中进行. 模式结构 组成部分 产品(Product) - 定义了产品功能的接口 具体产品(Con ...
- Mac系统权限打开与关闭
打开系统权限: 关闭mac command+R重启 菜单中找到终端 输入命令:csrutil enable 关闭系统权限: 重复以上1-3步骤,第4步时输入:csrutil disable
- 数据可视化之powerBI入门(七)数据清洗中最常使用的十三招
https://mp.weixin.qq.com/s?__biz=MzA4MzQwMjY4MA==&mid=2484067158&idx=1&sn=4ad955112df2f4 ...
- 爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式
爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy ...
- InnoDB表存储结构及keyring加密
ibdata是InnoDB最重要的系统表空间文件,它记录了InnoDB的核心信息,包括事务系统信息.元数据信息,记录InnoDB change buffer的btree,防止数据损坏的double w ...
- 使用 Github Actions 自动部署 Angular 应用到 Github Pages
前言 最近在学习 Angular,一些基础的语法也学习的差不多了,就在 github 上新建了一个代码仓库,准备用 ng-zorro 搭个后台应用的模板,方便自己以后写些小东西时可以直接使用.前端项目 ...