A - Two Abbreviations

如果有最小答案的话这个答案一定是N和M的lcm

我们考虑一下什么情况下

\(k \frac{L}{N} = h \frac{L}{M}\)且\(k,g\)互质

显然是在\(k = \frac{N}{gcd(N,M)},h = \frac{M}{gcd(N,M)}\)的时候成立

我们只要不断枚举\(k * i,h * i\)判断两个串里这个位置的数是否相同即可

代码

  1. #include <bits/stdc++.h>
  2. #define fi first
  3. #define se second
  4. #define pii pair<int,int>
  5. #define mp make_pair
  6. #define pb push_back
  7. #define enter putchar('\n')
  8. #define space putchar(' ')
  9. //#define ivorysi
  10. #define MAXN 100005
  11. typedef long long int64;
  12. using namespace std;
  13. template<class T>
  14. void read(T &res) {
  15. res = 0;char c = getchar();T f = 1;
  16. while(c < '0' || c > '9') {
  17. if(c == '-') f = -1;
  18. c = getchar();
  19. }
  20. while(c >= '0' && c <= '9') {
  21. res = res * 10 + c - '0';
  22. c = getchar();
  23. }
  24. res *= f;
  25. }
  26. template<class T>
  27. void out(T x) {
  28. if(x < 0) {x = -x;putchar('-');}
  29. if(x >= 10) {
  30. out(x / 10);
  31. }
  32. putchar('0' + x % 10);
  33. }
  34. int64 N,M;
  35. char S[MAXN],T[MAXN];
  36. int64 gcd(int64 a,int64 b) {
  37. return b == 0 ? a : gcd(b,a % b);
  38. }
  39. int64 lcm(int64 a,int64 b) {
  40. return a * b / gcd(a,b);
  41. }
  42. void Solve() {
  43. read(N);read(M);
  44. scanf("%s",S + 1);scanf("%s",T + 1);
  45. int64 c = lcm(N,M);
  46. int64 a = c / M,b = c / N;
  47. for(int i = 0 ; i <= N ; ++i) {
  48. if(i * a + 1 > N || i * b + 1 > M) break;
  49. if(S[i * a + 1] != T[i * b + 1]) {puts("-1");return;}
  50. }
  51. out(c);enter;
  52. }
  53. int main() {
  54. #ifdef ivorysi
  55. freopen("f1.in","r",stdin);
  56. #endif
  57. Solve();
  58. return 0;
  59. }

B - Removing Blocks

我计数计的挺麻烦的

我是对于每一段统计一下这一段会被哪些序列统计到

显然对于长度为K的一个段,除掉最靠前的一段和最靠后的一段,中间的每个段,如果这一段被取了,那么这个操作序列必定包含一个子序列,就是这一段两侧被提前取了,中间是K个数的任意排列

然后我们对于每个长度特殊处理最前一段和最后一段(因为他们的端点只有一个),对于中间的序列计算排列个数,而中间序列的代价总和可以通过前缀和的前缀和快速算出来

