清北刷题10.23night
NOIP 模拟赛
张若天
年 ⽉ ⽇
题⽬名称 监听 实验室 ⽂明
可执⾏⽂件名 monitor lab civilization
输⼊⽂件名 monitor.in lab.in civilization.in
输出⽂件名 monitor.out lab.out civilization.out
每个测试点时限 秒 秒 秒
内存限制 256MB 256MB 256MB
测试点数⽬
每个测试点分值
是否有 Special Judge ⽆ ⽆ ⽆
题⽬类型 传统型 传统型 传统型
是否有附加⽂件 否 否 否
C++ 语⾔⽂件名后缀 cpp cpp cpp
C 语⾔⽂件名后缀 c c c
Pascal 语⾔⽂件名后缀 pas pas pas
编译开关
对于 C++ 语⾔ -lm
对于 C 语⾔ -lm
全部题⽬使⽤⽂件输⼊输出,评测环境 Cena。
考试时间 .5h。
忘了什么时候开始
到清晨才能⼊睡
也忘了什么叫做结尾
又有谁在乎呢
凌晨三点的窗前
播放着那段时光
有⼀个骄傲的少年
隐藏他的青春
— 张希/曹⽅《认真地老去》 监听
monitor.in/.out/.cpp
弱小和⽆知不是⽣存的障碍,拖延症才是。
【背景】
不阅读本题的【背景】并不影响通过本题。
三体信息中没有包含对三体⼈⽣物形态的任何描述,⼈类要在四百多年
以后才能真正看到三体⼈。在阅读信息时,叶⽂洁只能把三体⼈想象成⼈类
的形象。
号监听站已经存在了上千年,像这样的监听站,在三体世界中有
⼏千个,它们全神贯注地聆听着宇宙间可能存在的智慧⽂明的信息。
最初监听站中有上百名监听员,但随着技术的进步,现在只有⼀个⼈值
守了。监听员是⼀个卑微的职业,他们虽然⾝处恒温且能保证⽣活供给的监
听室中,在乱世纪不必脱⽔,但他们的⽣命也就在这⼩⼩的空间中流逝,能
够享受到的恒纪元快乐⽐其他⼈要少得多。
号监听员投过⼩⼩的床⼦看着外⾯的三体世界,这是乱纪元的⿊
夜,巨⽉还没有升起来,⼤多数⼈都处于脱⽔的冬眠中,甚⾄植物也本能地
脱⽔了,成了附着于地表没有⽣命的⼀束⼲纤维。星光下,⼤地看上去像⼀
⼤块冰冷的⾦属。
这是最孤寂的时刻,在静静的午夜,宇宙向它的聆听者展⽰着⼴漠的荒
凉。 号监听员最不愿意看的,就是显⽰器上缓缓移动的那条曲线,那是
监听系统接收到的宇宙电波的波形,⽆意义的噪声。他感到这条⽆限长的线
就是宇宙的抽象,⼀头连着⽆限的过去,另⼀头连着⽆限的未来,中间只有
为⽆规律⽆⽣命的随机起伏。⼀个个⾼低错落的波峰就像⼀粒粒⼤⼩不等的
沙⼦,整条线就像是所有沙粒排成⾏形成的⼀维沙漠,荒凉寂寥,长得令⼈
⽆法忍受。你可以沿着它向前向后⾛⽆限远,但永远找不到归宿。
【问题描述】
监听的宇宙电波可以抽象成⼀个长度为 L 的⼩写字母组成的字符串。 同时在三体⼈总结出来了 n 段敏感电波的样⼦,每段敏感电波的长度
都是 m。
现在请你实现⼀个程序,求出在这长度为 L 的⼩写字母组成的字符串
中某个敏感电波第⼀次出现的位置(位置从 开始计数) 。
如果从头到尾,没有任何敏感电波出现,输出”no”(不带双引号) 。
【输入格式】
第⼀⾏三个整数 L, n, m。
接下来 n ⾏,每⾏⼀个长度为 m 的字符串,表⽰敏感电波。
接下来⼀⾏,⼀个长度为 L 的字符串,表⽰监听到的电波。
【输出格式】
输出⼀个整数或者⼀个字符串”no”(不带双引号) 。
【样例输入 】 aba
cba
abc
aaabbabcaba
【样例输出 】 【样例输入 】 aba
cba
abc aaabbabzabz
【样例输出 】
no
【数据规模及约定】
对于前 % 的数据, ≤ L ≤ , ≤ n ≤ , ≤ m ≤ 。
对于前 % 的数据, ≤ L ≤ , ≤ n ≤ , ≤ m ≤ 。
对于另外 % 的数据,n = 。
对于前 % 的数据, ≤ L ≤ , ≤ n ≤ , ≤ m ≤ 。 实验室
lab.in/.out/.cpp
光锥之内都是新闻。
【背景】
不阅读本题的【背景】并不影响通过本题。
《时间之外的往事》(节选) 弯曲空间的动⼒
这个宇宙的空间并不是平坦的,⽽是存在着曲率,如果把宇宙的整体想
象为⼀张⼤膜,这张膜的表⾯是弧形的,整张膜甚⾄可能是⼀个封闭的肥皂
泡。虽然膜的局部看似平⾯,但空间曲率还是⽆处不在。
早在公元世纪,曾出现过许多极富野⼼的宇宙航⾏设想,其中之⼀就是
空间折叠。设想把⼤范围空间的曲率⽆限增⼤,像⼀张纸⼀样对折,把“纸
⾯”上相距千万光年的遥远的两点贴在⼀起。这个⽅案严格说来不应称为宇
宙航⾏,⽽应该叫做。 “宇宙拖曳” ,因为它实质上并不是航⾏到⽬的地,⽽是
通过改变空间曲率把⽬的地花过来。
这种⽓吞宇宙的事只有上帝才做得⼭来. 如果加上基本理论的限制.
可能上帝也不⾏。
对于利⽤空间曲率航⾏,后来又出现了⼀个更温和更局部的设想,⼀艘
处于太空中的飞船,如果能够⽤某种⽅式把它后⽽的⼀部分空间熨平,减⼩
其曲率、那么飞船就会被前⽅曲率史⼤的空间拉过去,这就是曲率驱动。
曲率驱动不可能像空间折叠那样瞬间到达⽬的地,但却有可能使飞船以
⽆限接近光速的速度航⾏。
但直到云天明情报被正确解读前,曲率驱动仍是⼀个幻想,同上百个光
速飞⾏的幻想⽅案⼀样, ⽆论从理论上还是技术上, 没有⼈知道它是否可⾏。
【问题描述】
沿着着曲率驱动的思路,R 君开发出了时间旅⾏传送门。
R 君将 n- 个时间旅⾏传送门部署到了 n 个星球。如果只⾛这 n- 个
时间旅⾏传送门,R 君发现这 n 个星球是两两可达的(也就是⼀棵树) 。 但是时间旅⾏传送门除了传送的功能外还额外有着时间旅⾏的功能,⽐
如说 (X i , Y i , T i ) 这个传送门,通过这个传送门从 X i 到 Y i 时间就会增加
T i (T i 可正可负),通过这个传送门从 Y i 到 X i 时间就会减少 T i (T i 可正可
负)。
现在 R 君关⼼的问题是从 x 星球能不能通往 y 星球,同时时间恰好增
加 z(z 可正可负) 。
由于现在是⼀个树形的结构,所以实际上两点之间的路径唯⼀,所以 R
君很快写了个程序计算出了这个结果。
但是随着 R 君继续部署传送门,这个问题变得复杂了起来,所以请你
来帮帮忙。
【输入格式】
第⼀⾏两个整数 n,q。q 表⽰之后处理的事件的数量。
接下来 n- ⾏,每⾏三个整数 x i ,y i ,T i 。
接下来 q ⾏,每⾏四个正整数 k, x, y, t。
若 k=,表⽰部署⼀个新的传送门 (x,y,t)。
若 k=,表⽰询问是否可以从 x 到 y,使得时间恰好增加 t。
【输出格式】
对于每个 k= 的询问,输出⼀⾏⼀个答案 yes/no。 (⼩写)
【样例输入】 - 【样例输出】
yes
no
no
yes
【样例解释】
添加 (,,-) 后可以从 ->->->->->->->, 时间变化是 ++-
(-)+++=。
【数据规模及约定】
对于前 % 的数据, ≤ n ≤ , ≤ q ≤ , |T i | ≤ 。
对于另外 % 的数据,不存在 k= 的输⼊。
对于另外 % 的数据,只存在⼀条 k= 的输⼊。
对于前 % 的数据, ≤ n ≤ , ≤ q ≤ × , |T i | ≤ 。 文明
civilization.in/.out/.cpp
给岁月以⽂明,⽽不是给⽂明以岁月。
【背景】
不阅读本题的【背景】并不影响通过本题。
罗辑那边的⽕星升了起来并来回移动,显然是他站起⾝来踱步,在地球
上是可以的,但在宇宙中不⾏,下⾯我们引⼊⼀个重要概念:猜疑链。挺怪
的词⼉。我开始仅得到这么⼀个词,她没有解释,但我后来终于从字⾯上推
测出了它的含义。他?他是谁?后⾯再说吧,我们继续:如果你认为我是善
意的,这并不是你感到安全的理由,因为按照第⼀条公理,善意⽂明并不能
预先把别的⽂明也想成善意的,所以,你现在还不知道我是怎么认为你的,
你不知道我认为你是善意还是恶意;进⼀步,即使你知道我把你也想象成善
意的,我也知道你把我想象成善意的,但是我不知道你是怎么想我怎么想你
怎么想我的,挺绕的是不是?这才是第三层,这个逻辑可以⼀直向前延伸,
没完没了。我懂你的意思。这就是猜疑链。这种东西在地球上是见不到的。
⼈类共同的物种、相近的⽂化、同处⼀个相互依存的⽣态圈、近在咫尺的距
离,在这样的环境下,猜疑链只能延伸⼀⾄两层就会被交流所消解。但在太
空中,猜疑链则可能延伸得很长,在被交流所消解之前,⿊暗战役那样的事
已经发⽣了。
【问题描述】
R 君在继续着宇宙社会学的研究,R 君发现是否为善意的⽂明与他们的
距离到本⽂明的距离的奇偶有很⼤的关系。
所以 R 君提出了如下简化的问题,考虑⼀个 n 个节点带边权的树,两
点间距离是两点间树上路径的边权和。
R 君想知道对于⼀个点来说,到这个点是距离奇数的节点的距离和,与
到这个点距离是偶数的节点的距离和。 【输入格式】
第⼀⾏包含两个整数 n, q。q 表⽰询问数量。
接下来 n- ⾏,每⾏三个数字 (x,y,z) 表⽰ x 与 y 之间的距离是 z。
接下来 q ⾏,每⾏⼀个整数 x,表⽰询问的节点为 x。
【输出格式】
输出包含 q ⾏,每⾏两个整数,分别表⽰距离为奇数的节点的距离和与
距离为偶数的节点的距离和。
【样例输入】 【样例输出】 【样例解释】
每个点到 号点的距离:,,,
每个点到 号点的距离:,,,
每个点到 号点的距离:,,, 每个点到 号点的距离:,,,
【数据规模和约定】
对于前 % 的数据, ≤ n ≤ 。
对于前 % 的数据, ≤ n ≤ 。
对于前 % 的数据, ≤ n ≤ × 。
对于前 % 的数据, ≤ n ≤ , q ≤ n, ≤ z ≤ 。 (完)
题面
/*
string + map 水过
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<map> #define N 100007 using namespace std;
int n,m,l,ans,cnt;
string s[];
map<string,bool>vis;
string ss; int main()
{
freopen("monitor.in","r",stdin);
freopen("monitor.out","w",stdout);
scanf("%d%d%d",&l,&n,&m);
for(int i=;i<=n;i++)
cin>>s[i],vis[s[i]]=;
cin>>s[];
for(int i=;i<=l-m;i++)
{
ss=s[].substr(i,m);
if(vis[ss]){ans=i+;break;}
}
if(!ans) printf("no\n");
else printf("%d\n",ans);
fclose(stdin);fclose(stdout);
return ;
}
/*
各种情况分析,由于路径权值的相反性
只要有环,要么不走,要么等效完整走整数遍。
假设有k个环,每个环的边权和为xi,那么问题转化为
不定方程a*x1+b*x2+c*x3+....+m*xk=T是否存在整数解。
根据不定方程整数解的条件可知,gcd(x1~xm) | T 时有,否则无。
*/
#include<bits/stdc++.h> #define N 411111
#define ll long long using namespace std;
int n,q;
ll sum[N];
int toedge[N],cnt;
struct Edge
{
int to,val,next;
};
Edge edge[N<<]; int read()
{
int ret=,neg=;
char c=getchar();
while (c<'' || c>''){if (c=='-') neg=-;c=getchar();}
while (c>='' && c<=''){ret=ret*+c-'';c=getchar();}
return ret*neg;
} ll SUM(int x,int y){return sum[y]-sum[x];}
ll Abs(ll x){return x> ? x : -x;}
ll gcd(ll x,ll y){return (y==) ? x : gcd(y,x%y);} void add(int from,int to,int val)
{
edge[++cnt]=(Edge)
{
to,val,toedge[from]
};
toedge[from]=cnt;
} void dfs(int x,int fa)
{
for (int i=toedge[x]; i; i=edge[i].next)
{
int to=edge[i].to;
if (to==fa) continue;
sum[to]=sum[x]+edge[i].val;
dfs(to,x);
}
} int main()
{
freopen("lab.in","r",stdin);
freopen("lab.out","w",stdout);
n=read();q=read();
int x,y,z;
for (int i=; i<n; i++)
{
x=read();y=read();z=read();
add(x,y,z);add(y,x,-z);
}
dfs(,);int k,t;ll xun=-;
for (int i=; i<=q; i++)
{
k=read();x=read();y=read();t=read();
if (k==)
{
ll tmp=SUM(y,x);
if (xun==-) xun=Abs(tmp+t);
else if (tmp+t!=) xun=gcd(xun,Abs(tmp+t));
}
else
{
ll tmp=Abs((ll)t-SUM(x,y));
if (xun==-)
if (tmp==) puts("yes");
else puts("no");
else if (tmp%xun==) puts("yes");
else puts("no");
}
}
}
#include<iostream>
#include<cstdio>
#include<cstring> #define N 100007
#define ll long long using namespace std;
ll n,m,ans1,ans2,cnt,tot;
ll x,y,z,q;
ll head[N],deep[N],sum[N],f[N][];
ll in[N],F[N][],son[N][];
struct edge{
ll u,v,w,nxt;
}e[N<<]; inline ll read()
{
ll x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} inline void add(int u,int v,int w)
{
e[++cnt].v=v;e[cnt].w=w;e[cnt].nxt=head[u];head[u]=cnt;
} void dfs(int now,int fa,int c)
{
f[now][]=fa;deep[now]=c;
for(int i=head[now];i;i=e[i].nxt)
{
int v=e[i].v;
if(v==fa) continue;
sum[v]=sum[now]+e[i].w;
dfs(v,now,c+);
}
} void get()
{
for(int j=;j<=;j++) for(int i=;i<=n;i++)
f[i][j]=f[f[i][j-]][j-];
} int lca(int a,int b)
{
if(deep[a]<deep[b]) swap(a,b);
int t=deep[a]-deep[b];
for(int i=;i<=t;i++)
if(t&(<<i)) a=f[a][i];
if(a==b) return a;
for(int i=;i>=;i--)
if(f[a][i]!=f[b][i])
a=f[a][i],b=f[b][i];
return f[a][];
} void solve1()
{
dfs(,,);get();
for(int i=;i<=m;i++)
{
tot=ans1=ans2=;
q=read();
for(int j=;j<=n;j++)
{
if(j==q) continue;
int res=lca(q,j);
tot=sum[q]+sum[j]-*sum[res];
if(tot%) ans1+=tot;
else ans2+=tot;
}
cout<<ans1<<" "<<ans2<<endl;
}
} void dp(int u,int from)//0 偶数
{
son[u][]=son[u][]=;
for(int i=head[u];i;i=e[i].nxt)
{
int v=e[i].v;
if(v==from) continue;dp(v,u);
if(e[i].w%==)
{
son[v][]++;
if(in[v]==)
{
son[v][]++;son[u][]++;
F[u][]+=e[i].w*son[v][];
F[u][]+=e[i].w*son[v][];
}
else
{
son[u][]+=son[v][],son[u][]+=son[v][];
F[u][]+=F[v][]+e[i].w*son[v][];
F[u][]+=F[v][]+e[i].w*son[v][];
F[u][]+=e[i].w;
}
}
else
{
son[v][]++;
if(in[v]==)
{
son[v][]++;son[u][]++;
F[u][]+=e[i].w*son[v][];
F[u][]+=e[i].w*son[v][];
}
else
{
son[u][]+=son[v][],son[u][]+=son[v][];
F[u][]+=F[v][]+e[i].w*son[v][];
F[u][]+=F[v][]+e[i].w*son[v][];
F[u][]+=e[i].w;
}
}
}
} void solve2()
{
for(int i=;i<=m;i++)
{
q=read();
memset(f,,sizeof F);
memset(son,,sizeof son);
dp(q,q);
cout<<F[q][]<<" "<<F[q][]<<endl;
}
} int main()
{
freopen("civilization.in","r",stdin);
freopen("civilization.out","w",stdout);
n=read();m=read();
for(int i=;i<n;i++)
{
x=read();y=read();z=read();
add(x,y,z);add(y,x,z);
}
if(n<=) solve1();
else solve2(); fclose(stdin);fclose(stdout);
return ;
}
40暴力
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; // 70%保证答案不爆int int n,q;
int H[], X[], P[], w[], tot; inline void add(int x,int y,int z)
{
P[++tot]=y;
X[tot]=H[x];
H[x]=tot;
w[tot]=z;
}
typedef long long LL;
LL f[][]; // 子树
LL ans[][];
int siz[][]; // 子树
int siz2[][]; // 整棵树 void dfs1(int x,int fa)
{
siz[][x] = ;
for(int i=H[x]; i; i=X[i])
{
if(P[i] == fa) continue;
dfs1(P[i],x);
if(w[i]&)
{
siz[][x] += siz[][P[i]];
siz[][x] += siz[][P[i]];
f[][x] += f[][P[i]] + w[i]*siz[][P[i]];
f[][x] += f[][P[i]] + w[i]*siz[][P[i]];
}
else
{
siz[][x] += siz[][P[i]];
siz[][x] += siz[][P[i]];
f[][x] += f[][P[i]] + w[i]*siz[][P[i]];
f[][x] += f[][P[i]] + w[i]*siz[][P[i]];
}
}
} void dfs2(int x,int fa)
{
for(int i=H[x]; i; i=X[i])
{
if(P[i]==fa) continue;
if(w[i]&)
{
siz2[][P[i]] = siz2[][x];
siz2[][P[i]] = siz2[][x];
ans[][P[i]] = f[][P[i]] + ans[][x] - (f[][P[i]]+w[i]*siz[][P[i]]) + w[i]*(siz2[][x]-siz[][P[i]]) ;
ans[][P[i]] = f[][P[i]] + ans[][x] - (f[][P[i]]+w[i]*siz[][P[i]]) + w[i]*(siz2[][x]-siz[][P[i]]) ;
}
else
{
siz2[][P[i]] = siz2[][x];
siz2[][P[i]] = siz2[][x];
ans[][P[i]] = f[][P[i]] + ans[][x] - (f[][P[i]]+w[i]*siz[][P[i]]) + w[i]*(siz2[][x]-siz[][P[i]]) ;
ans[][P[i]] = f[][P[i]] + ans[][x] - (f[][P[i]]+w[i]*siz[][P[i]]) + w[i]*(siz2[][x]-siz[][P[i]]) ;
}
dfs2(P[i],x);
}
} int main()
{
freopen("civilization.in", "r", stdin);
freopen("civilization.out", "w", stdout);
scanf("%d%d",&n,&q);
for(int i=,x,y,z; i<n; i++)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);add(y,x,z);
}
dfs1(,);
ans[][] = f[][];ans[][] = f[][];
siz2[][] = siz[][];siz2[][] = siz[][];
dfs2(,); int x;
while(q--)
{
scanf("%d",&x);
printf("%lld %lld\n",ans[][x],ans[][x]);
}
fclose(stdout);
return ;
}
正解待补档
清北刷题10.23night的更多相关文章
- 10.27night清北刷题班
/* 枚举每个部分的总和,利用前缀和进行检验. 如果能分成4部分就一定能分成2部分,就筛了一边素数优化.清空数组!!! */ #include<bits/stdc++.h> #define ...
- 清北刷题冲刺 10-30 a.m
星空 #include<iostream> #include<cstdio> using namespace std; int n,m; int main(){ freopen ...
- 清北刷题冲刺 10-28 p.m
水题(贪心) (water) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK出了道水题. 这个水题是这样的:有两副牌,每副牌都有n张. 对于第一副牌的每 ...
- 2017-10-4 清北刷题冲刺班p.m
P102zhx a [问题描述]你是能看到第一题的 friends 呢.——hja两种操作:1.加入一个数.2.询问有多少个数是?的倍数.[输入格式]第一行一个整数?,代表操作数量.接下来?行,每行两 ...
- 2017-10-4 清北刷题冲刺班a.m
P101zhx a [问题描述]你是能看到第一题的 friends 呢.——hjaHja 拥有一套时光穿梭技术,能把字符串以超越光速的速度传播,但是唯一的问题是可能会 GG.在传输的过程中,可能有四种 ...
- 2017-10-3 清北刷题冲刺班p.m
a [问题描述]你是能看到第一题的 friends 呢.——hja给你一个只有小括号和中括号和大括号的括号序列,问该序列是否合法.[输入格式]一行一个括号序列.[输出格式]如果合法,输出 OK,否则输 ...
- 2017-10-3 清北刷题冲刺班a.m
P99zhx a [问题描述]你是能看到第一题的 friends 呢.——hja怎么快速记单词呢?也许把单词分类再记单词是个不错的选择.何大爷给出了一种分单词的方法,何大爷认为两个单词是同一类的当这两 ...
- 2017-10-2 清北刷题冲刺班a.m
一道图论神题 (god) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只 ...
- 2017-10-2 清北刷题冲刺班p.m
最大值 (max) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n ...
随机推荐
- 使用JS对form的内容验证失败后阻止提交
1.form的两个事件 submit,提交表单,如果直接调用该函数,则直接提交表单 onSubmit,提交按钮点击时先触发,然后触发submit事件.如果不加控制的话,默认返回true,因此表单总能提 ...
- HDU4463-Outlets,简单最小生成树。1A水过~~
Outlets ...
- [Zabbix] 如何实现邮件报警通知以及免费短信报警通知
版权声明:本文为博主原创文章,未经博主允许不得转载. 前提条件: (1) zabbix服务器端已经成功安装并且运行. (2) zabbix客户端已经成功建立并且运行. 1 下载并且安装msmtp软件 ...
- [K/3Cloud] 在设计时复制已有表单菜单或菜单项快速建立菜单
1.打开已有表单XML,找到FormAppearance的Menu节点,按Ctrl+C复制 <Appearances> <FormAppearance ElementType=&qu ...
- Ftp启动与关闭
//启动 service vsftpd start //关闭 service vsftpd stop 查看进程 ps -ef | grep ftp root : ? :: /usr/sbin/vsft ...
- 【HDOJ4322】Candy(费用流)
题意:给N个孩子分配M个糖果. 有一个N*M的矩阵表示孩子和糖果的关系,若第i行第j列的数是1则表示第i个孩子喜欢第j个糖果,反之不喜欢. 已知,若一个孩子被分配到他喜欢的糖果那么他将获得K的快乐值, ...
- 新vim配置文件
"******************************************************特殊设置************************************ ...
- vim状态栏的扩充
将以下内容添加到~/.vimrc文件中: set statusline= set statusline+=%7*\[%n] " ...
- 显示锁ReentrantLock和Condition的使用
一.ReentrantLock (1).java.util.concurrent.locks包中的ReentrantLock就是重入锁,它实现了Lock接口,Lock加锁和解锁都是显示的.Reentr ...
- Nginx+Tomcat+Memcached负载均衡和session共享
1. 演示搭建 说明:本文参考网络日志http://blog.csdn.net/remote_roamer/article/details/51133790,结合实际操作,仅做个演示记录. 1.1. ...