POJ 3735 Training little cats

题意

维护一个向量, 有三种操作

  1. 将第\(i\)个数加1
  2. 将第\(i\)个数置0
  3. 交换第\(i\)个数和第\(j\)个数

Solution

矩阵乘法/快速幂

Implementation

我们将向量写成列向量的形式.
为了支持+1操作需要将向量加一维, 这一维始终是1.
有一个坑:
当若干个转移矩阵\(A_1, A_2, \dots, A_n\)(方阵)依次作用于某个向量时, 这些向量的合向量\(B\)应当写成

\[B=A_n\cdot A_{n-1} \cdot \dots \cdot A_{1} \]

这一点很容易弄反.

一开始我仿照《挑战程序设计竞赛》上的写法,用vector<vector<int>>表示矩阵,结果TLE.
无奈改成二维数组,轻松AC。还是要慎用STL。

posted @ 2016-10-13 11:36  Pat  阅读(195)  评论(0编辑  收藏  举报