前言

昨天说好不考试来着,昨晚就晚睡颓了一会,今天遭报应了,也没好好考,考得挺烂的就不多说了。

T1 string

解题思路

比赛上第一想法就是打一发sort,直接暴力,然后完美TLE40pts,这一部分分也是所有人都拿到了,没什么意义。。

正解是线段树,主流打法有两种:

  1. 开26棵线段树,分别对26种字母进行维护。
  2. 只开一棵线段树,对于区间维护求值。

我当然是选择码量较小并且快的第二种了QAQ,但是聪明睿智的@WindZR选择了第一种打法(code),虽然他多加了好几个inline快了2s才过。

对于每一个线段树区间,如果这个区间都为一个字母,存储。否则,就为0.

在更改的时候,先求一下本区间中各个字母的多少,然后分别对于线段树中的每个字母更改,直接存延迟标记到数值上就好了。

最后统一push_down一下,输出就好了。代码实现可能有一点考验码力。。

code

  1. #include<bits/stdc++.h>
  2. #define ls x<<1
  3. #define rs x<<1|1
  4. using namespace std;
  5. const int N=1e5+10;
  6. int tre[N<<2];
  7. int n,m,len[27];
  8. char s[N];
  9. inline void push_down(int x)
  10. {
  11. if(tre[x])
  12. tre[ls]=tre[rs]=tre[x];
  13. tre[x]=0;
  14. }
  15. inline void push_up(int x)
  16. {
  17. tre[x]=tre[ls]*(tre[ls]==tre[rs]);
  18. }
  19. inline void build(int x,int l,int r)
  20. {
  21. // cout<<x<<' '<<l<<' '<<r<<endl;
  22. if(l==r)
  23. {
  24. tre[x]=s[l]-'a'+1;
  25. return ;
  26. }
  27. int mid=(l+r)>>1;
  28. build(ls,l,mid);
  29. build(rs,mid+1,r);
  30. push_up(x);
  31. }
  32. inline void query(int x,int l,int r,int L,int R)
  33. {
  34. // cout<<x<<' '<<l<<' '<<r<<' '<<L<<' '<<R<<endl;
  35. if(L>R||r<L||l>R)
  36. return ;
  37. if(L<=l&&r<=R&&tre[x])
  38. {
  39. len[tre[x]-1]+=r-l+1;
  40. return ;
  41. }
  42. push_down(x);
  43. int mid=(l+r)>>1;
  44. if(L<=mid)
  45. query(ls,l,mid,L,R);
  46. if(R>mid)
  47. query(rs,mid+1,r,L,R);
  48. // push_up(x);
  49. }
  50. inline void update(int x,int l,int r,int L,int R,int dat)
  51. {
  52. // cout<<x<<' '<<l<<' '<<r<<' '<<L<<' '<<R<<' '<<dat<<endl;
  53. if(L>R||r<L||l>R)
  54. return ;
  55. if(L<=l&&r<=R||tre[x]==dat)
  56. {
  57. tre[x]=dat;
  58. return ;
  59. }
  60. push_down(x);
  61. int mid=(l+r)>>1;
  62. if(L<=mid)
  63. update(ls,l,mid,L,R,dat);
  64. if(R>mid)
  65. update(rs,mid+1,r,L,R,dat);
  66. push_up(x);
  67. }
  68. inline void Push_down(int x,int l,int r)
  69. {
  70. if(tre[x])
  71. {
  72. for(int i=l;i<=r;i++)
  73. s[i]=tre[x]+'a'-1;
  74. return ;
  75. }
  76. int mid=(l+r)>>1;
  77. Push_down(ls,l,mid);
  78. Push_down(rs,mid+1,r);
  79. }
  80. int main()
  81. {
  82. scanf("%d%d",&n,&m);
  83. scanf("%s",s+1);
  84. build(1,1,n);
  85. for(int i=1,x,y,vis;i<=m;i++)
  86. {
  87. memset(len,0,sizeof(len));
  88. scanf("%d%d%d",&x,&y,&vis);
  89. query(1,1,n,x,y);
  90. /*for(int j=0;j<26;j++)
  91. cout<<len[j]<<' ';
  92. cout<<endl;*/
  93. if(vis)
  94. {
  95. int temp=x;
  96. for(int j=0;j<26;j++)
  97. {
  98. if(len[j])
  99. update(1,1,n,temp,temp+len[j]-1,j+1);
  100. temp+=len[j];
  101. }
  102. }
  103. else
  104. {
  105. int temp=x;
  106. for(int j=25;j>=0;j--)
  107. {
  108. if(len[j])
  109. update(1,1,n,temp,temp+len[j]-1,j+1);
  110. temp+=len[j];
  111. }
  112. }
  113. }
  114. Push_down(1,1,n);
  115. for(int i=1;i<=n;i++)
  116. printf("%c",s[i]);
  117. return 0;
  118. }

