2015 Multi-University Training Contest 1

A.OO’s Sequence

计算每个数的贡献

找出第\(i\)个数左边最靠右的因子位置\(lp\)和右边最靠左的因子位置\(rp\)

对答案的贡献就是\((rp-i)*(i-lp)\)

最后答案就是\(\sum_{i=1}^{n}(rp_i-i)*(i-lp_i)\)

预处理出来所有的因子,复杂度\(O(n\sqrt{10000})\)

  1. //#pragma GCC optimize("O3")
  2. //#pragma comment(linker, "/STACK:1024000000,1024000000")
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5. function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
  6. typedef long long int LL;
  7. const int MAXN = 1e5+7;
  8. const LL MOD = 1e9+7;
  9. int n,A[MAXN],pos[MAXN],rp[MAXN],lp[MAXN];
  10. vector<int> vec[MAXN];
  11. void preprocess(){
  12. for(int i = 1; i <= 10000; i++){
  13. for(int j = i; j <= 10000; j += i){
  14. vec[j].push_back(i);
  15. }
  16. }
  17. }
  18. void solve(){
  19. for(int i = 1; i <= n; i++) scanf("%d",&A[i]);
  20. memset(pos,0,sizeof(pos));
  21. for(int i = 1; i <= n; i++){
  22. lp[i] = 0;
  23. for(int x : vec[A[i]]) lp[i] = max(lp[i],pos[x]);
  24. pos[A[i]] = i;
  25. }
  26. memset(pos,0x3f,sizeof(pos));
  27. for(int i = n; i >= 1; i--){
  28. rp[i] = n + 1;
  29. for(int x : vec[A[i]]) rp[i] = min(rp[i],pos[x]);
  30. pos[A[i]] = i;
  31. }
  32. LL ret = 0;
  33. for(int i = 1; i <= n; i++) ret = (ret + (i-lp[i]) * (rp[i]-i)) % MOD;
  34. printf("%I64d\n",ret);
  35. }
  36. int main(){
  37. preprocess();
  38. while(scanf("%d",&n)!=EOF) solve();
  39. return 0;
  40. }

B.Assignment

把每个位置作为右端点固定之后找长度最长的可行序列

ST表配合二分来找

复杂度\(O(n\log n)\)

  1. //#pragma GCC optimize("O3")
  2. //#pragma comment(linker, "/STACK:1024000000,1024000000")
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5. function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
  6. const int MAXN = 1e5+7;
  7. typedef long long int LL;
  8. int n,k,ST[2][MAXN][20];
  9. int qmin(int L, int R){
  10. int d = log2(R-L+1);
  11. return min(ST[0][L][d],ST[0][R-(1<<d)+1][d]);
  12. }
  13. int qmax(int L, int R){
  14. int d = log2(R-L+1);
  15. return max(ST[1][L][d],ST[1][R-(1<<d)+1][d]);
  16. }
  17. void solve(){
  18. scanf("%d %d",&n,&k);
  19. for(int i = 1; i <= n; i++){
  20. scanf("%d",&ST[0][i][0]);
  21. ST[1][i][0] = ST[0][i][0];
  22. }
  23. for(int j = 1; (1<<j) <= n; j++){
  24. for(int i = 1; i + (1<<j) - 1 <= n; i++){
  25. ST[0][i][j] = min(ST[0][i][j-1],ST[0][i+(1<<(j-1))][j-1]);
  26. ST[1][i][j] = max(ST[1][i][j-1],ST[1][i+(1<<(j-1))][j-1]);
  27. }
  28. }
  29. LL ret = 0;
  30. for(int i = 1; i <= n; i++){
  31. int l = 1, r = i;
  32. while(l<=r){
  33. int mid = (l+r) >> 1;
  34. if(qmax(mid,i)<qmin(mid,i)+k) r = mid - 1;
  35. else l = mid + 1;
  36. }
  37. ret += i - l + 1;
  38. }
  39. printf("%I64d\n",ret);
  40. }
  41. int main(){
  42. int T;
  43. for(scanf("%d",&T); T; T--) solve();
  44. return 0;
  45. }

C.Bombing plan

树形DP

难点在于当前点的选择会影响祖先节点的其他子树

