something wrong with my new blog!

I can't type matrixs

so I come back. qwq

题目:https://www.codechef.com/problems/BIKE

题解

是我naive了,二维和一维其实差不多

首先,n很小,t很大,什么算法?矩阵乘法!没跑了

然后矩阵里填什么?一条边是两个值啊,还要一个%n一个%(n - 1),怎么搞

我们设计一个多项式\(x^{a}y^{b}\),x指数(也就是a)代表前轮加上一条边的值后取模的值,y指数(也就是b)代表后轮加上一条边的值后取模的值

最后每一项前面的系数就是答案

这样我们矩阵里填的就是多项式了,例如一条边的值是\(f = 1,r = 2\)那么这个邻接矩阵里填的就是\(xy^{2}\)

好了我们做矩阵乘法并且指数分别取模n和(n - 1)就做完啦!(大雾

啥啥啥,为啥这样就做完了啊,我要在矩阵里填多项式,还要资瓷多项式的加和乘,虽然可行?但是复杂度听起来不可靠(项有\(n^2\)级别啊,我多项式乘暴力搞要\(n^4\)我FFT还要\(n^2 \log n\),而我矩阵乘法要做\(n^3\)次,excuse me?)而且很玄学(我不会写),有没有什么简单优美的办法啊。

考虑插值,我们熟悉的插值都有什么呢,例如FFT,例如拉格朗日插值,都是找一些点值代进去然后反解出系数

考虑继续用FFT的思路插值反解系数,因为单位根有一个很棒的性质就是\(w^{n} = 1\)(先记住这一点,不过可能大家都知道)

啥,你说这模数不是NTT?不是哇你不是N只有22么,你会发现\(P - 1\)是2..22所有的数的倍数,所以求出原根来就可以求单位根啦,不是\(2^k\)而是正好\(N\)的(所以我们不能FFT了而要暴力DFT,也就是把每个单位根的值代进去求一遍值,显然你\(n^2\)和大常数\(n \log n\)在22没有什么太大的区别,况且你也不能FFT)

那么我们就可以尝试把\(x\)的\(N\)种取值,\(y\)的\(N - 1\)种取值结合起来

例如\(xy^{2}\)就是\(w_{N}w_{N - 1}^{2}\)

好惹现在窝们(奇怪的口音?)有了\(N(N - 1)\)个点值了……我们还要画在三维坐标系里不成?

回忆一下学习FFT时候的矩阵

大概是这个样子的

\(\begin{bmatrix} (\omega_{n}^{0})^{0} & (\omega_{n}^{0})^{1} & \cdots & (\omega_{n}^{0})^{n - 1} \\ (\omega_{n}^{1})^{0} & (\omega_{n}^{1})^{1} & \cdots & (\omega_{n}^{1})^{n - 1} \\ \vdots &\vdots & \ddots & \vdots \\ (\omega_{n}^{n - 1})^{0} & (\omega_{n}^{n - 1})^{1} & \cdots & (\omega_{n}^{n - 1})^{n - 1} \end{bmatrix} \begin{bmatrix} a_{0}\\ a_{1}\\ \vdots \\ a_{n - 1} \end{bmatrix} = \begin{bmatrix} A(\omega_{0}) \\ A(\omega_{1})\\ \vdots \\ A(\omega_{n - 1}) \end{bmatrix}\)

感觉没有问题,那么回忆一下是怎么反解出来的

假如有这么一个矩阵

\(\begin{bmatrix}
(\omega_{n}^{-0})^{0} &(\omega_{n}^{-0})^{1} &\cdots &(\omega_{n}^{-0})^{n - 1} \\
(\omega_{n}^{-1})^{0} &(\omega_{n}^{-1})^{1} &\cdots &(\omega_{n}^{-1})^{n - 1} \\
\vdots &\vdots &\ddots &\vdots \\
(\omega_{n}^{-(n - 1)})^{0} &(\omega_{n}^{-(n - 1)})^{1} &\cdots &(\omega_{n}^{-(n - 1)})^{n - 1}
\end{bmatrix}\)

我们让两个矩阵相乘

\(\begin{bmatrix} (\omega_{n}^{0})^{0} & (\omega_{n}^{0})^{1} & \cdots & (\omega_{n}^{0})^{n - 1} \\ (\omega_{n}^{1})^{0} & (\omega_{n}^{1})^{1} & \cdots & (\omega_{n}^{1})^{n - 1} \\ \vdots &\vdots & \ddots & \vdots \\ (\omega_{n}^{n - 1})^{0} & (\omega_{n}^{n - 1})^{1} & \cdots & (\omega_{n}^{n - 1})^{n - 1} \end{bmatrix}\begin{bmatrix}
(\omega_{n}^{-0})^{0} &(\omega_{n}^{-0})^{1} &\cdots &(\omega_{n}^{-0})^{n - 1} \\
(\omega_{n}^{-1})^{0} &(\omega_{n}^{-1})^{1} &\cdots &(\omega_{n}^{-1})^{n - 1} \\
\vdots &\vdots &\ddots &\vdots \\
(\omega_{n}^{-(n - 1)})^{0} &(\omega_{n}^{-(n - 1)})^{1} &\cdots &(\omega_{n}^{-(n - 1)})^{n - 1}
\end{bmatrix} = E\)



\(D = \begin{bmatrix} (\omega_{n}^{0})^{0} & (\omega_{n}^{0})^{1} & \cdots & (\omega_{n}^{0})^{n - 1} \\ (\omega_{n}^{1})^{0} & (\omega_{n}^{1})^{1} & \cdots & (\omega_{n}^{1})^{n - 1} \\ \vdots &\vdots & \ddots & \vdots \\ (\omega_{n}^{n - 1})^{0} & (\omega_{n}^{n - 1})^{1} & \cdots & (\omega_{n}^{n - 1})^{n - 1} \end{bmatrix}\)

\(V = \begin{bmatrix}
(\omega_{n}^{-0})^{0} &(\omega_{n}^{-0})^{1} &\cdots &(\omega_{n}^{-0})^{n - 1} \\
(\omega_{n}^{-1})^{0} &(\omega_{n}^{-1})^{1} &\cdots &(\omega_{n}^{-1})^{n - 1} \\
\vdots &\vdots &\ddots &\vdots \\
(\omega_{n}^{-(n - 1)})^{0} &(\omega_{n}^{-(n - 1)})^{1} &\cdots &(\omega_{n}^{-(n - 1)})^{n - 1}
\end{bmatrix}\)

\(\sum_{i = 0}^{n - 1}\sum_{j = 0}^{n - 1} E_{ij} = D_{ik}V_{kj}\)

当\(i == j\)

\(E_{ij} = n\)

当\(i != j\)

\(E_{ij} = \sum_{k = 0}^{n - 1} D_{ik}V_{kj}\)

\(E_{ij} = \sum_{k = 0}^{n - 1} \omega_{n}^{ik - kj}\)

\(E_{ij} = \sum_{k = 0}^{n - 1} \omega_{n}^{k(i - j)}\)

\(E_{ij} = \frac{1 - (\omega_{n}^{i - j})^n}{1 - \omega_{n}^{i - j}}\)

根据单位根神奇的性质,我们有

\((\omega_{n}^{i - j})^n = 1\)!

这样的话

\(E = nI\)

\(I\)是单位矩阵

所以就有了

\(\frac{1}{n} \begin{bmatrix} (\omega_{n}^{0})^{0} & (\omega_{n}^{0})^{1} & \cdots & (\omega_{n}^{0})^{n - 1} \\ (\omega_{n}^{1})^{0} & (\omega_{n}^{1})^{1} & \cdots & (\omega_{n}^{1})^{n - 1} \\ \vdots &\vdots & \ddots & \vdots \\ (\omega_{n}^{n - 1})^{0} & (\omega_{n}^{n - 1})^{1} & \cdots & (\omega_{n}^{n - 1})^{n - 1} \end{bmatrix} \begin{bmatrix} A(\omega_{0}) \\ A(\omega_{1})\\ \vdots \\ A(\omega_{n - 1}) \end{bmatrix} = \begin{bmatrix} a_{0}\\ a_{1}\\ \vdots \\ a_{n - 1} \end{bmatrix}\)

妙趣横生,我们只需要把原来的FFT的单位根改成反着旋转,最后除一下数组长度即可

然而???你说你会,因为wys在WC2018讲过了。。。(大雾

其实二维的毕克在WC2017也讲了,显然这道题是BI KE出的。。。= =

我们考虑一个\(n(n - 1)\)的矩阵!

\(\begin{bmatrix}
(\omega_{n}^{0})^{0}(\omega_{n - 1}^{0})^{0} &(\omega_{n}^{0})^{0}(\omega_{n - 1}^{0})^{1} &\cdots &(\omega_{n}^{0})^{n - 1}(\omega_{n - 1}^{0})^{n - 3} &(\omega_{n}^{0})^{n - 1}(\omega_{n - 1}^{0})^{n - 2} \\
(\omega_{n}^{0})^{0}(\omega_{n - 1}^{1})^{0}&(\omega_{n}^{0})^{0}(\omega_{n - 1}^{1})^{1} & \cdots &(\omega_{n}^{0})^{n - 1}(\omega_{n - 1}^{1})^{n - 3} & (\omega_{n}^{0})^{n - 1}(\omega_{n - 1}^{1})^{n - 2}\\
\vdots &\vdots & \ddots &\vdots & \vdots \\
(\omega_{n}^{n - 1})^{0}(\omega_{n - 1}^{n - 3})^{0} & (\omega_{n}^{n - 1})^{0}(\omega_{n - 1}^{n - 3})^{1} & \cdots & \vdots & \vdots \\
(\omega_{n}^{n - 1})^{0}(\omega_{n - 1}^{n - 2})^{0} & (\omega_{n}^{n - 1})^{0}(\omega_{n - 1}^{n - 2})^{1} & \cdots & (\omega_{n}^{n - 1})^{n - 1}(\omega_{n - 1}^{n - 2})^{n - 3} & (\omega_{n}^{n - 1})^{n - 1}(\omega_{n - 1}^{n - 2})^{n - 2}
\end{bmatrix}\begin{bmatrix}
a_{0,0}\\
a_{0,1}\\
\vdots \\
a_{n-1,n-3}\\
a_{n-1,n-2}
\end{bmatrix} = \begin{bmatrix}
A(\omega_{n}^{0}\omega_{n - 1}^{0})\\
A(\omega_{n}^{0}\omega_{n - 1}^{1})\\
\vdots \\
A(\omega_{n}^{n - 1}\omega_{n - 1}^{n - 3})\\
A(\omega_{n}^{n - 1}\omega_{n - 1}^{n - 2})
\end{bmatrix}\)

按照一样的方法把号都取反

\(D = \begin{bmatrix}
(\omega_{n}^{0})^{0}(\omega_{n - 1}^{0})^{0} &(\omega_{n}^{0})^{0}(\omega_{n - 1}^{0})^{1} &\cdots &(\omega_{n}^{0})^{n - 1}(\omega_{n - 1}^{0})^{n - 3} &(\omega_{n}^{0})^{n - 1}(\omega_{n - 1}^{0})^{n - 2} \\
(\omega_{n}^{0})^{0}(\omega_{n - 1}^{1})^{0}&(\omega_{n}^{0})^{0}(\omega_{n - 1}^{1})^{1} & \cdots &(\omega_{n}^{0})^{n - 1}(\omega_{n - 1}^{1})^{n - 3} & (\omega_{n}^{0})^{n - 1}(\omega_{n - 1}^{1})^{n - 2}\\
\vdots &\vdots & \ddots &\vdots & \vdots \\
(\omega_{n}^{n - 1})^{0}(\omega_{n - 1}^{n - 3})^{0} & (\omega_{n}^{n - 1})^{0}(\omega_{n - 1}^{n - 3})^{1} & \cdots & \vdots & \vdots \\
(\omega_{n}^{n - 1})^{0}(\omega_{n - 1}^{n - 2})^{0} & (\omega_{n}^{n - 1})^{0}(\omega_{n - 1}^{n - 2})^{1} & \cdots & (\omega_{n}^{n - 1})^{n - 1}(\omega_{n - 1}^{n - 2})^{n - 3} & (\omega_{n}^{n - 1})^{n - 1}(\omega_{n - 1}^{n - 2})^{n - 2}
\end{bmatrix}\)

\(V = \begin{bmatrix}
(\omega_{n}^{-0})^{0}(\omega_{n - 1}^{-0})^{0} &(\omega_{n}^{-0})^{0}(\omega_{n - 1}^{-0})^{1} &\cdots &(\omega_{n}^{-0})^{n - 1}(\omega_{n - 1}^{-0})^{n - 3} &(\omega_{n}^{-0})^{n - 1}(\omega_{n - 1}^{-0})^{n - 2} \\
(\omega_{n}^{-0})^{0}(\omega_{n - 1}^{-1})^{0}&(\omega_{n}^{-0})^{0}(\omega_{n - 1}^{-1})^{1} & \cdots &(\omega_{n}^{-0})^{n - 1}(\omega_{n - 1}^{-1})^{n - 3} & (\omega_{n}^{-0})^{n - 1}(\omega_{n - 1}^{-1})^{n - 2}\\
\vdots &\vdots & \ddots &\vdots & \vdots \\
(\omega_{n}^{-(n - 1)})^{0}(\omega_{n - 1}^{-(n - 3)})^{0} & (\omega_{n}^{-(n - 1)})^{0}(\omega_{n - 1}^{-(n - 3)})^{1} & \cdots & \vdots & \vdots \\
(\omega_{n}^{-(n - 1)})^{0}(\omega_{n - 1}^{-(n - 2)})^{0} & (\omega_{n}^{-(n - 1)})^{0}(\omega_{n - 1}^{-(n - 2)})^{1} & \cdots & (\omega_{n}^{-(n - 1)})^{n - 1}(\omega_{n - 1}^{-(n - 2)})^{n - 3} & (\omega_{n}^{-(n - 1)})^{n - 1}(\omega_{n - 1}^{-(n - 2)})^{n - 2}
\end{bmatrix}\)

\(E = DV\)

\(\sum_{i = 0}^{n(n - 1) - 1}\sum_{j = 0}^{n(n - 1) - 1} E_{i,j} = D_{i,k}V_{k,j}\)

考虑把标号拆成一个点,类似一些的矩阵标号方法?

设数值为i拆成的点是\(i_{x},i_{y}\)

当\(i == j\)时

\(E_{i,j} = (\omega_{n}^{i_{x}})^{k_x}(\omega_{n - 1}^{i_y})^{k_y} (\omega_{n}^{-k_{x}})^{j_x}(\omega_{n - 1}^{-k_y})^{j_y}\)

\(E_{i,j} = n * (n - 1)\)

而当\(i != j\)时

\(E_{i,j} = (\omega_{n}^{i_{x}})^{k_x}(\omega_{n - 1}^{i_y})^{k_y} (\omega_{n}^{-k_{x}})^{j_x}(\omega_{n - 1}^{-k_y})^{j_y}\)

\(E_{i,j} = \omega_{n}^{k_x(i_{x} - j_{x})}\omega_{n - 1}^{k_y(i_{y} - j_{y})}\)

嗯?迷一般的。。。眼熟?

可是这样就不是等比数列了?…………等等!

\(E_{i,j} = \sum_{k_{x} = 0}^{n - 1}\omega_{n}^{k_x(i_{x} - j_{x})}\sum_{k_{y} = 0}^{n - 2}\omega_{n - 1}^{k_y(i_{y} - j_{y})}\)

\(E_{i,j} = \frac{1 - \omega_{n}^{n(i_{x} - j_{x})}}{1 - \omega_{n}^{i_x - j_x}}\frac{1 - \omega_{n - 1}^{(n - 1)(i_{y} - j_{y})}}{1 - \omega_{n - 1}^{i_{y} - j_{y}}}\)

\(E_{i,j} = 0\)

也就是!我们把等比数列的公比q当成了\(\omega_{n}^{i_x - j_x}\)

后面就不写了,大家都知道了,最后模长除个\(n(n - 1)\)就可以了!

说到这,我想我已经想到了一个绝妙的\(n^2 \log n\)的二维FFT(在界是2^k的情况下)

我猜你们也想到了,大概二进制平摊反转这一个小技巧就不能用了,可以递归

代码

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. #define MAXM 100005
  6. //#define ivorysi
  7. using namespace std;
  8. typedef long long int64;
  9. const int MOD = 1163962801,G = 46;
  10. int N,M,T;
  11. int px[105],py[105];
  12. struct node {int s,t,x,y;} E[MAXM];
  13. int v[25][25][25][25],w[25][25];
  14. struct Matrix {
  15. int f[24][24];
  16. void clear() {
  17. memset(f,0,sizeof(f));
  18. }
  19. friend Matrix operator * (const Matrix &a,const Matrix &b) {
  20. Matrix c;c.clear();
  21. for(int i = 1 ; i <= N ; ++i) {
  22. for(int j = 1 ; j <= N ; ++j) {
  23. for(int k = 1 ; k <= N ; ++k) {
  24. c.f[i][j] = (c.f[i][j] + 1LL * a.f[i][k] * b.f[k][j] % MOD) % MOD;
  25. }
  26. }
  27. }
  28. return c;
  29. }
  30. void set_Matrix(int x,int y) {
  31. clear();
  32. for(int i = 1 ; i <= M ; ++i) {
  33. f[E[i].s][E[i].t] = (f[E[i].s][E[i].t] + 1LL * px[E[i].x * x % N] * py[E[i].y * y % (N - 1)] % MOD) % MOD;
  34. }
  35. }
  36. }A,Ans,I;
  37. int fpow(int x,int c) {
  38. int res = 1,t = x;
  39. while(c) {
  40. if(c & 1) res = 1LL * res * t % MOD;
  41. t = 1LL * t * t % MOD;
  42. c >>= 1;
  43. }
  44. return res;
  45. }
  46. void mul(int c) {
  47. Ans = I;Matrix t = A;
  48. while(c) {
  49. if(c & 1) Ans = Ans * t;
  50. t = t * t;
  51. c >>= 1;
  52. }
  53. }
  54. void Process(int x,int y) {
  55. for(int i = 0 ; i < N ; ++i) {
  56. for(int j = 0 ; j < N - 1 ; ++j) {
  57. w[i][j] = 0;
  58. for(int k = 0 ; k < N ; ++k) {
  59. for(int l = 0 ; l < N - 1 ; ++l) {
  60. w[i][j] = (w[i][j] + 1LL * v[x][y][k][l] * px[N - k * i % N] % MOD
  61. * py[N - 1 - l * j % (N - 1)] % MOD) % MOD;
  62. }
  63. }
  64. w[i][j] = 1LL * w[i][j] * fpow(N * (N - 1),MOD - 2) % MOD;
  65. }
  66. }
  67. }
  68. void Init() {
  69. scanf("%d%d%d",&N,&M,&T);
  70. for(int i = 1 ; i <= M ; ++i) {
  71. scanf("%d%d%d%d",&E[i].s,&E[i].t,&E[i].x,&E[i].y);
  72. E[i].x %= N;
  73. E[i].y %= N - 1;
  74. }
  75. px[0] = 1;py[0] = 1;
  76. px[1] = fpow(G,(MOD - 1) / N);
  77. py[1] = fpow(G,(MOD - 1) / (N - 1));
  78. for(int i = 2 ;i <= N ; ++i) {
  79. px[i] = 1LL * px[i - 1] * px[1] % MOD;
  80. py[i] = 1LL * py[i - 1] * py[1] % MOD;
  81. }
  82. }
  83. void Solve() {
  84. Init();
  85. I.clear();
  86. for(int i = 1 ; i <= N ; ++i) I.f[i][i] = 1;
  87. for(int i = 0 ; i < N ; ++i) {
  88. for(int j = 0 ; j < N - 1 ; ++j) {
  89. A.set_Matrix(i,j);
  90. mul(T);
  91. for(int k = 1 ; k <= N ; ++k) {
  92. for(int l = 1 ; l <= N ; ++l) {
  93. v[k][l][i][j] = Ans.f[k][l];
  94. }
  95. }
  96. }
  97. }
  98. for(int i = 1 ; i <= N ; ++i) {
  99. Process(i,i);
  100. for(int k = 0 ; k < N ; ++k) {
  101. for(int l = 0 ; l < N - 1 ; ++l) {
  102. printf("%d%c",w[k][l]," \n"[l == N - 2]);
  103. }
  104. }
  105. }
  106. }
  107. int main() {
  108. #ifdef ivorysi
  109. freopen("f1.in","r",stdin);
  110. #endif
  111. Solve();
  112. }

【Codechef】Chef and Bike(二维多项式插值)的更多相关文章

  1. [题解] Atcoder Beginner Contest ABC 265 Ex No-capture Lance Game DP,二维FFT

    题目 首先明确先手的棋子是往左走的,将其称为棋子1:后手的棋子是往右走的,将其称为棋子2. 如果有一些行满足1在2右边,也就是面对面,那其实就是一个nim,每一行都是一堆石子,数量是两个棋子之间的空格 ...

  2. matlab学习——05插值和拟合(一维二维插值,拟合)

    05插值和拟合 1.一维插值 (1) 机床加工零件,试用分段线性和三次样条两种插值方法计算.并求x=0处的曲线斜率和13<=x<=15范围内y的最小值. x0=[0 3 5 7 9 11 ...

  3. @codechef - BIKE@ Chef and Bike

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 输入 n(n ≤ 22) 个点,m(m ≤ 8000) 个边.每 ...

  4. 图像的降采样与升采样(二维插值)----转自LOFTER-gengjiwen

    图像的降采样与升采样(二维插值) 1.先说说这两个词的概念: 降采样,即是采样点数减少.对于一幅N*M的图像来说,如果降采样系数为k,则即是在原图中 每行每列每隔k个点取一个点组成一幅图像.降采样很容 ...

  5. MATLAB二维插值和三维插值

    插值问题描述:已知一个函数上的若干点,但函数具体表达式未知,现在要利用已知的若干点求在其他点处的函数值,这个过程就是插值的过程. 1.一维插值 一维插值就是给出y=f(x)上的点(x1,y1),(x2 ...

  6. 用Python实现根据角4点进行矩阵二维插值并画出伪彩色图

    哈哈,题目取得这么绕,其实就是自己写了一个很渣的类似图像放大的算法.已知矩阵四周的4点,扩展成更大的矩阵,中间的元素值均匀插入,例如: 矩阵: 1  2 3  4 扩展成3x3的: 1  1.5  2 ...

  7. 利用griddata进行二维插值

    有时候会碰到这种情况: 实际问题可以抽象为 \(z = f(x, y)\) 的形式,而你只知道有限的点 \((x_i,y_i,z_i)\),你又需要局部的全数据,这时你就需要插值,一维的插值方法网上很 ...

  8. matlab二维插值--interp2与griddata

    二者均是常用的二维插值方法,两者的区别是, interp2的插值数据必须是矩形域(X,Y必须分别是单调向量),即已知数据点(x,y)组成规则的矩阵,或称之为栅格,可使用meshgid生成. gridd ...

  9. Javascript生成二维码(QR)

    网络上已经有非常多的二维码编码和解码工具和代码,很多都是服务器端的,也就是说需要一台服务器才能提供二维码的生成.本着对服务器性能的考虑,这种小事情都让服务器去做,感觉对不住服务器,尤其是对于大流量的网 ...

随机推荐

  1. 转:NSString / NSData / char* 类型之间的转换

    1. NSString转化为UNICODE String: (NSString*)fname = @“Test”; char fnameStr[10]; memcpy(fnameStr, [fname ...

  2. Eclipse中遇到main方法不能运行 的情况

    java.lang.UnsupportedClassVersionError: Bad version number in .class file 造成这种过错是ni的支撑Tomcat运行的JDK版本 ...

  3. 二分算法的应用——最大化最小值 POJ2456 Aggressive cows

    Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: Accepted: Description Far ...

  4. JavaScript 延时与定时

    一.定时(setInterval) var i = 0; function hello(){ console.log(i++); } setInterval(hello,1000); // 每一秒执行 ...

  5. php按照指定顺序的排序

    今天遇到一个需求,需要对一个数组按指定顺序进行排序,最终查到个解决办法: $sort_rule = [5,7,3,1,8,2]; $arr = [1,2,3,5,7,8]; //需求,将数组$arr以 ...

  6. Git为某个域名设置代理

    打开Git 配置文件 vi ~/.gitconfig 添加如下配置: [http "https://github.com/"] proxy = http://127.0.0.1:1 ...

  7. 有用的JavaScript开发小建议

    这篇文章将向你分享一些不为人知的但很有用的JavaScript小建议,对那些刚涉及使用JavaScript编程语言的初级开发者应该有很大的帮助. 1. 用数组长度截取数组 我们都知道,对象都是通过使用 ...

  8. ctime 时间

    1. 类型clock_t: 是个long型,用来记录一段时间内的时钟计时单元数,即CPU的运行单元时间.size_t: 标准C库中定义的,应为unsigned int,在64位系统中为long uns ...

  9. 20165329 Java实验二:面向对象编程

    实验内容: 面向对象程序设计-1 实验要求: 提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图 实验步骤: 1.按照老师博客的要求新建一个MyUtil项目 在src内新建ja ...

  10. [MySQL优化案例]系列 — 优化InnoDB表BLOB列的存储效率

    首先,介绍下关于InnoDB引擎存储格式的几个要点:1.InnoDB可以选择使用共享表空间或者是独立表空间方式,建议使用独立表空间,便于管理.维护.启用 innodb_file_per_table 选 ...