1208: D.锐雯上单不给就送

时间限制: 1 Sec  内存限制: 64 MB
提交: 39  解决: 8

标签提交统计讨论版

题目描述

《英雄联盟》(简称LOL)是由美国Riot Games开发,腾讯游戏运营的英雄对战网游。《英雄联盟》除了即时战略、团队作战外,还拥有特色的英雄、自动匹配的战网平台,包括天赋树、召唤师系统、符文等元素。简单来说,LOL是一个10人组的对战游戏,一个队伍(5个人)对抗另一个队伍(5个人),主要目的是拆掉对面的建筑物,一个每个队伍的英雄都扮演着不同的角色,分别为“上单”,“打野”,“中单”,“辅助”,“ADC”,通常的情况是各自队伍的“上单”VS“上单”,“打野”VS“打野”,“中单”VS“中单”,“辅助”VS“辅助”,“ADC”VS“ADC”。上单在LOL中一直是一个很吃香的角色,一般小学生进入匹配以后都会强调一句“锐雯上单不给就送”作为联络暗号。zz_1215和devtang经常玩这个游戏,zz_1215是devtang的宿敌,devtang很想知道zz_1215玩的什么角色,然后他就选同样的角色和zz_1215决斗(solo)。经过观察devtang发现zz_1215选择什么角色是有规律的,那就是取决于他上一次玩的什么角色。现用一个5*5的矩阵来表示,表示上一次如果zz_1215玩的是第j个角色,那么他这一次玩第i个角色的概率为,另外有。现在知道zz_1215第一次玩的是什么角色,devtang想知道在第n次游戏中,zz_1215最有可能玩的是什么角色。

输入

首先是一个正整数T,表示有T组数据
每组数据包括
第一行是一个数字n,表示devtang想知道第n次游戏中zz_1215最可能玩的角色
接下来会给出5*5的矩阵表示概率关系
最后一行给出整数m()表示zz_1215第一次游戏玩的角色,角色表示方法见注意事项

输出

输出第n次游戏中,zz_1215最有可能玩的角色,角色表示方法见注意事项,每个输出单独占一行

Sample Input

2 //T

0 0.1 0.2 0.3 0.4
0.4 0 0.1 0.2 0.3
0.3 0.4 0 0.1 0.2
0.2 0.3 0.4 0 0.1
0.1 0.2 0.3 0.4 0
3
2 //第2次玩什么
0 0.1 0.2 0.3 0.4
0.4 0 0.1 0.2 0.3
0.3 0.4 0 0.1 0.2
0.2 0.3 0.4 0 0.1 //看第3列 0.4最大 所以下一次玩4
0.1 0.2 0.3 0.4 0
3 //第一次玩3

Sample Output

3
4

提示

1,2,3,4,5分别代表“上单”,“打野”,“中单”,“辅助”,“ADC”这五个角色,如果存在多个角色的概率相同的话,那么就选择下标最小的那个,比如经过计算1,3的概率都是0.5,那么zz_1215会选择1这个角色

 1 # include <iostream>
 2 # include <cstdio>
 3 # include <cstring>
 4 # include <algorithm>
 5 # include <cmath>
 6 using namespace std ;
 7 struct Matrix
 8 {
 9     double mat[5][5];
10 };
11 Matrix mul(Matrix a,Matrix b) //矩阵乘法
12 {
13     Matrix c;
14     for(int i=0;i<5;i++)
15         for(int j=0;j<5;j++)
16         {
17             c.mat[i][j]=0;
18             for(int k=0;k<5;k++)
19             {
20                 c.mat[i][j]=(c.mat[i][j] + a.mat[i][k]*b.mat[k][j]);
21             }
22         }
23     return c;
24 }
25 Matrix pow_M(Matrix a,int k)  //矩阵快速幂
26 {
27     Matrix ans;
28     memset(ans.mat,0,sizeof(ans.mat));
29     for (int i=0;i<5;i++)
30         ans.mat[i][i]=1;
31     Matrix temp=a;
32     while(k)
33     {
34         if(k&1)ans=mul(ans,temp);
35         temp=mul(temp,temp);
36         k>>=1;
37     }
38     return ans;
39 }
40
41 int main ()
42 {
43     freopen("in.txt","r",stdin) ;
44     int T;
45     cin>>T ;
46     while(T--)
47     {
48         int n , m;
49         cin>>n ;
50         int i , j ;
51         Matrix t ;
52         for (i = 0 ; i < 5 ; i++)
53             for (j = 0 ; j < 5 ; j++)
54                 cin>>t.mat[i][j] ;
55         cin>>m ;
56         if (n == 1)
57         {
58             cout<<m<<endl ;
59             continue ;
60         }
61         n-=1 ;
62         m-=1 ;
63         double MAX = 0 ;
64         int id ;
65         Matrix ans = pow_M(t,n) ;
66
67         for (i = 4 ; i >= 0 ; i--)
68         {
69             if (ans.mat[i][m] > MAX || abs(ans.mat[i][m] - MAX) < 1e-6)
70             {
71                 MAX = ans.mat[i][m] ;
72                 id = i ;
73             }
74         }
75         cout<<id+1<<endl ;
76     }
77     return 0 ;
78 }