可以先不考虑祖先节点的其他子树,只考虑它还能向上延申最远距离

\(f[i][j]\)表示节点\(i\)能再向上至少控制\(j\)个节点的最小消耗

  1. //#pragma GCC optimize("O3")
  2. //#pragma comment(linker, "/STACK:1024000000,1024000000")
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5. function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
  6. const int MAXN = 1e5+7;
  7. const int MAXM = 2e2+7;
  8. const int D = 1e2;
  9. const int INF = 0x3f3f3f3f;
  10. typedef long long int LL;
  11. int n,dist[MAXN],f[MAXN][MAXM],depth[MAXN],sum[MAXN][MAXM];
  12. vector<int> G[MAXN];
  13. int dfs(int u, int par){
  14. depth[u] = depth[par] + 1;
  15. int maxd = depth[u];
  16. memset(sum[u],0,sizeof(sum[u]));
  17. fill(begin(f[u]),end(f[u]),n);
  18. for(int v : G[u]) if(v!=par){
  19. maxd = max(maxd,dfs(v,u));
  20. for(int i = -100; i <= 100; i++) sum[u][i+D] += f[v][i+D];
  21. }
  22. for(int i = -100; i < 0; i++) f[u][i+D] = min(f[u][i+D],sum[u][i+D+1]);
  23. for(int i = 0; i <= 100; i++){
  24. for(int v : G[u]){
  25. if(v==par) continue;
  26. f[u][D+i] = min(f[u][D+i],f[v][D+i+1]+sum[u][D-i]-f[v][D-i]);
  27. }
  28. }
  29. for(int i = -100; i <= depth[u] - maxd - 1; i++) f[u][i+D] = 0;
  30. f[u][dist[u]+D] = min(f[u][dist[u]+D],1+sum[u][D-dist[u]]);
  31. for(int i = 99; i >= -100; i--) f[u][i+D] = min(f[u][i+D],f[u][i+1+D]);
  32. return maxd;
  33. }
  34. void solve(){
  35. for(int i = 1; i <= n; i++) scanf("%d",&dist[i]);
  36. for(int i = 1; i <= n; i++) G[i].clear();
  37. for(int i = 1; i < n; i++){
  38. int u, v;
  39. scanf("%d %d",&u,&v);
  40. G[u].push_back(v); G[v].push_back(u);
  41. }
  42. dfs(1,0);
  43. printf("%d\n",f[1][D]);
  44. }
  45. int main(){
  46. while(scanf("%d",&n)!=EOF) solve();
  47. return 0;
  48. }

D.Candy Distribution

E.Pocket Cube

F.Tree chain problem

评测机出问题了 测不了不知道对不对

按链的LCA深度排序

