A - Digit Sum 2

从高位到低位数的第i位以前前缀都相同,第i位比当前位上的数小1的情况下,后面都填9

枚举一下然后计算最大的就好

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define enter putchar('\n')
#define space putchar(' ')
#define MAXN 100005
//#define ivorysi
using namespace std;
typedef long long int64;
typedef double db;
template<class T>
void read(T &res) {
res = 0;char c = getchar();T f = 1;
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') {
res = res * 10 + c - '0';
c = getchar();
}
res *= f;
}
template<class T>
void out(T x) {
if(x < 0) {x = -x;putchar('-');}
if(x >= 10) {
out(x / 10);
}
putchar('0' + x % 10);
}
int64 N;
int x[25],tot;
int main() {
#ifdef ivorysi
freopen("f1.in","r",stdin);
#endif
read(N);
while(N) {
x[++tot] = N % 10;
N /= 10;
}
int ans = 0,sum = 0;
for(int i = tot ; i >= 1 ; --i) {
ans = max(ans,sum + x[i] - 1 + (i - 1) * 9);
sum += x[i];
}
ans = max(ans,sum);
out(ans);enter;
return 0;
}

B - Holes

如果两个点的话或者所有点共线的话两个端点各是0.5

我们给这些点求一个凸包,由于半径是无穷大,我们只关心凸包上的点相邻两边做垂直平分线交出来的角除以2PI的值

这个值可以用PI减去凸包上的顶角求出来

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define enter putchar('\n')
#define space putchar(' ')
#define MAXN 100005
#define eps 1e-8
//#define ivorysi
using namespace std;
typedef long long int64;
typedef double db;
template<class T>
void read(T &res) {
res = 0;char c = getchar();T f = 1;
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') {
res = res * 10 + c - '0';
c = getchar();
}
res *= f;
}
template<class T>
void out(T x) {
if(x < 0) {x = -x;putchar('-');}
if(x >= 10) {
out(x / 10);
}
putchar('0' + x % 10);
}
const db PI = acos(-1.0);
int N,top;
db ans[105];
bool dcmp(db a,db b) {
return fabs(b - a) <= eps;
}
struct Point {
db x,y;int id;
Point(db _x = 0.0,db _y = 0.0) {
x = _x;y = _y;
}
friend Point operator + (const Point &a,const Point &b) {
return Point(a.x + b.x,a.y + b.y);
}
friend Point operator - (const Point &a,const Point &b) {
return Point(a.x - b.x,a.y - b.y);
}
friend Point operator * (const Point &a,const db &d) {
return Point(a.x * d,a.y * d);
}
friend db operator * (const Point &a,const Point &b) {
return a.x * b.y - a.y * b.x;
}
friend db dot(const Point &a,const Point &b) {
return a.x * b.x + a.y * b.y;
}
db norm() {
return sqrt(x * x + y * y);
}
}P[105],sta[105]; bool cmp(Point a,Point b) {
db d = (a - P[1]) * (b - P[1]);
if(dcmp(d,0.0)) {return (a - P[1]).norm() < (b - P[1]).norm();}
else return d > 0;
}
int main() {
#ifdef ivorysi
freopen("f1.in","r",stdin);
#endif
int x,y;
read(N);
if(N == 1) {puts("1.0");return 0;}
for(int i = 1 ; i <= N ; ++i) {read(x);read(y);P[i] = Point(x,y);P[i].id = i;}
for(int i = 2 ; i <= N ; ++i) {
if(P[i].x < P[1].x || (P[i].x == P[1].x && P[i].y < P[1].y)) swap(P[1],P[i]);
}
sort(P + 2,P + N + 1,cmp);
sta[++top] = P[1];
for(int i = 2 ; i <= N ; ++i) {
while(top >= 2 && (P[i] - sta[top - 1]) * (sta[top] - sta[top - 1]) >= 0.0) --top;
sta[++top] = P[i];
}
if(top == 2) {
ans[sta[1].id] = 0.5;
ans[sta[2].id] = 0.5;
}
else {
Point a,b;
sta[0] = sta[top];sta[top + 1] = sta[1];
for(int i = 1 ; i <= top ; ++i) {
a = sta[i + 1] - sta[i];
b = sta[i - 1] - sta[i];
ans[sta[i].id] = (PI - acos( dot(a,b) / (a.norm() * b.norm()) ) ) / (2 * PI);
}
}
for(int i = 1 ; i <= N ; ++i) {
printf("%.10lf\n",ans[i]);
}
return 0;
}