解题思路

说实话看这题第一眼,我想的是排列组合,后来想了想是个\(n^2\)的dp,但是我想的是枚举坐标,所以整不出来了,在然后就直接搜呗(逃。

这个题正解特别妙,\(f[i][j]\) ,i表示第几列,j表示第i列后面1的个数,最重要的一点是这个题是逆推的。由\((0,0)\)开始,且该位置方案数为1。然后就开始愉快地实现了。

第一部分

显然可以从i-1列转移过来,状态有两种:放与不放,也就是j-1或者 j,利用r总数进行更新。

第二部分

枚举前一行到当前行的可行的左侧数量,再进行枚举左侧放的棋子数然后再乘上一个方案数就好了。

  • 优化:l和r边界的总数用前缀和优化。

code

  1. #include<bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4. const int N=3e5+10,M=4e3+10,mod=998244353;
  5. int n,m,sl[N],sr[N],f[M][M];
  6. #undef int
  7. int main()
  8. {
  9. #define int register long long
  10. #define ll long long
  11. scanf("%lld%lld",&n,&m);
  12. for(int i=1,l,r;i<=n;i++)
  13. {
  14. scanf("%lld%lld",&l,&r);
  15. sl[l]++;
  16. sr[r]++;
  17. }
  18. for(int i=1;i<=m;i++)
  19. {
  20. sl[i]+=sl[i-1];
  21. sr[i]+=sr[i-1];
  22. // cout<<sl[i]<<' '<<sr[i]<<endl;
  23. }
  24. f[0][0]=1;
  25. for(int i=1;i<=m;i++)
  26. {
  27. f[i][0]=f[i-1][0];
  28. for(int j=1;j<=i;j++)
  29. f[i][j]=(f[i-1][j]+f[i-1][j-1]*(sr[i]-j+1)%mod)%mod;
  30. for(int j=sl[i-1];j<sl[i];j++)
  31. for(int k=0;k<=i;k++)
  32. f[i][k]=f[i][k]*(i-j-k)%mod;
  33. }
  34. printf("%lld",f[m][n]);
  35. return 0;
  36. }

T2 matrix

解题思路

说实话看这题第一眼,我想的是排列组合,后来想了想是个\(n^2\)的dp,但是我想的是枚举坐标,所以整不出来了,在然后就直接搜呗(逃。

这个题正解特别妙,\(f[i][j]\) ,i表示第几列,j表示第i列后面1的个数,最重要的一点是这个题是逆推的。由\((0,0)\)开始,且该位置方案数为1。然后就开始愉快地实现了。

第一部分

显然可以从i-1列转移过来,状态有两种:放与不放,也就是j-1或者 j,利用r总数进行更新。

第二部分

枚举前一行到当前行的可行的左侧数量,再进行枚举左侧放的棋子数然后再乘上一个方案数就好了。

  • 优化:l和r边界的总数用前缀和优化。

code

  1. #include<bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4. const int N=3e5+10,M=4e3+10,mod=998244353;
  5. int n,m,sl[N],sr[N],f[M][M];
  6. #undef int
  7. int main()
  8. {
  9. #define int register long long
  10. #define ll long long
  11. scanf("%lld%lld",&n,&m);
  12. for(int i=1,l,r;i<=n;i++)
  13. {
  14. scanf("%lld%lld",&l,&r);
  15. sl[l]++;
  16. sr[r]++;
  17. }
  18. for(int i=1;i<=m;i++)
  19. {
  20. sl[i]+=sl[i-1];
  21. sr[i]+=sr[i-1];
  22. // cout<<sl[i]<<' '<<sr[i]<<endl;
  23. }
  24. f[0][0]=1;
  25. for(int i=1;i<=m;i++)
  26. {
  27. f[i][0]=f[i-1][0];
  28. for(int j=1;j<=i;j++)
  29. f[i][j]=(f[i-1][j]+f[i-1][j-1]*(sr[i]-j+1)%mod)%mod;
  30. for(int j=sl[i-1];j<sl[i];j++)
  31. for(int k=0;k<=i;k++)
  32. f[i][k]=f[i][k]*(i-j-k)%mod;
  33. }
  34. printf("%lld",f[m][n]);
  35. return 0;
  36. }

T3 big

解题思路

考试的时候,我一开始都没打算打这个题(还是我太菜了),联想到了博弈论这一类奇奇怪怪的东西。。。后来仔细看了看题目中操作的式子,想到了循环节,也想到了分位运算,但是就是没有想到用Tire树 [流泪].jpg

\((\lfloor\dfrac{2x}{2^n}\rfloor+2x) \bmod 2^n\),这个式子一看就不是瞎整的,有二进制的感觉,\(\lfloor\dfrac{2x}{2^n}\rfloor\) 就是\((x>>(n-1))\)(取第n位)与\(x<<1\)的加和再按位与上\(1<<n\),扣下前n位,总的来看就类似与把110101变成了101011。

我们再求一个一个前缀和后缀,后缀用于维护u对手操作完没变的点,前缀维护操作过的点,不难发现,对于i之前的所有的都操作与将i之前的异或再操作结果是一样的。

可以手动模拟一下。

然后就是构建Tire树,从根开始往下遍历每一位,处理情况有3种

  1. 子节点0和1都有:此时如果我选择0,那么对手就会选择1,同样的,如果我选择1,那么对手就会选择0,因此这个点对于答案是没有贡献的,只需要继承上来就好了。
  2. 只有0节点:只可以走这一路,对答案有贡献\(1<<res\)
  3. 只有1节点:与只有0节点的情况大同小异,贡献也是\(1<<res\)
  • 优化:遍历时可以返回一个pair同时储存两个答案。

code

  1. #include<bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4. const int N=1e5+10;
  5. int n,m,s[N],suf[N],he[N];
  6. int cnt=1,tre[N*40][2];
  7. int work(int x)
  8. {
  9. // return 2*x/(1<<n)+2*x%(1<<n);
  10. return ((x>>(n-1))+(x<<1))&((1<<n)-1);
  11. }
  12. inline void Tire_Add(int x)
  13. {
  14. int now=1;
  15. for(int i=n-1;i>=0;i--)
  16. {
  17. bool p=x&(1<<i);
  18. if(!tre[now][p])
  19. tre[now][p]=++cnt;
  20. now=tre[now][p];
  21. // cout<<now<<' ';
  22. }
  23. }
  24. pair<int,int> dfs(int now,int res)
  25. {
  26. if(res==-1)
  27. return make_pair(0,1);
  28. if(tre[now][0]&&tre[now][1])
  29. {
  30. pair<int,int> x=dfs(tre[now][0],res-1),y=dfs(tre[now][1],res-1);
  31. if(x.first==y.first)
  32. return make_pair(x.first,x.second+y.second);
  33. if(x.first>y.first)
  34. return x;
  35. return y;
  36. }
  37. if(tre[now][0])
  38. {
  39. pair<int,int> x=dfs(tre[now][0],res-1);
  40. x.first+=(1<<res);
  41. return x;
  42. }
  43. if(tre[now][1])
  44. {
  45. pair<int,int> x=dfs(tre[now][1],res-1);
  46. x.first+=(1<<res);
  47. return x;
  48. }
  49. }
  50. #undef int
  51. int main()
  52. {
  53. #define int long long
  54. scanf("%lld%lld",&n,&m);
  55. for(int i=1;i<=m;i++)
  56. scanf("%lld",&s[i]);
  57. for(int i=m;i>=1;i--)
  58. {
  59. suf[i]=suf[i+1]^s[i];
  60. // cout<<suf[i]<<' ';
  61. }
  62. for(int i=1;i<=m;i++)
  63. {
  64. he[i]=work(s[i])^he[i-1];
  65. // cout<<he[i]<<' ';
  66. }
  67. for(int i=0;i<=m;i++)
  68. Tire_Add(he[i]^suf[i+1]);
  69. pair<int,int> ans=dfs(1,n-1);
  70. printf("%lld\n%lld",ans.first,ans.second);
  71. return 0;
  72. }

T4 P2403 [SDOI2010]所驼门王的宝藏

解题思路

算是这次比赛里比较好想的一个题了 (虽然我打的裸暴力)。

正解的话就是Tarjan缩点+DAG

主流打法有两种:

  1. 建假点,利用假点运算
  2. sort排序,暴力建边 (我当然是喜欢暴力的了)

对于自动排序这一类的问题,hash和map都可以做,(我当然是选择暴力的map了)题面里的所谓各种门,无非是连接各个点的一条边,显然,对于一系列的点如果我们可以到达其中的一个就一定可以全部到达,这不就是强联通分量吗。

因此我们对于每一种门分别查找建出边来,

建边

横天门与纵寰门

这两种门是大同小异的,这里举横天门的例子,先将所有的宝藏室排个序(第一关键字是横坐标,第二关键字是操作,第三关键字是总纵坐标)。

  • 优化:操作的关键字,先判y的比先判x的快了一半(先判x也没事 ~毕竟洛谷数据水嘛)。

任意门

直接暴力枚举各个点建出边来就好了,分别扫一下八个方向是否有点就好了。

其他操作

接下来就可以套Tarjan的板子缩点 了,顺便储存一下各个点属于那一个强联通分量,处理入度为拓扑排序做准备,然后再进行dfs拓扑排序,求出最大值就ok了。

code

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=1e5+10;
  4. int n,m,t,ans,du[N],f[N];
  5. int tot,head[N],ver[N*100],nxt[N*100],fro[N*100];
  6. int cnt,tim,dfn[N],low[N],bel[N],sum[N];
  7. int top,sta[N];
  8. bool bosta[N];
  9. map<int,bool> vis[N];
  10. map<int,int> s[N];
  11. map<int,bool>::iterator it;
  12. int sx[9]={0,-1,-1,-1,0,0,1,1,1};
  13. int sy[9]={0,-1,0,1,-1,1,-1,0,1};
  14. struct Ques
  15. {
  16. int x,y,opt,id;
  17. }q[N];
  18. inline bool comp1(Ques x,Ques y)
  19. {
  20. if(x.x!=y.x)
  21. return x.x<y.x;
  22. if(y.opt==1)
  23. return false;
  24. if(x.opt==1)
  25. return true;
  26. return x.y<y.y;
  27. }
  28. inline bool comp2(Ques x,Ques y)
  29. {
  30. if(x.y!=y.y)
  31. return x.y<y.y;
  32. if(y.opt==2)
  33. return false;
  34. if(x.opt==2)
  35. return true;
  36. return x.x<y.x;
  37. }
  38. inline void add_edge(int x,int y)
  39. {
  40. ver[++tot]=y;
  41. fro[tot]=x;
  42. nxt[tot]=head[x];
  43. head[x]=tot;
  44. }
  45. inline void Tarjan(int x)
  46. {
  47. dfn[x]=low[x]=++tim;
  48. sta[++top]=x;
  49. bosta[x]=true;
  50. for(int i=head[x];i;i=nxt[i])
  51. {
  52. int to=ver[i];
  53. if(!dfn[to])
  54. {
  55. Tarjan(to);
  56. low[x]=min(low[x],low[to]);
  57. }
  58. else if(!bel[to])
  59. low[x]=min(low[x],low[to]);
  60. }
  61. if(dfn[x]==low[x])
  62. {
  63. cnt++;
  64. int temp=sta[top--];
  65. bel[temp]=cnt;
  66. sum[cnt]++;
  67. bosta[temp]=false;
  68. while(temp!=x)
  69. {
  70. temp=sta[top--];
  71. bel[temp]=cnt;
  72. sum[cnt]++;
  73. bosta[temp]=false;
  74. }
  75. }
  76. }
  77. inline void dfs(int x,int fa)
  78. {
  79. if(f[x]>sum[x])
  80. return ;
  81. f[x]=sum[x];
  82. for(int i=head[x];i;i=nxt[i])
  83. {
  84. int to=ver[i];
  85. if(to==fa)
  86. continue;
  87. dfs(to,x);
  88. f[x]=max(f[x],f[to]+sum[x]);
  89. }
  90. }
  91. inline int read()
  92. {
  93. char ch=getchar();
  94. int x=0;
  95. while(ch<'0'||ch>'9')
  96. ch=getchar();
  97. while(ch>='0'&&ch<='9')
  98. {
  99. x=(x<<1)+(x<<3)+(ch^48);
  100. ch=getchar();
  101. }
  102. return x;
  103. }
  104. int main()
  105. {
  106. // scanf("%d%d%d",&t,&n,&m);
  107. #define int register int
  108. t=read();
  109. n=read();
  110. m=read();
  111. for(int i=1;i<=t;i++)
  112. {
  113. // scanf("%d%d%d",&q[i].x,&q[i].y,&q[i].opt);
  114. q[i].x=read();
  115. q[i].y=read();
  116. q[i].opt=read();
  117. q[i].id=i;
  118. s[q[i].x][q[i].y]=i;
  119. }
  120. #define head wzrdsb
  121. int head=1,tail=1;
  122. sort(q+1,q+t+1,comp1);
  123. for(int i=1;i<=t;i++)
  124. {
  125. if(q[i].x!=q[i+1].x)
  126. {
  127. if(head!=tail)
  128. add_edge(q[tail].id,q[head].id);
  129. tail=head=i+1;
  130. }
  131. else
  132. {
  133. if(q[tail].opt==1)
  134. add_edge(q[tail].id,q[i+1].id);
  135. if(q[i+1].opt==1)
  136. tail=i+1;
  137. if(q[head].opt!=1)
  138. tail=head=i+1;
  139. }
  140. }
  141. head=1;
  142. tail=1;
  143. sort(q+1,q+t+1,comp2);
  144. for(int i=1;i<=t;i++)
  145. {
  146. if(q[i].y!=q[i+1].y)
  147. {
  148. if(head!=tail)
  149. add_edge(q[tail].id,q[head].id);
  150. tail=head=i+1;
  151. }
  152. else
  153. {
  154. if(q[tail].opt==2)
  155. add_edge(q[tail].id,q[i+1].id);
  156. if(q[i+1].opt==2)
  157. tail=i+1;
  158. if(q[head].opt!=2)
  159. tail=head=i+1;
  160. }
  161. }
  162. #undef head
  163. for(int i=1;i<=t;i++)
  164. if(q[i].opt==3)
  165. {
  166. for(int j=1;j<=8;j++)
  167. if(s[q[i].x+sx[j]].count(q[i].y+sy[j]))
  168. add_edge(q[i].id,s[q[i].x+sx[j]][q[i].y+sy[j]]);
  169. }
  170. for(int i=1;i<=t;i++)
  171. if(!dfn[i])
  172. Tarjan(i);
  173. for(int i=1;i<=tot;i++)
  174. {
  175. int to=ver[i];
  176. if(bel[fro[i]]!=bel[to])
  177. vis[bel[fro[i]]][bel[to]]=true;
  178. }
  179. memset(head,0,sizeof(head));
  180. tot=0;
  181. for(int i=1;i<N;i++)
  182. for(it=vis[i].begin();it!=vis[i].end();it++)
  183. {
  184. add_edge(i,it->first);
  185. du[it->first]++;
  186. }
  187. for(int i=1;i<=cnt;i++)
  188. if(!du[i])
  189. {
  190. dfs(i,0);
  191. ans=max(ans,f[i]);
  192. }
  193. printf("%d",ans);
  194. return 0;
  195. }

6.7考试总结(NOIP模拟5)的更多相关文章

  1. 6.17考试总结(NOIP模拟8)[星际旅行·砍树·超级树·求和]

    6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前 ...

  2. 5.23考试总结(NOIP模拟2)

    5.23考试总结(NOIP模拟2) 洛谷题单 看第一题第一眼,不好打呀;看第一题样例又一眼,诶,我直接一手小阶乘走人 然后就急忙去干T2T3了 后来考完一看,只有\(T1\)骗到了\(15pts\)[ ...

  3. 5.22考试总结(NOIP模拟1)

    5.22考试总结(NOIP模拟1) 改题记录 T1 序列 题解 暴力思路很好想,分数也很好想\(QAQ\) (反正我只拿了5pts) 正解的话: 先用欧拉筛把1-n的素数筛出来 void get_Pr ...

  4. [考试总结]noip模拟23

    因为考试过多,所以学校的博客就暂时咕掉了,放到家里来写 不过话说,vscode的markdown编辑器还是真的很好用 先把 \(noip\) 模拟 \(23\) 的总结写了吧.. 俗话说:" ...

  5. 2021.9.17考试总结[NOIP模拟55]

    有的考试表面上自称NOIP模拟,背地里却是绍兴一中NOI模拟 吓得我直接文件打错 T1 Skip 设状态$f_i$为最后一次选$i$在$i$时的最优解.有$f_i=max_{j<i}[f_j+a ...

  6. 「考试」noip模拟9,11,13

    9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...

  7. 6.11考试总结(NOIP模拟7)

    背景 时间分配与得分成反比,T1 20min 73pts,T2 1h 30pts,T3 2h 15pts(没有更新tot值,本来应该是40pts的,算是本次考试中最遗憾的地方了吧),改起来就是T3比较 ...

  8. 6.10考试总结(NOIP模拟6)

    前言 就这题考的不咋样果然还挺难改的.. T1 辣鸡 前言 我做梦都没想到这题正解是模拟,打模拟赛的时候看错题面以为是\(n\times n\)的矩阵,喜提0pts. 解题思路 氢键的数量计算起来无非 ...

  9. [考试反思]NOIP模拟测试19:洗礼

    []260 []230[]210 []200[8]170[9]160 这套题一般,数据很弱,T1T2暴力都能A,而且都是一些思维题,想不到就爆0. 原因不明,很多一直很强的人在这一次滑铁卢了,于是我个 ...

随机推荐

  1. ACM、考研、就业,在我心底已经有了明确的答案_人生没有完整的,只有无悔的

    思绪再三,还是决定放弃了ACM,走上考研路(我现在是大二下学期,马上结束).虽然我们ACM的带队老师经常说:"ACM和考研是不冲突的",但是我感觉做ACM和考研的关系不是很紧密,而 ...

  2. C#中的类、方法和属性

    这节讲C#中的类,方法,属性.这是编码中我们最直接打交道的三个结构.      类: 类(class)是面向对象中最基本的单元,它是一种抽象,对现实世界中事物的抽象,在C#中使用class关键字声明一 ...

  3. Element ui结合springboot的简单实战

    Eelment UI简单实战 前端开发 1 创建项目,导入element ui(略) 2 大致设计出想要的效果,如下 3 创建包 根据设计的大致模样在项目的components中创建对应的包,方便以后 ...

  4. [DB] Spark Streaming

    概述 流式计算框架,类似Storm 严格来说不是真正的流式计算(实时计算),而是把连续的数据当做不连续的RDD处理,本质是离散计算 Flink:和 Spark Streaming 相反,把离散数据当成 ...

  5. [ML] 高德软件的路径规划原理

    路径规划 Dijkstra s:起点:S:已知到起点最短路径的点:U:未知到起点最短路径的点 Step 1:S中只有起点s,从U中找出路径最短的 Step 2:更新U中的顶点和顶点对应的路径 重复St ...

  6. 047.Python前端html

    一  HTTP协议 1.1 HTTP请求 URL: 协议/IP:端口/路径?GET参数 基于请求响应 请求协议格式 GET URL路径?a=1&b=2 HTTP # 请求首行 user-age ...

  7. LTP--linux稳定性测试 linux性能测试 ltp压力测试 内核更新 稳定性测试

    LTP--linux稳定性测试 linux性能测试 ltp压力测试 zhangzj1030关注14人评论33721人阅读2011-12-09 12:07:45   说明:在写这篇文章之前,本人也不曾了 ...

  8. python中的threading模块使用说明

    这段时间使用python做串口的底层库,用到了多线程,对这部分做一下总结.实际用完了后再回过头去看python的官方帮助文档,感觉受益匪浅,把里面的自己觉得有用的一些关键点翻译出来,留待后续查验.th ...

  9. VFB FEEDBACK

  10. 关于Ajax 的 cache 属性 (Day_34)

    最近做项目,在某些页面显示,ajax刷新总是拿不到新内容,时常需要清除缓存,才能到达想要的效果. 经过再次查看文档,最后加了一行属性:cache:false 即可解决问题 我们先看下文档的说明: 可以 ...