然后DP

  1. //#pragma GCC optimize("O3")
  2. //#pragma comment(linker, "/STACK:1024000000,1024000000")
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5. function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
  6. const int MAXN = 1e5+7;
  7. int n,m,dfn[MAXN],son[MAXN],sz[MAXN],tp[MAXN],depth[MAXN],par[MAXN][20],num,sum[MAXN],f[MAXN];
  8. vector<pair<pair<int,int>,int> > chain[MAXN];
  9. vector<int> G[MAXN];
  10. void dfs1(int u, int fa){
  11. sz[u] = 1; son[u] = 0;
  12. depth[u] = depth[par[u][0] = fa] + 1;
  13. for(int i = 1; par[u][i-1]; i++) par[u][i] = par[par[u][i-1]][i-1];
  14. for(int v : G[u]){
  15. if(v==fa) continue;
  16. dfs1(v,u);
  17. sz[u] += sz[v];
  18. if(sz[son[u]]<sz[v]) son[u] = v;
  19. }
  20. }
  21. void dfs2(int u, int top){
  22. tp[u] = top;
  23. dfn[u] = ++num;
  24. if(son[u]) dfs2(son[u],top);
  25. for(int v : G[u]){
  26. if(v==son[u] or v==par[u][0]) continue;
  27. dfs2(v,v);
  28. }
  29. }
  30. int LCA(int u, int v){
  31. while(tp[u]!=tp[v]){
  32. if(depth[tp[u]]<depth[tp[v]]) swap(u,v);
  33. u = par[tp[u]][0];
  34. }
  35. if(depth[u]<depth[v]) return u;
  36. else return v;
  37. }
  38. void dfs(int u){
  39. sum[u] = 0;
  40. for(int v : G[u]){
  41. if(v==par[u][0]) continue;
  42. dfs(v);
  43. sum[u] += f[v];
  44. }
  45. f[u] = sum[u];
  46. for(auto ch : chain[u]){
  47. int x = ch.first.first, y = ch.first.second, w = ch.second;
  48. int maxx = sum[u] + w;
  49. if(x!=u){
  50. if(sz[x]!=1) maxx += sum[x];
  51. int z = x;
  52. for(int i = 0; depth[z]-depth[u]-1; i++) if((depth[z]-depth[u]-1)&(1<<i)) z = par[z][i];
  53. if(sz[z]!=1) maxx -= f[z];
  54. }
  55. if(y!=u){
  56. if(sz[y]!=1) maxx += sum[y];
  57. int z = y;
  58. for(int i = 0; depth[z]-depth[u]-1; i++) if((depth[z]-depth[u]-1)&(1<<i)) z = par[z][i];
  59. if(sz[z]!=1) maxx -= f[z];
  60. }
  61. f[u] = max(f[u],maxx);
  62. }
  63. }
  64. void solve(){
  65. scanf("%d %d",&n,&m);
  66. for(int i = 1; i <= n; i++) G[i].clear();
  67. for(int i = 1; i <= n; i++) chain[i].clear();
  68. num = 0;
  69. for(int i = 1; i < n; i++){
  70. int u, v; scanf("%d %d",&u,&v);
  71. G[u].push_back(v); G[v].push_back(u);
  72. }
  73. dfs1(1,0); dfs2(1,1);
  74. for(int i = 0; i < m; i++){
  75. int u, v, w;
  76. scanf("%d %d %d",&u,&v,&w);
  77. chain[LCA(u,v)].push_back(make_pair(make_pair(u,v),w));
  78. }
  79. dfs(1);
  80. printf("%d\n",*max_element(f+1,f+1+n));
  81. }
  82. int main(){
  83. int T;
  84. for(scanf("%d",&T); T; T--) solve();
  85. return 0;
  86. }

G. Tricks Device

保留最短路上的边

然后对于第一问跑最小割

