思路:

  矩阵加速dp;

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; #define ll long long
#define mod (1000000007) struct MatrixType {
int n,m; ll ai[][]; void mem()
{
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++) ai[i][j]=;
}
} void debug()
{
printf("\n");
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++) printf("%d ",ai[i][j]);
printf("\n");
}
printf("\n");
}
}; int n,m; MatrixType mul(MatrixType aa,MatrixType bb)
{
MatrixType res;
res.n=aa.n,res.m=bb.m,res.mem();
for(int i=;i<=res.n;i++)
{
for(int j=;j<=res.m;j++)
{
for(int v=;v<=res.n;v++)
{
res.ai[i][j]=(res.ai[i][j]+aa.ai[i][v]*bb.ai[v][j])%mod;
}
}
}
return res;
} MatrixType poww(int mi,MatrixType pos)
{
MatrixType res=pos;mi--;
while(mi)
{
if(mi&) res=mul(res,pos);
pos=mul(pos,pos),mi=mi>>;
// res.debug();
}
return res;
} int main()
{
freopen("harem.in","r",stdin);
freopen("harem.out","w",stdout);
char ch[];
MatrixType pos;
scanf("%d%d",&n,&m);
pos.n=m,pos.m=m;
for(int i=;i<=m;i++) pos.ai[][i]=;
for(int i=;i<=m;i++)
{
scanf("%s",ch+),pos.ai[i][]=;
for(int j=;j<=m;j++) pos.ai[i][j]=(ch[j]-'')^;
}
// pos.debug();
MatrixType p;
p.mem(),p.n=m,p.m=;
for(int i=;i<=m;i++) p.ai[i][]=;
// p.debug();
MatrixType ans=mul(poww(n-,pos),p);
// ans.debug();
ll ans_=;
for(int i=;i<=m;i++) ans_=(ans_+ans.ai[i][])%mod;
cout<<ans_;
return ;
}

最新文章

  1. JavaScript - 如果...没有方法
  2. Fragment的初步设计
  3. android 横竖屏限制如何配置
  4. fzu Problem 2140 Forever 0.5(推理构造)
  5. Javascript继承实现
  6. css之自动换行
  7. 关于STM32 定时器 PWM 实时调节占空比时,预装载特性
  8. ExtJs MVC应用架构示例
  9. spring 上传图片
  10. 【JSON异常系列】new JSONObject对象时卡死原因
  11. object-c编程tips-timer
  12. sqlserver不能直接create table as select
  13. C#关于HttpClient的应用(一):获取IP所在的地理位置信息
  14. 贴一份用delphi修改注册表改网卡MAC地址的代码
  15. Python尾递归-创始人为何不愿TRE以及我们如何模拟TRE
  16. ping vs telnet, what is the difference between them and when to use which?
  17. [HAOI2008]移动玩具
  18. AFNetworking封装-项目使用
  19. MONGODB(四)——DBObject与JavaBean转换
  20. 《Linux内核分析》第七周: 可执行程序的装载

热门文章

  1. 【题解】NOI2014购票
  2. Vue根据URL传参来控制全局 console.log 的开关
  3. SLF4J 与Log4J
  4. c++(类) this指针
  5. iOS 单元测试(Unit Test 和 UI Test)
  6. 常用原生客户端js
  7. Nim博弈(nim游戏)
  8. codefoeces problem 671D——贪心+启发式合并+平衡树
  9. bzoj3779: 重组病毒 link-cut-tree
  10. 【洛谷 P2464】[SDOI2008]郁闷的小J(线段树)