5480: 孤衾易暖

时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte

描述

哇,好难,我要放弃了(扶我起来,我还能A

寒夜纵长,孤衾易暖,钟鼓渐清圆。

生活也许有些不如意的地方,但是没有什么是拥有一只猫不能解决的,我最喜欢苏格兰折耳猫。

现在我有n只小猫,我要训练这些猫去满足我奇奇怪怪的需求。

就是要让他们去得到鱼,这样他们才会快乐。刚开始他们是没有鱼的

我对这些猫有3种训练要求:

第一种要求为get x,意为让第x只猫咪得到一条;

第二种要求为eat x,意为让第x只猫咪吃掉它所有的鱼;

第三种要求为exchange x y,意为让第x只猫咪和第y只猫咪交换他们的鱼。

人们经常都是复读机,猫也不例外,你给他们设定某组操作,让他们重复就好了。

他们需要重复执行某组操作(含有k个要求)m次,求最后它们都有多少只鱼。

输入

输入包括多组样例,读到文件结尾。

输入的第一行为三个整数n,m,k,代表有n只猫,要重复的次数m和k个要求组成的操作。

接下来有k行,每一行都有一个训练方式(m≤1,000,000,000, n≤100, k≤100)。

输出

对于每个样例都在一行上输出n个数,代表每只猫有多少只鱼。

样例输入

3 1 6
get 1
get 2
get 2
exchange 1 2
get 3
eat 2

样例输出

2 0 1

提示

第一只猫得到1条鱼,第2只猫得到1条鱼,第2只猫得到1条鱼,交换1和2的鱼数。

第1只猫现在有2条鱼,第2只猫现在有1条鱼。第三只猫有一条鱼,然后第二只猫的鱼被吃完。

所以第1只猫现在有2条鱼,第2只猫现在有0条鱼,第三只猫有1条鱼。而且只有一次,故输出2 0 1。

题目来源

TOJ

题目链接:http://tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=5480

http://poj.org/problem?id=3735

两个题目是一样的,只不过一个英文题面一个中文题目

按照题目要求构造出矩阵,重复的次数用矩阵快速幂计算

对于题目要求的三种操作,可以按照下面的方法构造矩阵

第一种要求为get x,意为让第x只猫咪得到一条;

即x的位置+1

第二种要求为eat x,意为让第x只猫咪吃掉它所有的鱼;

即x的位置归0

第三种要求为exchange x y,意为让第x只猫咪和第y只猫咪交换他们的鱼。

即swap(x,y)

#include <bits/stdc++.h>
using namespace std;
#define LL __int64
struct A{LL data[111][111];int n;void ini(int nn){//初始化全0矩阵 n=nn;memset(data,0,sizeof(data));}void dw(int nn){//单位矩阵 ini(nn);for(int i=0;i<=n;i++)data[i][i]=1;}A(){n=2;memset(data,0,sizeof(data));}
};
int n;
A operator* (A a,A b)//矩阵乘法,重载乘号
{A ans;for(int i=0;i<=n;i++){for(int j=0;j<=n;j++){if(a.data[i][j]==0)continue;for(int k=0;k<=n;k++){ans.data[i][k]+=a.data[i][j]*b.data[j][k];}}}return ans;
}
A operator^ (A a,int k)//矩阵次幂
{A ans;ans.dw(n);while(k){if(k&1)ans=ans*a;a=a*a;k>>=1;}return ans;
}
int main(){int m,k,x,y;A T;char ch[15];while(~scanf("%d%d%d",&n,&m,&k)){T.dw(n);while(k--){scanf("%s",ch);if(ch[0]=='g'){scanf("%d",&x);T.data[0][x]++;}else if(ch[0]=='e'){if(ch[1]=='x'){scanf("%d %d",&x,&y);for(int i=0;i<=n;i++){swap(T.data[i][x],T.data[i][y]);}}else { scanf("%d",&x);for(int i=0;i<=n;i++){T.data[i][x]=0;}}}}T=T^m;printf("%I64d",T.data[0][1]);for(int i=2;i<=n;i++){printf(" %I64d",T.data[0][i]);}puts("");}
}

  

转载于:https://www.cnblogs.com/Anidlebrain/p/10060964.html

TZOJ--5480: 孤衾易暖 // POJ--3735 Training little cats (矩阵快速幂)相关推荐

  1. POJ 3735 Training little cats​ 题解 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 3735 Training little cats调教猫咪:有n只饥渴的猫咪,现有一组羞耻Play,由k个操作组成,全部选自: ...

  2. POJ 3233 Matrix Power Series 矩阵快速幂 + 二分

    题意:求矩阵的次方和 解题思路:最容易想到方法就是两次二分因为 我们可以把一段  A^1 + A^2 + .......A^K   变成  A^1 + ..A^(K/2) +( A^1 + ..A^( ...

  3. poj - problem 3070 Fibonacci 【矩阵 +快速幂】

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13732   Accepted: 9728 Descri ...

  4. I-Matrix Power Series POJ - 3233 矩阵快速幂+分治

    I-Matrix Power Series POJ - 3233 矩阵快速幂+分治 Problem Description Given a n × n matrix A and a positive ...

  5. H - Fibonacci POJ - 3070 (矩阵快速幂)

    H - Fibonacci POJ - 3070 (矩阵快速幂) Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and ...

  6. POJ 2778 DNA Sequence [AC自动机 + 矩阵快速幂]

    http://poj.org/problem?id=2778 题意:给一些只由ACGT组成的模式串,问有多少种长度为n且不含有给出的模式串的DNA序列. 自动机的状态转换可以看成一个有向图(有重边的) ...

  7. POJ 3070 Fibonacci(矩阵快速幂入门、模板)

    ? 题目链接:http://poj.org/problem?id=3070 ?   这题就是让求斐波那契数列的第n项,但是题目中n很大,所以打表和直接求都会TLE,对于这个题我们可以用矩阵快速幂,下面 ...

  8. 矩阵快速幂 POJ 3070 Fibonacci

    题目传送门 1 /* 2 矩阵快速幂:求第n项的Fibonacci数,转置矩阵都给出,套个模板就可以了.效率很高啊 3 */ 4 #include <cstdio> 5 #include ...

  9. POJ 2778 DNA Sequence —— (AC自动机+矩阵快速幂)

    距离上次做AC自动机有很久了=.=,以前这题的思路死活看不懂,现在还是觉得很好理解的. 思路参见:http://blog.csdn.net/morgan_xww/article/details/783 ...

最新文章

  1. 《物联网框架ServerSuperIO教程》- 23.动态数据接口增加缓存,提高数据输出到OPCServer和(实时)数据库的效率...
  2. 学习笔记(一)——图像的灰度级和动态范围
  3. QT中关于窗口全屏显示与退出全屏的实现
  4. 2.5 Hive中外部表的讲解
  5. vue computed 使用小问题
  6. 《算法导论》学习总结 — 21.第16章 贪心算法(1) 基础入门1
  7. ORACLE 如何产生一个随机数
  8. 浅谈App-V(附:参考资料)
  9. 微软智能云三驾马车 Azure、Office 365、Dynamics 365 齐聚中国
  10. pow计算x的y次方
  11. 讯飞输入法(原讯飞语音输入法) V2.1.1708 官方版-完美软件下载
  12. Linux学习笔记(7)
  13. 手工清除severe.exe病毒
  14. ubuntu防火墙,ufw命令
  15. 此数据库处于单用户模式,当前某个用户已与其连接。 ALTER DATABASE 语句失败。 (Microsoft SQL Server,错误: 5064)...
  16. 移动硬盘中安装ubuntu系统——Vmware Workstation安装
  17. python安装math模块_python math模块
  18. Torchtext快速入门(一)——Vocab
  19. 文末有福利 | 停不下来!程序员在GitHub上开源了一个自制表情包项目
  20. Java会被禁吗_关于java:如果字符串对象被禁闭,那么为什么一个更改不会影响其他对象...

热门文章

  1. Maven Web项目解决跨域问题
  2. 总结verilog产生随机数的$random和seed
  3. windows 删除删除不掉的文件
  4. 红外感应模块+蜂鸣器实现简易报警(转)
  5. python 下字符串格式时间比较
  6. 创业不要把大公司当直接对手
  7. Mac OS 被XCode搞到无法正常开机怎么办?
  8. 感染EXE文件代码(C++)
  9. 数组元素前移后移 RUNOOB python练习题 68
  10. oracle部署--安装oracle软件与部署单实例数据库