第二问删去最短的一条路径即可

  1. //#pragma GCC optimize("O3")
  2. //#pragma comment(linker, "/STACK:1024000000,1024000000")
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5. function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
  6. const int MAXN = 2222;
  7. const int INF = 0x3f3f3f3f;
  8. #define S 1
  9. #define T n
  10. struct EDGE{
  11. int to,cap,rev;
  12. EDGE(){};
  13. EDGE(int to, int cap, int rev):to(to),cap(cap),rev(rev){};
  14. };
  15. vector<EDGE> G[MAXN];
  16. int n,m,iter[MAXN],rk[MAXN];
  17. void ADDEDGE(int u, int v, int cap){
  18. G[u].push_back(EDGE(v,cap,(int)G[v].size()));
  19. G[v].push_back(EDGE(u,0,(int)G[u].size()-1));
  20. }
  21. bool bfs(){
  22. memset(rk,0,sizeof(rk));
  23. memset(iter,0,sizeof(iter));
  24. rk[S] = 1;
  25. queue<int> que;
  26. que.push(S);
  27. while(!que.empty()){
  28. int u = que.front();
  29. que.pop();
  30. for(auto e : G[u]){
  31. if(!e.cap or rk[e.to]) continue;
  32. rk[e.to] = rk[u] + 1;
  33. que.push(e.to);
  34. }
  35. }
  36. return rk[T]!=0;
  37. }
  38. int dfs(int u, int flow){
  39. if(u==T) return flow;
  40. for(int &i = iter[u]; i < (int)G[u].size(); i++){
  41. auto &e = G[u][i];
  42. if(!e.cap or rk[e.to]!=rk[u]+1) continue;
  43. int d = dfs(e.to,min(e.cap,flow));
  44. if(d){
  45. e.cap -= d;
  46. G[e.to][e.rev].cap += d;
  47. return d;
  48. }
  49. }
  50. return 0;
  51. }
  52. int Dinic(){
  53. int flow = 0;
  54. while(bfs()){
  55. int d = dfs(S,INF);
  56. while(d){
  57. flow += d;
  58. d = dfs(S,INF);
  59. }
  60. }
  61. return flow;
  62. }
  63. int dist[MAXN];
  64. vector<pair<int,int> > GG[MAXN];
  65. void Dijkstra(){
  66. memset(dist,0x3f,sizeof(dist));
  67. dist[1] = 0;
  68. priority_queue<pair<int,int>, vector<pair<int,int>>,greater<pair<int,int>>> que;
  69. que.push(make_pair(dist[1],1));
  70. while(!que.empty()){
  71. auto p = que.top();
  72. que.pop();
  73. if(dist[p.second]!=p.first) continue;
  74. int u = p.second;
  75. for(auto &e : GG[u]){
  76. int v = e.first, w = e.second;
  77. if(dist[v]<=dist[u]+w) continue;
  78. dist[v] = dist[u] + w;
  79. que.push(make_pair(dist[v],v));
  80. }
  81. }
  82. for(int i = 1; i <= n; i++){
  83. for(auto &e : GG[i]){
  84. int v = e.first, w = e.second;
  85. if(dist[i]+w==dist[v]){
  86. ADDEDGE(i,v,1);
  87. }
  88. }
  89. }
  90. }
  91. int BFS(){
  92. memset(dist,INF,sizeof(dist));
  93. dist[S] = 0;
  94. queue<int> que;
  95. que.push(S);
  96. while(!que.empty()){
  97. int u = que.front();
  98. que.pop();
  99. for(auto e : G[u]){
  100. int v = e.to;
  101. if(dist[v]!=INF) continue;
  102. dist[v] = dist[u] + 1;
  103. que.push(v);
  104. }
  105. }
  106. return dist[T]==INF?m:dist[T];
  107. }
  108. void solve(){
  109. for(int i = 1; i <= n; i++) G[i].clear(), GG[i].clear();
  110. for(int i = 1; i <= m; i++){
  111. int u, v, w;
  112. scanf("%d %d %d",&u,&v,&w);
  113. GG[u].push_back(make_pair(v,w));
  114. GG[v].push_back(make_pair(u,w));
  115. }
  116. Dijkstra();
  117. cout << Dinic() << ' ' << m - BFS() << endl;
  118. }
  119. int main(){
  120. while(scanf("%d %d",&n,&m)!=EOF) solve();
  121. return 0;
  122. }

H. Unstable