C - Tiling

按理来说是可以四个四个小块一划,如果多出来一行或者一列或者都多,就先贪心用<>填满多的一个横行,贪心用^v填满多余的一个纵行

但是有一个边界情况,就是横行纵行都剩一个,并且填满了,这个时候剩下了5个格子,有一个<>和一个^v没填

用3*3举个例子

<>^

^*v

v<>

可以这么填

也就是我们必须填多余格子的时候尽量靠右下填四个小块的时候尽量靠右上,剩出一个

**

**

*

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define enter putchar('\n')
#define space putchar(' ')
#define MAXN 100005
#define eps 1e-8
//#define ivorysi
using namespace std;
typedef long long int64;
typedef double db;
template<class T>
void read(T &res) {
res = 0;char c = getchar();T f = 1;
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') {
res = res * 10 + c - '0';
c = getchar();
}
res *= f;
}
template<class T>
void out(T x) {
if(x < 0) {x = -x;putchar('-');}
if(x >= 10) {
out(x / 10);
}
putchar('0' + x % 10);
}
int N,M,A,B,S,T;
char ans[1005][1005];
int main() {
#ifdef ivorysi
freopen("f1.in","r",stdin);
#endif
read(N);read(M);read(A);read(B);
S = N;T = M;
if(N * M < (A + B) * 2) {
puts("NO");
return 0;
}
for(int i = 1 ; i <= N ; ++i) {
for(int j = 1 ; j <= M ; ++j) {
ans[i][j] = '.';
}
}
if(M & 1) {
int t = 1;
while(B) {
if(t + 1 > N) break;
ans[t][M] = '^';
ans[t + 1][M] = 'v';
t += 2;
--B;
}
--M;
}
if(N & 1) {
int t = T;
while(A) {
if(t - 1 < 1) break;
ans[N][t] = '>';
ans[N][t - 1] = '<';
t -= 2;
--A;
}
--N;
}
int rem = N * M;
for(int i = 1 ; i <= N ; i += 2) {
for(int j = M - 1 ; j >= 1 ; j -= 2) {
if(A >= 2) {
A -= 2;
rem -= 4;
ans[i][j] = '<';
ans[i][j + 1] = '>';
ans[i + 1][j] = '<';
ans[i + 1][j + 1] = '>';
}
else if(B >= 2) {
B -= 2;
rem -= 4;
ans[i][j] = '^';
ans[i + 1][j] = 'v';
ans[i][j + 1] = '^';
ans[i + 1][j + 1] = 'v';
}
}
}
if(!A || !B || rem >= 8) {
for(int i = 1 ; i <= N ; i += 2) {
for(int j = M - 1 ; j >= 1 ; j -= 2) {
if(ans[i][j] != '.') continue;
if(A) {
--A;
ans[i][j] = '<';
ans[i][j + 1] = '>';
}
else if(B) {
--B;
ans[i][j] = '^';
ans[i + 1][j] = 'v';
}
}
}
}
else if(rem >= 4){
if(A == 1 && B == 1 && (S & 1) && (T & 1)) {
--A;--B;
ans[N - 1][1] = '<';ans[N - 1][2] = '>';
ans[N][1] = '^';ans[N + 1][1] = 'v';
}
}
if(A || B) {puts("NO");return 0;}
puts("YES");
for(int i = 1 ; i <= S ; ++i) {
for(int j = 1 ; j <= T ; ++j) {
putchar(ans[i][j]);
}
enter;
}
return 0;
}

D - Reversed LCS

这怎么一道普及组题。。。

\(dp[i][j][k]\)表示区间\([i,j]\)改了\(k\)个字符

\(dp[i + 1][j][k] -> dp[i][j][k]\)

\(dp[i][j - 1][k] -> dp[i][j][k]\)

如果\(s[i] == s[j]\)

\(dp[i - 1][j + 1][k] + 2 -> dp[i][j][k]\)