代码

  1. #include <bits/stdc++.h>
  2. #define fi first
  3. #define se second
  4. #define pii pair<int,int>
  5. #define mp make_pair
  6. #define pb push_back
  7. #define enter putchar('\n')
  8. #define space putchar(' ')
  9. //#define ivorysi
  10. #define MAXN 100005
  11. typedef long long int64;
  12. using namespace std;
  13. template<class T>
  14. void read(T &res) {
  15. res = 0;char c = getchar();T f = 1;
  16. while(c < '0' || c > '9') {
  17. if(c == '-') f = -1;
  18. c = getchar();
  19. }
  20. while(c >= '0' && c <= '9') {
  21. res = res * 10 + c - '0';
  22. c = getchar();
  23. }
  24. res *= f;
  25. }
  26. template<class T>
  27. void out(T x) {
  28. if(x < 0) {x = -x;putchar('-');}
  29. if(x >= 10) {
  30. out(x / 10);
  31. }
  32. putchar('0' + x % 10);
  33. }
  34. const int MOD = 1000000007;
  35. int N,A[MAXN],fac[MAXN],invfac[MAXN],inv[MAXN],sum[MAXN],sum_of_sum[MAXN];
  36. int inc(int a,int b) {
  37. return a + b >= MOD ? a + b - MOD : a + b;
  38. }
  39. int mul(int a,int b) {
  40. return 1LL * a * b % MOD;
  41. }
  42. void update(int &x,int y) {
  43. x = inc(x,y);
  44. }
  45. int C(int n,int m) {
  46. if(n < m) return 0;
  47. return mul(fac[n],mul(invfac[m],invfac[n - m]));
  48. }
  49. void Solve() {
  50. read(N);
  51. for(int i = 1 ; i <= N ; ++i) {
  52. read(A[i]);
  53. sum[i] = inc(sum[i - 1],A[i]);
  54. sum_of_sum[i] = inc(sum_of_sum[i - 1],sum[i]);
  55. }
  56. inv[1] = 1;
  57. for(int i = 2 ; i <= N ; ++i) {
  58. inv[i] = mul(inv[MOD % i],MOD - MOD / i);
  59. }
  60. fac[0] = invfac[0] = 1;
  61. for(int i = 1 ; i <= N ; ++i) {
  62. fac[i] = mul(fac[i - 1],i);
  63. invfac[i] = mul(invfac[i - 1],inv[i]);
  64. }
  65. int ans = 0;
  66. for(int i = 1 ; i <= N ; ++i) {
  67. if(i == N) update(ans,mul(sum[N],fac[N]));
  68. else {
  69. update(ans,mul(inc(sum[i],inc(sum[N],MOD - sum[N - i])),mul(mul(fac[i],C(N,i + 1)),fac[N - i - 1])));
  70. if(i < N - 1) {
  71. int t = inc(sum_of_sum[N - 1],MOD - sum_of_sum[i]);
  72. update(t,MOD - sum_of_sum[N - i - 1]);
  73. update(ans,mul(t,mul(mul(mul(2,fac[i]),C(N,i + 2)),fac[N - i - 2])));
  74. }
  75. }
  76. }
  77. out(ans);enter;
  78. }
  79. int main() {
  80. #ifdef ivorysi
  81. freopen("f1.in","r",stdin);
  82. #endif
  83. Solve();
  84. return 0;
  85. }

C - Min Cost Cycle

显然如果最优的话,答案至少为这2×N个数里前N小的数的和

我们把所有前N小的数标出来,称为1,后N个数称为0

那么一个点有4种情况 01 10 00 11

后两种个数相同

如果我们有00(我们一定会有相同个数的11)的话,那么一定可行,为什么,因为我们把01首尾相接成一个01,把10首尾相接成一个10,然后01 00 10 11就可以了

如果我们只有10或只有01,也一定可行

唯一取不到这个解的是有10,并且有01,而且不存在00

那么这个时候我们枚举两个1相撞时1的值(如果这个1和另一个1相撞的时候它不是最小值也没关系,最后会被更新掉),同时计算一下两个0相撞时0能取到的最大值,可以用一个set维护,因为我们需要删掉枚举的1所带的那个0,除了它所在的类型只有1个的情况