I.Annoying problem

  1. //#pragma GCC optimize("O3")
  2. //#pragma comment(linker, "/STACK:1024000000,1024000000")
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5. function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
  6. const int MAXN = 1e5+7;
  7. int n,q,dfn[MAXN],idx,dist[MAXN],par[MAXN][20],depth[MAXN],ret,rdfn[MAXN];
  8. vector<pair<int,int> > G[MAXN];
  9. void dfs(int u, int f){
  10. dfn[u] = ++idx;
  11. rdfn[idx] = u;
  12. depth[u] = depth[par[u][0] = f] + 1;
  13. for(int i = 1; par[u][i-1]; i++) par[u][i] = par[par[u][i-1]][i-1];
  14. for(auto &e : G[u]){
  15. if(e.first==f) continue;
  16. dist[e.first] = dist[u] + e.second;
  17. dfs(e.first,u);
  18. }
  19. }
  20. int LCA(int u, int v){
  21. if(depth[u]<depth[v]) swap(u,v);
  22. for(int i = 0; depth[u] - depth[v]; i++) if((depth[u]-depth[v])&(1<<i)) u = par[u][i];
  23. if(u==v) return u;
  24. for(int i = 19; i >= 0; i--) if(par[u][i]!=par[v][i]){
  25. u = par[u][i];
  26. v = par[v][i];
  27. }
  28. return par[u][0];
  29. }
  30. set<int> S1,S2;
  31. int cal(int u){
  32. int x,y;
  33. if(S1.lower_bound(dfn[u]+1)!=S1.end() and S2.lower_bound(-dfn[u]+1)!=S2.end()){
  34. x = -*S2.lower_bound(-dfn[u]+1);
  35. y = *S1.lower_bound(dfn[u]+1);
  36. }
  37. else{
  38. x = *S1.begin();
  39. y = *S1.rbegin();
  40. }
  41. x = rdfn[x]; y = rdfn[y];
  42. return dist[u] + dist[LCA(x,y)] - dist[LCA(x,u)] - dist[LCA(y,u)];
  43. }
  44. void rua(){
  45. int op, x;
  46. scanf("%d %d",&op,&x);
  47. if(op==1){
  48. if(!S1.count(dfn[x])){
  49. if(!S1.empty()) ret += cal(x);
  50. S1.insert(dfn[x]);
  51. S2.insert(-dfn[x]);
  52. }
  53. }
  54. else{
  55. if(S1.count(dfn[x])){
  56. S1.erase(dfn[x]);
  57. S2.erase(-dfn[x]);
  58. if(!S1.empty()) ret -= cal(x);
  59. }
  60. }
  61. printf("%d\n",ret);
  62. }
  63. void solve(int kase){
  64. scanf("%d %d",&n,&q);
  65. for(int i = 1; i <= n; i++) G[i].clear();
  66. memset(par,0,sizeof(par));
  67. idx = 0; S1.clear(); S2.clear(); ret = 0;
  68. for(int i = 1; i < n; i++){
  69. int u, v, w;
  70. scanf("%d %d %d",&u,&v,&w);
  71. G[u].push_back(make_pair(v,w));
  72. G[v].push_back(make_pair(u,w));
  73. }
  74. dfs(1,0);
  75. printf("Case #%d:\n",kase);
  76. while(q--) rua();
  77. }
  78. int main(){
  79. int T, kase = 0;
  80. for(scanf("%d",&T); T; T--) solve(++kase);
  81. return 0;
  82. }

J. Y sequence

容斥+迭代

迭代枚举答案\(m\),然后计算删掉的个数,对于每个指数\(pw\)计算一遍,删掉的数量是\(pow(m,\frac{1}{pw})\),发现是个关于因子的容斥,所以容斥系数是莫比乌斯函数

二分会T,所以用迭代来做,复杂度很玄学

  1. //#pragma GCC optimize("O3")
  2. //#pragma comment(linker, "/STACK:1024000000,1024000000")
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5. function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
  6. typedef long long int LL;
  7. const int MAXN = 111;
  8. int npm[MAXN],mu[MAXN];
  9. LL n,r;
  10. vector<int> prime;
  11. void sieve(){
  12. mu[1] = 1;
  13. for(int i = 2; i < MAXN; i++){
  14. if(!npm[i]){
  15. prime.push_back(i);
  16. mu[i] = -1;
  17. }
  18. for(int j = 0; j < (int)prime.size(); j++){
  19. if(i*prime[j]>=MAXN) break;
  20. npm[i*prime[j]] = true;
  21. mu[i*prime[j]] = -mu[i];
  22. if(i%prime[j]==0){
  23. mu[i*prime[j]] = 0;
  24. break;
  25. }
  26. }
  27. }
  28. }
  29. vector<int> pw;
  30. void prep(){
  31. pw.clear();
  32. for(int i = 0; prime[i]<=r; i++){
  33. int sz = pw.size();
  34. for(int j = 0; j < sz; j++){
  35. int np = pw[j] * prime[i];
  36. if(np>63) continue;
  37. pw.push_back(np);
  38. }
  39. pw.push_back(prime[i]);
  40. }
  41. }
  42. LL f(LL m){
  43. LL tot = 0;
  44. for(auto p : pw) tot += mu[p] * ((LL)pow(m+.5,1./p) - 1);
  45. return m-1+tot;
  46. }
  47. void solve(){
  48. scanf("%I64d %I64d",&n,&r);
  49. prep();
  50. LL tmp = f(n), ret = n;
  51. while(tmp<n){
  52. ret += n - tmp;
  53. tmp = f(ret);
  54. }
  55. printf("%I64d\n",ret);
  56. }
  57. int main(){
  58. sieve();
  59. int T;
  60. for(scanf("%d",&T); T; T--) solve();
  61. return 0;
  62. }