如果\(s[i] != s[j]\)

\(dp[i - 1][j + 1][k] + 2 -> dp[i][j][k + 1]\)

初始化\(dp[i][i][0] = 1\)

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define enter putchar('\n')
#define space putchar(' ')
#define MAXN 100005
#define eps 1e-8
//#define ivorysi
using namespace std;
typedef long long int64;
typedef double db;
template<class T>
void read(T &res) {
res = 0;char c = getchar();T f = 1;
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') {
res = res * 10 + c - '0';
c = getchar();
}
res *= f;
}
template<class T>
void out(T x) {
if(x < 0) {x = -x;putchar('-');}
if(x >= 10) {
out(x / 10);
}
putchar('0' + x % 10);
}
char s[305];
int K,dp[305][305][305],N;
void update(int &x,int y) {
x = max(x,y);
}
void Solve() {
scanf("%s",s + 1);
read(K);
N = strlen(s + 1);
for(int i = 1 ; i <= N ; ++i)
for(int j = 0 ; j <= K ; ++j)
dp[i][i][j] = 1;
for(int d = 2 ; d <= N ; ++d) {
for(int i = 1 ; i <= N ; ++i) {
int j = i + d - 1;
if(j > N) break;
for(int k = 0 ; k <= K ; ++k) {
if(k) update(dp[i][j][k],dp[i][j][k - 1]);
update(dp[i][j][k],dp[i + 1][j][k]);
update(dp[i][j][k],dp[i][j - 1][k]);
if(s[i] == s[j]) update(dp[i][j][k],dp[i + 1][j - 1][k] + 2);
else if(k) update(dp[i][j][k],dp[i + 1][j - 1][k - 1] + 2);
}
}
}
out(dp[1][N][K]);enter;
}
int main() {
#ifdef ivorysi
freopen("f1.in","r",stdin);
#endif
Solve();
return 0;
}

E - Ball Eat Chameleons

这道题的题意应该是这个序列建立出来吃的方式可以自己定的

我们分析一下,显然红球数必须不少于蓝球数

设红球数为\(r\),蓝球数为\(b\)

我们每个宠物都要分配至少一个红球,然后我们给\(N - 1\)个宠物都分配红球后,剩余的都给第一个,给了\(r - (N - 1)\)个

如果\(r - (N - 1) > b\),那么无论怎样红蓝的先后顺序,我都可以让所有宠物变红,那么方案数就是\(\binom{K}{r}\)

在\(r != b\)时

设\(t = r - (N - 1)\)

设红球为1,蓝球为-1,那么前缀和必须大于\(-t\)

可以这么考虑,在\(N - 1\)只宠物没有分配红球时,来一个红球就给他们吃一个,之后如果来了一个蓝球,如果吃了红球的宠物没有吃过蓝球,让它们消耗一个蓝球

假如不存在这样的情况,我们就把蓝球都喂给第一个,如果喂到了t个蓝球,那么我无法使第一只变红了,我喂给别人的话,别人也没法变红了,所以就转化成了这个问题

方案数类似卡特兰数的证明

是\(\binom{K}{r} - \binom{K}{r + t}\)

在\(r == b\)时

还是类似上述情况,我还是选择给剩下的\(N - 1\)只各喂一个红球,一个蓝球,给第一只喂\(t\)个红球和蓝球

那么我在给第一只喂满\(t\)个蓝球之前,我必须把第一只的\(t\)个红球喂满了,这就要求了这个颜色的序列的最后一个值必须是-1