代码

  1. #include <bits/stdc++.h>
  2. #define fi first
  3. #define se second
  4. #define pii pair<int,int>
  5. #define mp make_pair
  6. #define pb push_back
  7. #define enter putchar('\n')
  8. #define space putchar(' ')
  9. //#define ivorysi
  10. #define MAXN 100005
  11. typedef long long int64;
  12. using namespace std;
  13. template<class T>
  14. void read(T &res) {
  15. res = 0;char c = getchar();T f = 1;
  16. while(c < '0' || c > '9') {
  17. if(c == '-') f = -1;
  18. c = getchar();
  19. }
  20. while(c >= '0' && c <= '9') {
  21. res = res * 10 + c - '0';
  22. c = getchar();
  23. }
  24. res *= f;
  25. }
  26. template<class T>
  27. void out(T x) {
  28. if(x < 0) {x = -x;putchar('-');}
  29. if(x >= 10) {
  30. out(x / 10);
  31. }
  32. putchar('0' + x % 10);
  33. }
  34. int N;
  35. int64 p[MAXN][2],sum,ans,t3;
  36. int L[MAXN],R[MAXN],tot,ty[MAXN],cnt[10];
  37. pii pos[MAXN * 2];
  38. multiset<int64> S;
  39. bool cmp(pii a,pii b) {
  40. return p[a.fi][a.se] < p[b.fi][b.se];
  41. }
  42. void Solve() {
  43. read(N);
  44. for(int i = 1 ; i <= N ; ++i) {
  45. read(p[i][1]);read(p[i][0]);
  46. ans += p[i][1] + p[i][0];
  47. pos[++tot] = mp(i,0);
  48. pos[++tot] = mp(i,1);
  49. }
  50. sort(pos + 1,pos + tot + 1,cmp);
  51. for(int i = 1 ; i <= tot / 2 ; ++i) {
  52. sum += p[pos[i].fi][pos[i].se];
  53. if(!pos[i].se) L[pos[i].fi] = 1;
  54. else R[pos[i].fi] = 1;
  55. S.insert(p[pos[i].fi][pos[i].se]);
  56. }
  57. for(int i = 1 ; i <= N ; ++i) {
  58. if(L[i] && !R[i]) {ty[i] = 1;cnt[1]++;}
  59. if(!L[i] && R[i]) {ty[i] = 2;cnt[2]++;}
  60. if(!L[i] && !R[i]) {ty[i] = 3;cnt[3]++;}
  61. if(L[i] && R[i]) {ty[i] = 4;cnt[4]++;}
  62. }
  63. if(!cnt[1] || !cnt[2] || cnt[3]) {out(sum);enter;return;}
  64. for(int i = tot / 2 + 1 ; i <= tot ; ++i) {
  65. int u = pos[i].fi;
  66. if(cnt[ty[u]] != 1) {
  67. S.erase(S.find(p[u][pos[i].se ^ 1]));
  68. ans = min(ans,sum + p[pos[i].fi][pos[i].se] - *(--S.end()));
  69. S.insert(p[u][pos[i].se ^ 1]);
  70. }
  71. else ans = min(ans,sum + p[pos[i].fi][pos[i].se] - *(--S.end()));
  72. }
  73. out(ans);enter;
  74. }
  75. int main() {
  76. #ifdef ivorysi
  77. freopen("f1.in","r",stdin);
  78. #endif
  79. Solve();
  80. return 0;
  81. }

D - Chords

这题看起来很繁琐,但是实际上逻辑很简单

\(dp[i][j]\)表示一个联通块标记为\(i\)为最小的标号,\(j\)为最大的标号,这样的方案有多少个

首先要满足初始的时候\(i,j\)之间的点没有连到外部的点

然后计算方案是\(g(x)\)

x是\(i,j\)之间没有匹配的点的个数,\(g(x) = 1*3*5...(x - 3)(x - 1)\)

然后再减掉不合法的方案

\(dp[i][j] -= dp[i][k] * g(z)\)z是\(k + 1,j\)中没有匹配过的点

最后输出的时候还要乘上一个\(g(y)\)y表示所有除了\(i,j\)之外未匹配的点