K. Solid Geometry Homework

L. Circles Game

只会口胡

圆扫描线+树上删边游戏

2015 Multi-University Training Contest 1(7/12)的更多相关文章

  1. 2015 Multi-University Training Contest 10(9/11)

    2015 Multi-University Training Contest 10 5406 CRB and Apple 1.排序之后费用流 spfa用stack才能过 //#pragma GCC o ...

  2. (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb)

    (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb) 关键词:mysql日志文件,mysqldumpslow分析工具 目录:日志文件的分类 1. ...

  3. Django 2.0.1 官方文档翻译: 编写你的第一个 Django app,第七部分(Page 12)

    编写你的第一个 Django app,第七部分(Page 12)转载请注明链接地址 本节教程承接第六部分(page 11)的教程.我们继续开发 web-poll应用,并专注于自定义django的自动生 ...

  4. 【每日Scrum】第二天(4.12) TD学生助手Sprint1站立会议

    TD学生助手Sprint1站立会议(4.12) 任务看板 站立会议内容 组员 昨天 今天 困难 签到 刘铸辉 (组长) 做了几个Sqlite编辑事件导入数据库没成功,就编辑图片滑动显示功能 今天学习了 ...

  5. (3)Linux命令分类汇总(7~12)

    Linux命令分类汇总(7~12) (七)用户管理命令(12个) 1    useradd cdgs   添加用户. 2     usermod 修改系统已经存在的用户属性. 3    userdel ...

  6. Partition(hdu4651)2013 Multi-University Training Contest 5----(整数拆分一)

    Partition Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  7. 2015暑假多校联合---Expression(区间DP)

    题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=5396 Problem Description Teacher Mai has n numb ...

  8. 2015暑假多校联合---Cake(深搜)

    题目链接:HDU 5355 http://acm.split.hdu.edu.cn/showproblem.php?pid=5355 Problem Description There are m s ...

  9. 2015暑假多校联合---Friends(dfs枚举)

    原题链接 Problem Description There are n people and m pairs of friends. For every pair of friends, they ...

随机推荐

  1. CSS 奇技淫巧:动态高度过渡动画

    这个问题源自于掘金上的一个留言,一个朋友问到,为什么我下面这段代码的高度过渡动画失效了? 伪代码大概是这样: { height: unset; transition: all 0.3s linear; ...

  2. Ocelot一个优秀的.NET API网关框架

    1 什么是Ocelot? Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fab ...

  3. zabbix 4.X 版本 web字体显示方块

    先看看问题长啥样...... Zabbix 字体乱码(显示呈现方块) 第一种解决方法: # 1) 进入代码存放目录的字体目录: cd /data/www/zabbix/assets/fonts # 2 ...

  4. 深入汇编指令理解Java关键字volatile

    volatile是什么 volatile关键字是Java提供的一种轻量级同步机制.它能够保证可见性和有序性,但是不能保证原子性 可见性 对于volatile的可见性,先看看这段代码的执行 flag默认 ...

  5. zookeeper读取事务日志、快照日志

    zookeeper的事务日志的格式如 log.xxx, xxx表示顺序序号 我使用的zookeeper版本:3.5.5 事务日志 执行命令 java -cp .:/tmp/zookeeper-3.5. ...

  6. 安装sendmail

    yum install -y sendmail yum install -y sendmail-cf 启动 service sendmail start 发送邮件 cat nihao.txt |mai ...

  7. yum配置文件下使用自定义变量

    yum的配置文件中,可以使用的变量,简称为yum变量: 默认的yum变量有: $releasever(Release Version),发行版的版本 $arch,CPU体系结构,通过 Python 的 ...

  8. hive窗口函数/分析函数详细剖析

    hive窗口函数/分析函数 在sql中有一类函数叫做聚合函数,例如sum().avg().max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的.但是有时 ...

  9. vue href url地址写法

  10. U盘UEFI+GPT模式安装CentOS7.X系统

    1.制作CentOS7安装盘 还是老套路,开局先制作安装盘,UltraISO软碟通,上图   (1) 打开UltraISO软件,选择"文件"-> "打开" ...