我们再考虑前\(K - 1\)个位置,我必须满足前缀和大于\(-t\),那么答案就是\(\binom{K - 1}{r} - \binom{K - 1}{r + t}\)

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define enter putchar('\n')
#define space putchar(' ')
#define MAXN 500005
#define eps 1e-8
//#define ivorysi
using namespace std;
typedef long long int64;
typedef double db;
template<class T>
void read(T &res) {
res = 0;char c = getchar();T f = 1;
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') {
res = res * 10 + c - '0';
c = getchar();
}
res *= f;
}
template<class T>
void out(T x) {
if(x < 0) {x = -x;putchar('-');}
if(x >= 10) {
out(x / 10);
}
putchar('0' + x % 10);
}
const int MOD = 998244353;
int N,K,fac[MAXN * 2],invfac[MAXN * 2],inv[MAXN * 2];
int inc(int a,int b) {
return a + b >= MOD ? a + b - MOD : a + b;
}
int mul(int a,int b) {
return 1LL * a * b % MOD;
}
int C(int n,int m) {
if(n < m) return 0;
return mul(fac[n],mul(invfac[m],invfac[n - m]));
}
void update(int &x,int y) {
x = inc(x,y);
}
void Solve() {
read(N);read(K);
inv[1] = 1;
for(int i = 2 ; i <= 1000000 ; ++i) inv[i] = mul(inv[MOD % i],MOD - MOD / i);
invfac[0] = fac[0] = 1;
for(int i = 1 ; i <= 1000000 ; ++i) {
fac[i] = mul(fac[i - 1],i);
invfac[i] = mul(invfac[i - 1],inv[i]);
}
int ans = 0;
for(int i = 0 ; i <= K ; ++i) {
int r = i,b = K - i;
if(r < b || r < N) continue;
if(r - (N - 1) > b) {
update(ans,C(K,r));
}
else if(r == b) {
int t = r - (N - 1);
update(ans,inc(C(K - 1,r),MOD - C(K - 1,r + t)));
}
else {
int t = r - (N - 1);
update(ans,inc(C(K,r),MOD - C(K,r + t)));
}
}
out(ans);enter;
}
int main() {
#ifdef ivorysi
freopen("f1.in","r",stdin);
#endif
Solve();
return 0;
}

F - Trinity

考虑\(dp[i][j]\)表示\(i\)行\(j\)列方格填的方案数,多了一个限制是每行必须填一个数,所以我们枚举\(i\),累加进答案\(\binom{n}{i} dp[i][M]\)即可

我们每次考虑增加一列的方案数

\(dp[p][j]\)转移到\(dp[p + q][j + 1]\)的方案

如果\(q\)是\(0\)的话,那么我这一列就剩\(B\)和\(C\)填的方式,有\(\binom{p + 1}{2} + 1\)多出来的1个是什么也不选,我们相当于加了一行,然后在\(p + 1\)中选两个,然后删掉加的一行,这样就包含进了这一列选了一个点的情况了

如果\(q\)不为0

我们考虑\(B,C\)可能不是我们新加进去的,而是原来\(p\)行中的,我们给\(p + q\)行首尾再加上附加的两行,然后选择\(q + 2\)个染黑,作为新加入的行,方案数是\(\binom{p + q + 2}{q + 2}\)

然后把多出来的两行删掉即可,如果删掉的首尾两行都没染黑,那么这个染黑的序列,首尾两个黑格子都是原来\(p\)行中的,如果首和尾都染黑了,那么这个\(p + q\)的序列,最上和最下两个黑格子都是新加入的\(q\)行中的,如果首行黑了尾行没黑,那么\(p + q\)的序列,最上的格子是\(q\)行中的,最下的格子是\(p\)行中的,另一种情况同理