代码

  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdio>
  4. #include <algorithm>
  5. #define enter putchar('\n')
  6. #define space putchar(' ')
  7. #define fi first
  8. #define se second
  9. #define mp make_pair
  10. #define MAXN 200005
  11. //#define ivorysi
  12. #define pii pair<int,int>
  13. using namespace std;
  14. typedef long long int64;
  15. template<class T>
  16. void read(T &res) {
  17. res = 0;char c = getchar();T f = 1;
  18. while(c < '0' || c > '9') {
  19. if(c == '-') f = -1;
  20. c = getchar();
  21. }
  22. while(c >= '0' && c <= '9') {
  23. res = res * 10 + c - '0';
  24. c = getchar();
  25. }
  26. res *= f;
  27. }
  28. template<class T>
  29. void out(T x) {
  30. if(x < 0) {putchar('-');x = -x;}
  31. if(x >= 10) out(x / 10);
  32. putchar('0' + x % 10);
  33. }
  34. const int MOD = 1000000007;
  35. int N,K;
  36. int A[305],B[305];
  37. int cnt[605][605],dp[605][605],g[605];
  38. bool vis[605][605];
  39. bool in(int a,int l,int r) {
  40. return a >= l && a <= r;
  41. }
  42. int inc(int a,int b) {
  43. return a + b >= MOD ? a + b - MOD : a + b;
  44. }
  45. int mul(int a,int b) {
  46. return 1LL * a * b % MOD;
  47. }
  48. void Solve() {
  49. read(N);read(K);
  50. for(int i = 1 ; i <= K ; ++i) {
  51. read(A[i]);read(B[i]);
  52. }
  53. g[0] = 1;
  54. for(int i = 1 ; i <= 2 * N ; ++i) {
  55. if(i & 1) g[i] = 0;
  56. else g[i] = mul(g[i - 2],i - 1);
  57. }
  58. for(int i = 1 ; i <= 2 * N ; ++i) {
  59. for(int j = i + 1 ; j <= 2 * N ; ++j) {
  60. for(int h = 1 ; h <= K ; ++h) {
  61. if(in(A[h],i,j) && in(B[h],i,j)) {
  62. ++cnt[i][j];
  63. }
  64. else if((!in(A[h],i,j) && in(B[h],i,j)) || (in(A[h],i,j) && !in(B[h],i,j))) {
  65. vis[i][j] = 1;
  66. break;
  67. }
  68. }
  69. }
  70. }
  71. for(int d = 2 ; d <= 2 * N ; d += 2) {
  72. for(int i = 1 ; i <= 2 * N ; ++i) {
  73. int j = i + d - 1;
  74. if(j > 2 * N) break;
  75. if(vis[i][j]) continue;
  76. int x = j - i + 1 - 2 * cnt[i][j];
  77. dp[i][j] = g[x];
  78. for(int h = i + 1 ; h < j ; h += 2) {
  79. if(!dp[i][h]) continue;
  80. x = j - h - 2 * cnt[h + 1][j];
  81. dp[i][j] = inc(dp[i][j],MOD - mul(dp[i][h],g[x]));
  82. }
  83. }
  84. }
  85. int ans = 0;
  86. for(int i = 1 ; i <= 2 * N ; ++i) {
  87. for(int j = i + 1 ; j <= 2 * N ; j += 2) {
  88. int y = 2 * N - (j - i + 1 - 2 * cnt[i][j]) - 2 * K;
  89. ans = inc(ans,mul(dp[i][j],g[y]));
  90. }
  91. }
  92. out(ans);enter;
  93. }
  94. int main() {
  95. #ifdef ivorysi
  96. freopen("f1.in","r",stdin);
  97. #endif
  98. Solve();
  99. }

E - High Elements

我们需要已知部分\(X\)和\(Y\)的情况下,知道后面的数能不能使得最终情况合法

我们设\(X\)高元素的个数为\(C_x\),\(Y\)高元素个数为\(C_y\)

我们还需要两个高元素序列\(a,b\)满足\(C_x + |a| = C_y + |b|\)

我们可以保证\(a,b\)至少有一个,其中所有的高元素都是p原来的高元素,证明这个,我们只要找到两个合法的序列,然后每次减少两个序列中高元素,直到不能减了

这样的话我们设\(a\)全是P原来的高元素组成的序列

然后我们决定一下\(b\),\(b\)确定了\(a\)就自动是未选的所有高元素了

设\(b\)中的高元素有\(k\)个是P中的高元素,\(m\)是非高元素,剩下的序列中有Q个是高元素

那么我们满足

\(C_x + Q - k = C_y + |b|\)

\(C_x + Q - k = C_y + k + m\)

\(2k + m = C_x - C_y + Q\)

也就是我们设所有高元素长度为2,非高元素长度为1,求一个上升子序列,看看长度是否正好为一个常数

我们只需要分奇偶性找一个最长的升子序列,和这个常数比较一下就行