转载于:https://www.cnblogs.com/a1225234/p/4857355.html

锐雯上单不给就送(矩阵快速幂)相关推荐

  1. 矩阵快速幂+构造方法

    与快速幂一样,可以将递推式通过二进制的方式来进行优化,这个学了快速幂就是十分容易理解 大概的板子如下: struct mat///自己定义大小的矩阵 {ll m[11][11]; }; mat mul ...

  2. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

    原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...

  3. 快速幂 + 矩阵快速幂

    快速幂 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #define LL lo ...

  4. HDU4549(矩阵快速幂+快速幂)

    f(n)=a^f(n-1) + b^f(n-2):计算矩阵部分用矩阵快速幂:计算a的幂次和b的幂次用快速幂. #include<iostream> #include<algorith ...

  5. [HNOI2008]GT考试[矩阵快速幂+kmp优化的dp]

    解题思路:假如说我们用f[i]表示长度为i的串能组合成无不吉利数字的组合的个数的话我们无法找到f[i]和f[i+1]的关系,就是我们下一位填某个数字会不会出现不吉利串,这就和你前面的串末尾于不吉利串重 ...

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

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

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

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

  8. HDU 6185 Covering 矩阵快速幂 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6185 题目描述: 一个4*n的矩形, 你用1*2的矩形覆盖有多少种方案, n <= 1e18 ...

  9. bzoj 1409 Password 矩阵快速幂+欧拉函数

    可以发现,该数组的mi就是斐波那契数列 所以要矩阵快速幂搞出第n位 但是斐波那契数列上涨的很快,这就需要欧拉定理了 p^phi(q)%q=1(gcd(p,q)==1) p是素数,所以可以用 然后需要5 ...

最新文章

  1. linux下配置tomcat、resin
  2. ueditor1.4.3jsp版成功上传图片后却回显不出来与在线管理显示不出图片的解决方案...
  3. 机器学习(MACHINE LEARNING)多属性决策模型
  4. 请问.NET如何实现分布式系统?
  5. html中加盒子,在HTML中各类型盒子的基线应如何确定
  6. win10操作技巧介绍,很实用!
  7. java process 重启_JAVA Process启动sh 后的问题
  8. mysqlinnodb教程_MySQL创建数据表时设定引擎MyISAM/InnoDB操作
  9. JavaWeb项目启动时,tomcat会启动两次的原因(之一)和解决方案
  10. wordpress api ajax,Woocommerce rest api - 在wordpress中通过ajax创建产品
  11. 十分钟快速上手结巴分词
  12. [C#] UTF-8 ENCODING=QUOTED-PRINTABLE 的解码和编码
  13. STAR对RNA seq进行map
  14. spring cloud 微服务调用链
  15. 四元数旋转表达(Hamilton notation JPL notation)
  16. GraphTrans:Representing Long-Range Context for Graph Neural Networks with Global Attention
  17. 光猫恢复出厂后,逻辑ID重新注册
  18. MTK虚拟sensor梳理
  19. VMware需您及安装GHOST 黑屏提示NTLDR ismissing解决方案
  20. AprilTag的Tag识别,定位以及跟随

热门文章

  1. 敏而好学不耻下问 _ 2010开学第一课
  2. 51nod 1019 逆序数
  3. os.walk | Python文件管理神器
  4. 计算机老师中专教学论文,中职计算机教学中的应用论文
  5. Shadertoy搬运-基本方法
  6. gerrit上的commit msg中关联jira单号(含gerrit的安装)
  7. linux查看网卡驱动的命令,在Linux下确定网卡所使用驱动程序的方法
  8. html table to excel 然后打印,Convert Html Table to Excel
  9. 工作中:解决wps文字无法打开数据源
  10. 二战十大致命武器之88毫米高射炮