可以卷积优化,所以就变成\(O(nm \log n)\)的了

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define enter putchar('\n')
#define space putchar(' ')
#define MAXN 8005
#define eps 1e-8
//#define ivorysi
using namespace std;
typedef long long int64;
typedef double db;
template<class T>
void read(T &res) {
res = 0;char c = getchar();T f = 1;
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') {
res = res * 10 + c - '0';
c = getchar();
}
res *= f;
}
template<class T>
void out(T x) {
if(x < 0) {x = -x;putchar('-');}
if(x >= 10) {
out(x / 10);
}
putchar('0' + x % 10);
}
const int MOD = 998244353,MAXL = 1 << 14;
int N,M,fac[MAXN * 2],invfac[MAXN * 2],inv[MAXN * 2];
int f[MAXL + 5],g[MAXL + 5],dp[2][MAXN],W[MAXL + 5];
int mul(int a,int b) {
return 1LL * a * b % MOD;
}
int inc(int a,int b) {
return a + b >= MOD ? a + b - MOD : a + b;
}
int C(int n,int m) {
if(n < m) return 0;
return mul(fac[n],mul(invfac[m],invfac[n - m]));
}
int fpow(int x,int c) {
int res = 1,t = x;
while(c) {
if(c & 1) res = mul(res,t);
t = mul(t,t);
c >>= 1;
}
return res;
}
void update(int &x,int y) {
x = inc(x,y);
}
void FFT(int *p,int L,int on) {
for(int i = 1 , j = L >> 1 ; i < L - 1 ; ++i) {
if(i < j) swap(p[i],p[j]);
int k = L >> 1;
while(j >= k) {
j -= k;
k >>= 1;
}
j += k;
}
for(int h = 2 ; h <= L ; h <<= 1) {
int wn = W[(MAXL + on * (MAXL / h)) % MAXL];
for(int k = 0 ; k < L ; k += h) {
int w = 1;
for(int j = k ; j < k + h / 2 ; ++j) {
int u = p[j],t = mul(w,p[j + h / 2]);
p[j] = inc(u,t);
p[j + h / 2] = inc(u,MOD - t);
w = mul(w,wn);
}
}
}
if(on == -1) {
int InvL = fpow(L,MOD - 2);
for(int i = 0 ; i < L ; ++i) p[i] = mul(p[i],InvL);
}
}
void Solve() {
read(N);read(M);
fac[0] = 1;
for(int i = 1 ; i <= N + 10 ; ++i) fac[i] = mul(fac[i - 1],i);
invfac[N + 10] = fpow(fac[N + 10],MOD - 2);
for(int i = N + 9 ; i >= 0 ; --i) invfac[i] = mul(invfac[i + 1],i + 1);
W[0] = 1;W[1] = fpow(3,(MOD - 1) / MAXL);
for(int i = 2 ; i < MAXL ; ++i) W[i] = mul(W[i - 1],W[1]);
int cur = 0;
for(int i = 0 ; i <= N ; ++i) dp[cur][i] = 1;
for(int i = 1 ; i <= N ; ++i) g[i] = invfac[i + 2];
int L = 1;
while(L <= 2 * N) L <<= 1;
FFT(g,L,1);
for(int i = 2 ; i <= M ; ++i) {
memset(dp[cur ^ 1],0,sizeof(dp[cur ^ 1]));
for(int j = 0 ; j <= N ; ++j) {
update(dp[cur ^ 1][j],mul(dp[cur][j],inc(C(j + 1,2),1)));
}
memset(f,0,sizeof(f));
for(int j = 0 ; j <= N ; ++j) f[j] = mul(dp[cur][j],invfac[j]);
FFT(f,L,1);
for(int j = 0 ; j < L ; ++j) f[j] = mul(f[j],g[j]);
FFT(f,L,-1);
for(int j = 0 ; j <= N ; ++j) {
update(dp[cur ^ 1][j],mul(f[j],fac[j + 2]));
}
cur ^= 1;
}
int ans = 0;
for(int i = 0 ; i <= N ; ++i) {
update(ans,mul(C(N,i),dp[cur][i]));
}
out(ans);enter;
}
int main() {
#ifdef ivorysi
freopen("f1.in","r",stdin);
#endif
Solve();
return 0;
}