需要用线段树维护dp状态

  1. #include <bits/stdc++.h>
  2. #define fi first
  3. #define se second
  4. #define pii pair<int,int>
  5. #define mp make_pair
  6. #define pb push_back
  7. #define MAXN 200005
  8. //#define ivorysi
  9. #define space putchar(' ')
  10. #define enter putchar('\n')
  11. using namespace std;
  12. typedef long long int64;
  13. template<class T>
  14. void read(T &res) {
  15. res = 0;char c = getchar();T f = 1;
  16. while(c < '0' || c > '9') {
  17. if(c == '-') f = -1;
  18. c = getchar();
  19. }
  20. while(c >= '0' && c <= '9') {
  21. res = res * 10 + c - '0';
  22. c = getchar();
  23. }
  24. res *= f;
  25. }
  26. template<class T>
  27. void out(T x) {
  28. if(x < 0) {x = -x;}
  29. if(x >= 10) {
  30. out(x / 10);
  31. }
  32. putchar('0' + x % 10);
  33. }
  34. int N,P[MAXN],val[MAXN],ans[MAXN],curx,cury;
  35. struct node {
  36. int maxv,L,R,lc,rc;
  37. }tr[MAXN * 20];
  38. int rt[2],Ncnt;
  39. void build(int &u,int L,int R,int v) {
  40. u = ++Ncnt;
  41. tr[u].L = L;tr[u].R = R;
  42. tr[u].maxv = v;
  43. if(L == R) return;
  44. int mid = (L + R) >> 1;
  45. build(tr[u].lc,L,mid,v);
  46. build(tr[u].rc,mid + 1,R,v);
  47. }
  48. void Change(int u,int pos,int v) {
  49. if(tr[u].L == tr[u].R) {tr[u].maxv = v;return;}
  50. int mid = (tr[u].L + tr[u].R) >> 1;
  51. if(pos <= mid) Change(tr[u].lc,pos,v);
  52. else Change(tr[u].rc,pos,v);
  53. tr[u].maxv = max(tr[tr[u].lc].maxv,tr[tr[u].rc].maxv);
  54. }
  55. int Query(int u,int l,int r) {
  56. if(tr[u].L == l && tr[u].R == r) return tr[u].maxv;
  57. int mid = (tr[u].L + tr[u].R) >> 1;
  58. if(r <= mid) return Query(tr[u].lc,l,r);
  59. else if(l > mid) return Query(tr[u].rc,l,r);
  60. else return max(Query(tr[u].lc,l,mid),Query(tr[u].rc,mid + 1,r));
  61. }
  62. void Solve() {
  63. read(N);
  64. for(int i = 1 ; i <= N ; ++i) read(P[i]);
  65. int cur = 0,Q = 0;
  66. for(int i = 1 ; i <= N ; ++i) {
  67. cur = max(cur,P[i]);
  68. if(cur == P[i]) {val[i] = 2;++Q;}
  69. else val[i] = 1;
  70. }
  71. build(rt[0],1,N + 1,0);build(rt[1],1,N + 1,-2 * N);
  72. for(int i = N ; i >= 1 ; --i) {
  73. int tmp[2];
  74. for(int j = 0 ; j < 2 ; ++j) tmp[j] = Query(rt[j],P[i] + 1,N + 1);
  75. for(int j = 0 ; j < 2 ; ++j) {
  76. if(tmp[j] + val[i] > 0) {
  77. int t = (tmp[j] + val[i]) & 1;
  78. Change(rt[t],P[i],tmp[j] + val[i]);
  79. }
  80. }
  81. }
  82. int len[2] = {0,0},mx_num[2] = {0,0};
  83. for(int i = 1 ; i <= N ; ++i) {
  84. ans[i] = -1;
  85. Change(rt[0],P[i],0);Change(rt[1],P[i],-2 * N);
  86. if(val[i] == 2) --Q;
  87. for(int k = 0 ; k < 2 ; ++k) {
  88. int nxt_len[2],nxt_mx_num[2];
  89. memcpy(nxt_len,len,sizeof(len));
  90. memcpy(nxt_mx_num,mx_num,sizeof(mx_num));
  91. nxt_mx_num[k] = max(nxt_mx_num[k],P[i]);
  92. if(nxt_mx_num[k] == P[i]) ++nxt_len[k];
  93. if(i == N) {
  94. if(nxt_len[0] == nxt_len[1]) {ans[i] = k;break;}
  95. continue;
  96. }
  97. bool flag = 0;
  98. for(int j = 0 ; j < 2 ; ++j) {
  99. int t = nxt_len[j] - nxt_len[j ^ 1] + Q;
  100. if(t >= 0 && Query(rt[t & 1],nxt_mx_num[j ^ 1] + 1,N + 1) >= t) {flag = 1;break;}
  101. }
  102. if(flag) {
  103. ans[i] = k;
  104. memcpy(len,nxt_len,sizeof(len));
  105. memcpy(mx_num,nxt_mx_num,sizeof(mx_num));
  106. break;
  107. }
  108. }
  109. if(ans[i] < 0) {
  110. puts("-1");return;
  111. }
  112. }
  113. for(int i = 1 ; i <= N ; ++i) putchar('0' + ans[i]);
  114. enter;
  115. }
  116. int main() {
  117. #ifdef ivorysi
  118. freopen("f1.in","r",stdin);
  119. #endif
  120. Solve();
  121. }

