博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HDU2276]Kiki & Little Kiki 2
阅读量:5364 次
发布时间:2019-06-15

本文共 984 字,大约阅读时间需要 3 分钟。

题目:Kiki & Little Kiki 2

链接:

分析:

1)如果前一盏灯亮着,则改变这一盏灯的状态。灯用0和1表示亮和不亮。

2)0和0=0,0和1=1,1和0=1,1和1=0;这是异或,或者说 (左边的状态+原来的状态)%2=现在的状态,或者表示为(左边的状态+原来的状态)&1=现在的状态。

3)构造矩阵,快速幂优化。$T = \left[ \begin{array}{cccccc} 1 & 1 & 0 & ... & 0 & 0 \\ 0 & 1& 1 & ... & 0 & 0 \\ 0 & 0 & 1 & ... & 0 & 0\\ ... & ... & ... & ... & ... & ... \\ 0  & 0 & 0 & ... & 1 & 1 \\ 1 & 0 & 0 & ... & 0 & 1 \end{array}  \right] $

由于状态只有0和1,所以在矩阵乘法中,$ (C[i][j]+=A[i][k]*B[k][j])%=2 $可改写为 $ C[i][j]$ ^= $ A[i][k] $ & $B[k][j] $

#include 
using namespace std;typedef long long LL;int MOD;struct Matrix{ int n,a[101][101]; Matrix(int _n,int f=0):n(_n){ memset(a,0,sizeof a); if(f==1)for(int i=0;i
>=1){ if(n&1)Rt=Rt*A; A=A*A; } return Rt;}int main(){ char s[105]; for(int n,m;~scanf("%d",&m);){ scanf("%s",s);n=strlen(s); Matrix F(n,1); F.a[n-1][0]=1; for(int i=1;i

 

转载于:https://www.cnblogs.com/hjj1871984569/p/9979468.html

你可能感兴趣的文章
字母和数字键的键码值(keyCode)
查看>>
IE8调用window.open导出EXCEL文件题目
查看>>
01_1_准备ibatis环境
查看>>
JavaScript中的BOM和DOM
查看>>
360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
查看>>
spring注入Properties
查看>>
jmeter(五)创建web测试计划
查看>>
1305: [CQOI2009]dance跳舞 - BZOJ
查看>>
将html代码中的大写标签转换成小写标签
查看>>
jmeter多线程组间的参数传递
查看>>
零散笔记
查看>>
信息浏览器从Android的浏览器中传递cookie数据到App中信息浏览器
查看>>
hash储存机制
查看>>
HI3531uboot开机画面 分类: arm-linux-Ubunt...
查看>>
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>
Flutter学习笔记(一)
查看>>
iOS10 国行iPhone联网权限问题处理
查看>>
洛谷 P1991 无线通讯网
查看>>