【AtCoder】AGC021的更多相关文章

  1. 【AtCoder】ARC092 D - Two Sequences

    [题目]AtCoder Regular Contest 092 D - Two Sequences [题意]给定n个数的数组A和数组B,求所有A[i]+B[j]的异或和(1<=i,j<=n ...

  2. 【Atcoder】CODE FESTIVAL 2017 qual A D - Four Coloring

    [题意]给定h,w,d,要求构造矩阵h*w满足任意两个曼哈顿距离为d的点都不同色,染四色. [算法]结论+矩阵变换 [题解] 曼哈顿距离是一个立着的正方形,不方便处理.d=|xi-xj|+|yi-yj ...

  3. 【AtCoder】ARC 081 E - Don't Be a Subsequence

    [题意]给定长度为n(<=2*10^5)的字符串,求最短的字典序最小的非子序列字符串. http://arc081.contest.atcoder.jp/tasks/arc081_c [算法]字 ...

  4. 【AtCoder】AGC022 F - Leftmost Ball 计数DP

    [题目]F - Leftmost Ball [题意]给定n种颜色的球各k个,每次以任意顺序排列所有球并将每种颜色最左端的球染成颜色0,求有多少种不同的颜色排列.n,k<=2000. [算法]计数 ...

  5. 【AtCoder】AGC005 F - Many Easy Problems 排列组合+NTT

    [题目]F - Many Easy Problems [题意]给定n个点的树,定义S为大小为k的点集,则f(S)为最小的包含点集S的连通块大小,求k=1~n时的所有点集f(S)的和取模92484403 ...

  6. 【AtCoder】ARC067 F - Yakiniku Restaurants 单调栈+矩阵差分

    [题目]F - Yakiniku Restaurants [题意]给定n和m,有n个饭店和m张票,给出Ai表示从饭店i到i+1的距离,给出矩阵B(i,j)表示在第i家饭店使用票j的收益,求任选起点和终 ...

  7. 【AtCoder】ARC095 E - Symmetric Grid 模拟

    [题目]E - Symmetric Grid [题意]给定n*m的小写字母矩阵,求是否能通过若干行互换和列互换使得矩阵中心对称.n,m<=12. [算法]模拟 [题解]首先行列操作独立,如果已确 ...

  8. 【Atcoder】AGC022 C - Remainder Game 搜索

    [题目]C - Remainder Game [题意]给定n个数字的序列A,每次可以选择一个数字k并选择一些数字对k取模,花费2^k的代价.要求最终变成序列B,求最小代价或无解.n<=50,0& ...

  9. 【Atcoder】AGC 020 B - Ice Rink Game 递推

    [题意]n个人进行游戏,每轮只保留最大的a[i]倍数的人,最后一轮过后剩余2人,求最小和最大的n,或-1.n<=10^5. [算法]递推||二分 [题解]令L(i),R(i)表示第i轮过后的最小 ...

随机推荐

  1. Educational Codeforces Round 38 (Rated for Div. 2) C

    C. Constructing Tests time limit per test 1 second memory limit per test 256 megabytes input standar ...

  2. 【Revit API】获取链接模型中构件

    话不多说,直接代码 var doc = commandData.Application.ActiveUIDocument.Document; FilteredElementCollector link ...

  3. 【bzoj3172】 Tjoi2013—单词

    http://www.lydsy.com/JudgeOnline/problem.php?id=3172 (题目链接) 题意 $n$个单词组成文本,问每个单词在文本中出现了几次. Solution 题 ...

  4. 解题:HNOI 2013 Cards

    题面 除了不洗牌以外,每种洗牌方式的每个循环里的颜色必须一样,然后大力背包一下就好了.最后记得把不洗牌的方案也算进去 #include<cstdio> #include<cstrin ...

  5. 洛谷P4486 Kakuro

    题意:你有一个棋盘,某些格子是限制条件,形如"从这里开始下面所有连续空格的和为a"或"从这里开始向右的所有连续空格之和为b"一个格子可以同时拥有两个限制条件. ...

  6. svn查看日志(show log)显示时间为1970的解决方法

    问题: 在修改文件后show log无法显示日志,上面的时间会自动在2016年和1970年间跳,而且设置不了时间.解决方法:1.编辑svnserve.conf,设置“anon-access=none” ...

  7. virtualenv和virtualenvwrapper介绍和使用

    virtualen介绍 virtualenv优点: 工具可以创建隔离的Python环境 . 环境升级不影响其他应用,也不会影响全局的python环境 它可以防止系统中出现包管理混乱和版本的冲突 vir ...

  8. 鸟哥的Linux私房菜——第十三章:Vim编译器

    视频链接: 土豆: B站:http://www.bilibili.com/video/av9891085/ 本章的细节还是挺多的,可是我懒啊~~

  9. JavaScript中函数和类(以及this的使用<重点>,以及js和jquery讲解,原生js实现jquery)

    1.javascript中以函数来表示类: 一般函数是小写开头:function foo() 类开头是大写:function Foo() 实例化类: obj = new Foo() 其他属性就同类是一 ...

  10. javascript惰性函数

    惰性函数:所谓惰性函数就是创建了一个新函数并且将其分配给保存了另外函数的同一个变量,就以一个新函数覆盖了旧函数.某种程度上,回收了旧函数指针以指向一个新函数. 板栗: var scareMe = fu ...