【AtCoder】AGC028 (A-E)题解的更多相关文章

  1. AtCoder ExaWizards 2019 简要题解

    AtCoder ExaWizards 2019 简要题解 Tags:题解 link:https://atcoder.jp/contests/exawizards2019 很水的一场ARC啊,随随便便就 ...

  2. AtCoder Beginner Contest 154 题解

    人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...

  3. AtCoder Beginner Contest 153 题解

    目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...

  4. AtCoder Beginner Contest 177 题解

    AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...

  5. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  6. AtCoder Beginner Contest 173 题解

    AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...

  7. AtCoder Beginner Contest 172 题解

    AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...

  8. AtCoder Beginner Contest 169 题解

    AtCoder Beginner Contest 169 题解 这场比赛比较简单,证明我没有咕咕咕的时候到了! A - Multiplication 1 没什么好说的,直接读入两个数输出乘积就好了. ...

  9. AtCoder Beginner Contest 148 题解

    目录 AtCoder Beginner Contest 148 题解 前言 A - Round One 题意 做法 程序 B - Strings with the Same Length 题意 做法 ...

  10. AtCoder Grand Contest 017 题解

    A - Biscuits 题目: 给出 \(n\) 个物品,每个物品有一个权值. 问有多少种选取方式使得物品权值之和 \(\bmod\space 2\) 为 \(p\). \(n \leq 50\) ...

随机推荐

  1. 【poj2187】最远点对(勉强凑数)

    题目简述 输入n个点,及其坐标,n<=50000,所有坐标都是不超过10000的整数组成,没有重点. 问最远点对间的距离的平方是多少 题解 这是一道旋转卡壳的裸题 我们要求这个多边形的直径,这可 ...

  2. 【BZOJ1898】[ZJOI2005]沼泽鳄鱼(矩阵快速幂,动态规划)

    [BZOJ1898][ZJOI2005]沼泽鳄鱼(矩阵快速幂,动态规划) 题面 BZOJ 洛谷 题解 先吐槽,说好了的鳄鱼呢,题面里面全是食人鱼 看到数据范围一眼想到矩乘. 先不考虑食人鱼的问题,直接 ...

  3. IntelliJ IDEA的安装和使用教程

    1. 安装IntelliJ IDEA IntelliJ IDEA(简称"IDEA")是Java语言的集成开发环境,它是JetBrains公司的产品之一.详情请看:JetBrains ...

  4. 详解掩膜mask

    什么是掩膜(mask) 数字图像处理中的掩膜的概念是借鉴于PCB制版的过程,在半导体制造中,许多芯片工艺步骤采用光刻技术,用于这些步骤的图形“底片”称为掩膜(也称作“掩模”),其作用是:在硅片上选定的 ...

  5. 转:IOS 基于APNS消息推送原理与实现(JAVA后台)

    Push的原理: Push 的工作机制可以简单的概括为下图   图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple ...

  6. webpack:代码分割与按需加载

    代码分割就是我们根据实际业务需求将代码进行分割,然后在合适的时候在将其加载进入文档中. 代码中总有些东西我们希望拆分开来,比如: 使用概率较低的模块,希望后期使用的时候异步加载 框架代码,希望能利用浏 ...

  7. ZSTU OJ 3770: 黑帽子 归纳总结

    Description 一群非常聪明的人开舞会,每人头上都戴着一顶帽子.帽子只有黑白两种,黑的至少有一顶.每个人都能看到其它人帽子的颜色,却看不到自己的.主持人先让大家 看看别人头上戴的是什幺帽子,然 ...

  8. html5 canvas 径向渐变

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. .net中的一般处理程序实例

    最近在学习一般处理程序,也学习了一些jQuery的异步操作,于是就想着亲手做一个小的登陆,锻炼一下自己. 1.首先新建了一个项目LoginDemo,在此基础上又添加了一个一般处理程序BackLogin ...

  10. iframe引入网页

    <!DOCTYPE html> <html> <body> <iframe src="/example/html/demo_iframe.html& ...