bzoj2973 入门oj4798 石头游戏
我们人为地搞出来一个全能神,每次调用他他可以给一个节点 \(1\) 个石头。
这样,当前的状态就可以由上一秒的状态搞过来,这就像是一个递推。用矩阵加速。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
int n, m, t, act, len[15], wdt[105], hmn;
char ss[15][15];
ll ans;
struct MATRIX{
ll num[105][105];
MATRIX operator*(const MATRIX &x)const{
MATRIX re;
for(int i=0; i<=n*m; i++)
for(int j=0; j<=n*m; j++){
re.num[i][j] = 0;
for(int k=0; k<=n*m; k++)
re.num[i][j] += num[i][k] * x.num[k][j];
}
return re;
}
}yuan, zhu[65], dark, dan;
int getNum(int x, int y){
return (x-1)*m+y;
}
void build(int x){
for(int i=0; i<=n*m; i++){
if(i==0) zhu[x].num[0][i] = 1;
else{
int xx=(i-1)/m+1;
int yy=i-(xx-1)*m;
int pos=(x-1)%len[wdt[i]];
char ch=ss[wdt[i]][pos];
if(ch>='0' && ch<='9') zhu[x].num[0][i] = ch - '0', zhu[x].num[i][i] = 1;
else if(ch=='D') ;
else if(ch=='N' && xx>1)
zhu[x].num[i][getNum(xx-1,yy)] = 1;
else if(ch=='S' && xx<n)
zhu[x].num[i][getNum(xx+1,yy)] = 1;
else if(ch=='W' && yy>1)
zhu[x].num[i][getNum(xx,yy-1)] = 1;
else if(ch=='E' && yy<m)
zhu[x].num[i][getNum(xx,yy+1)] = 1;
}
}
}
MATRIX ksm(MATRIX a, int b){
MATRIX re=dan;
while(b){
if(b&1) re = re * a;
a = a * a;
b >>= 1;
}
return re;
}
int main(){
yuan.num[0][0] = 1;
cin>>n>>m>>t>>act;
for(int i=0; i<=n*m; i++)
dan.num[i][i] = 1;
dark = dan;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
scanf("%1d", &wdt[getNum(i,j)]);
for(int i=0; i<act; i++){
scanf("%s", ss[i]);
len[i] = strlen(ss[i]);
}
for(int i=1; i<=60; i++){
build(i);
dark = dark*zhu[i];
}
hmn = t / 60;
t = t - hmn * 60;
MATRIX qwq=ksm(dark, hmn);
for(int i=1; i<=t; i++)
qwq = qwq * zhu[i];
qwq = yuan*qwq;
for(int i=1; i<=n*m; i++)
ans = max(ans, qwq.num[0][i]);
cout<<ans<<endl;
return 0;
}
bzoj2973 入门oj4798 石头游戏的更多相关文章
- BZOJ 2973 入门OJ4798 石头游戏
矩阵递推 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring ...
- 【BZOJ2973】石头游戏 矩阵乘法
[BZOJ2973]石头游戏 Description 石头游戏的规则是这样的. 石头游戏在一个n行m列的方格阵上进行.每个格子对应了一个编号在0~9之间的操作序列. 操作序列是一个长度不超过6且循环执 ...
- CH3401 石头游戏(矩阵快速幂加速递推)
题目链接:传送门 题目: 石头游戏 0x30「数学知识」例题 描述 石头游戏在一个 n 行 m 列 (≤n,m≤) 的网格上进行,每个格子对应一种操作序列,操作序列至多有10种,分别用0~9这10个数 ...
- 【BZOJ2000】[HNOI2000]取石头游戏(贪心,博弈论)
[BZOJ2000][HNOI2000]取石头游戏(贪心,博弈论) 题面 BZOJ 洛谷 题解 这题好神仙啊,窝不会QaQ. 假装一下只有三个元素\(a_{i-1},a_i,a_{i+1}\),并且满 ...
- CH 3401 - 石头游戏 - [矩阵快速幂加速递推]
题目链接:传送门 描述石头游戏在一个 $n$ 行 $m$ 列 ($1 \le n,m \le 8$) 的网格上进行,每个格子对应一种操作序列,操作序列至多有 $10$ 种,分别用 $0 \sim 9$ ...
- CH3401 石头游戏
题意 3401 石头游戏 0x30「数学知识」例题 描述 石头游戏在一个 n 行 m 列 (1≤n,m≤8) 的网格上进行,每个格子对应一种操作序列,操作序列至多有10种,分别用0~9这10个数字指明 ...
- [luogu] P3210 [HNOI2010]取石头游戏(贪心)
P3210 [HNOI2010]取石头游戏 题目描述 A 公司正在举办一个智力双人游戏比赛----取石子游戏,游戏的获胜者将会获得 A 公司提供的丰厚奖金,因此吸引了来自全国各地的许多聪明的选手前来参 ...
- 7月18日刷题记录 二分答案跳石头游戏Getting
通过数:1 明天就要暑假编程集训啦~莫名开心 今天做出了一道 二分答案题(好艰辛鸭) 1049: B13-二分-跳石头游戏(二分答案) 时间限制: 5 Sec 内存限制: 256 MB提交: 30 ...
- 牛客1024B 石头游戏
题目描述 石头游戏在一个 \(n\) 行 \(m\) 列 \((1\leq n,m \leq 8)(1≤n,m≤8)\) 的网格上进行,每个格子对应一种操作序列,操作序列至多有10种,分别用0~9这1 ...
随机推荐
- 组合数+容斥原理 UVALive 7040 Color(14西安F)
题目传送门 题意:n盆花涂色,相邻不能涂相同的颜色,从m中颜色选取k种颜色涂,保证正好有k种颜色 分析:从m中颜色选取k种就是C (m, k),然后第一个有k种选择,之后的都有k-1种选择,这样是不超 ...
- 线段树/树状数组 POJ 2182 Lost Cows
题目传送门 题意:n头牛,1~n的id给它们乱序编号,已知每头牛前面有多少头牛的编号是比它小的,求原来乱序的编号 分析:从后往前考虑,最后一头牛a[i] = 0,那么它的编号为第a[i] + 1编号: ...
- centOS 部署服务器(二)
(1)安装nginx 1.下载地址: http://nginx.org/en/download.html ,并解压到目录下 2.安装依赖包 yum -y install pcre* yum -y i ...
- 152 Maximum Product Subarray 乘积最大子序列
找出一个序列中乘积最大的连续子序列(该序列至少包含一个数).例如, 给定序列 [2,3,-2,4],其中乘积最大的子序列为 [2,3] 其乘积为 6.详见:https://leetcode.com/p ...
- 1049 - One Way Roads 观察 dfs
http://lightoj.com/volume_showproblem.php?problem=1049 题意是,在一副有向图中,要使得它变成一个首尾相连的图,需要的最小代价. 就是本来是1--& ...
- Linux在线安装pip和numpy
最近写Python需要用到numpy包 运行pip install numpy就会自动安装 一.因此需要先安装pip 1.如果安装的是Python>=2.7.9或者Python>=3.4, ...
- java环境变量配置加maven配置
1.安装JDK开发环境 下载网站:http://www.oracle.com/ 确定之后,单击“下一步”. 2.配置环境变量: 单击“计算机-属性-高级系统设置”,单击“环境变量”.在“系统变量”栏下 ...
- 10.JAVA-接口、工厂模式、代理模式、详解
1.接口定义 接口属于一个特殊的类,这个类里面只能有抽象方法和全局常量 (该概念在JDK1.8之后被打破,在1.8后接口中还可以定义普通方法和静态方法,在后续章节会详讲) 1.1 接口具有以下几个原 ...
- 自动创建xml文档
自动创建xml文档 import xml.etree.ElementTree as ET print(dir(ET)) #ET里面有Element方法 root = ET.Element(" ...
- 回顾PMP考试
2014年9月20日,于我来说绝对可以说是一个重要的日子.经过考场里4个多小时(4个小时正式的时间+前面的签到以及后面的survey等)的鏖战,出去之后才发现北京外国语大学的楼宇是如此的漂亮,阳光也是 ...