题意:有n只猫,对其进行k次操作,然后反复这样操作m次。

   其中g 表示 i 猫加1, e表示 i 猫为0;s表示  i 与 j 猫互换。

解释一下样例:

3 1 6
g 1
g 2
g 2
s 1 2
g 3
e 2

则, (g 1 第一只猫加1):1, 0, 0;=>1,1,0=>1,2,0=>(s 1 2 第一只猫和第二只猫互相交换)2,1,0=>2,1,1=>(第2只猫为0)2,0,1;

好了:我们知道初等矩阵:有交换,置0,哪一行加常数的作用。

偷一张图:

像这样!是不是就可以表示各个操作了,其实,这样就相当于每次操作产生一个转置矩阵的初等矩阵T, 那么k次操作就相当于产生k次矩阵。

当然,直接把k次操作赋值给矩阵,其实相当于把k个转置矩阵的初等矩阵变成了一个,(慢慢想其实他们是等价的)。

最后,有多少次这样的操作就快速幂m几次。

答案就是矩阵[0][1--size]输出就行

代码如下:注意(这个代码还是有问题的,我也不知道运行时错误)

#include<iostream>
#include<cstring>
using namespace std;
#define ll long long
ll n;
struct jz
{
ll num[][];
jz(){ memset(num, , sizeof(num)); }
jz operator*(const jz&p)const
{
jz ans;
for (int k = ; k <= n;++k)
for (int i = ; i <= n;++i)
for (int j = ; j <= n; ++j)
ans.num[i][j] = ans.num[i][j] + num[i][k] * p.num[k][j];
return ans;
}
};
jz POW(jz x, ll n)
{
jz ans;
for (int i = ; i <= n; ++i)ans.num[i][i] = ;
for (; n; n>>=, x=x*x)
if (n & )ans = ans*x;
return ans;
}
int main()
{
ll m, k;
while (cin>>n>>m>>k&&(n+m+k))
{
jz ans;
for (int i = ; i <= n; i++)ans.num[i][i] = ;
char ch[];
int i, j;
while (k--)
{
cin >> ch >> i;
if (ch[] == 'g'){ ans.num[][i]++; }
else if (ch[] == 'e')
{
for (int k = ; k <= n; ++k)
ans.num[k][i] = ;
}
else
{
cin >> j;
for (int k = ; k <= n; ++k)
{
swap(ans.num[k][i], ans.num[k][j]);
}
}
}
ans = POW(ans, m);
for (int i = ; i <= n; ++i)
cout << ans.num[][i] << " \n"[i == n];
}
return ;
}

xiaowuga poj3735—Training little cats(特殊操作转化为矩阵操作)的更多相关文章

  1. poj3735—Training little cats(特殊操作转化为矩阵操作)

    题目链接:http://poj.org/problem?id=3735 题目意思: 调教猫咪:有n只饥渴的猫咪,现有一组羞耻连续操作,由k个操作组成,全部选自: 1. g i 给第i只猫咪一颗花生 2 ...

  2. [POJ3735]Training little cats

    题目:Training little cats 链接:http://poj.org/problem?id=3735 分析: 1)将操作用矩阵表示出来,然后快速幂优化. 2)初始矩阵:$ \left[ ...

  3. Training little cats poj3735

    Training little cats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9299   Accepted: 2 ...

  4. Training little cats(poj3735,矩阵快速幂)

    Training little cats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10737   Accepted:  ...

  5. [poj3735] Training little cats_矩乘快速幂

    Training little cats poj-3735 题目大意:给你n个数,k个操作,将所有操作重复m次. 注释:三种操作,将第i个盒子+1,交换两个盒子中的个数,将一个盒子清空.$1\le m ...

  6. 矩阵快速幂 POJ 3735 Training little cats

    题目传送门 /* 题意:k次操作,g:i猫+1, e:i猫eat,s:swap 矩阵快速幂:写个转置矩阵,将k次操作写在第0行,定义A = {1,0, 0, 0...}除了第一个外其他是猫的初始值 自 ...

  7. [POJ 3735] Training little cats (结构矩阵、矩阵高速功率)

    Training little cats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9613   Accepted: 2 ...

  8. POJ 3735 Training little cats<矩阵快速幂/稀疏矩阵的优化>

    Training little cats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13488   Accepted:  ...

  9. POJ 3735 Training little cats(矩阵快速幂)

    Training little cats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11787 Accepted: 2892 ...

随机推荐

  1. MySQLdump之single-transaction详解

    MySQLdump之single-transaction详解 single-transaction 开启general log选项 查看目前general log的情况 mysql> show ...

  2. webpack打包去除map文件及其他一些配置

    一.vue-cli(3.x)搭建的项目,webpack(3.x)打包时,生成的map文件很大,目前又不知道是干嘛用的,所以就直接去掉了. 方法: 修改sourceMap配置成为false. 1:在bu ...

  3. js jq输入框中按回车触发提交事件,用户在页面输入后按回车(Enter键)进行

    js jq输入框中按回车触发提交事件,用户在页面输入后按回车(Enter键)进行 代码如下: <!DOCTYPE html> <html lang="en" xm ...

  4. pygame编程之font模块

    方法一:pygame.font.Font(file, size=-1) 参数file:采用字体文件的路径,如果file参数设置为None则默认采用系统自带字体,如果自带字体文件无法打开就会报错: 参数 ...

  5. 在线客服兼容谷歌Chrome、苹果Safari、Opera浏览器的修改

    纵览全网提供的众多号称兼容多浏览器的自动收缩在线客服,其实只兼容了IE和FF两种,当遇到谷歌Chrome.苹果Safari.Opera浏览器时鼠标还没点到客服按钮就会自动缩回,实用效果完全打折 以下代 ...

  6. [总结]jQuery之常用函数方法参考手册

    w3school参考地址:http://www.w3school.com.cn/jquery/index.asp runoob参考地址:http://www.runoob.com/jquery/jqu ...

  7. cors解决跨域问题

    在作前后端分离的时候,我们总是要做跨域处理. 使用 express 框架搭建项目的时候可以设置如下: app.use(function (req, res, next) { res.setHeader ...

  8. SpringBoot取出信息

    1.打印头信息 @RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody publ ...

  9. IO事件驱动模型

    1:IO事件驱动模型简介 通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求: (2)每收到一个请求,创建一个新的线程,来处理该请求: (3)每 ...

  10. [20171120]11G关闭直接路径读.txt

    [20171120]11G关闭直接路径读.txt --//今天做filesystemio_options参数测试时,遇到一个关于直接路径读的问题.--//如果看以前的博客介绍,设置"_ser ...