题意

有 n 个位置排成一行,可以放 m 种妹子。每个位置可以放也可以不放,规定某些妹子不能相邻,求方案数。

分析

#include<bits/stdc++.h>
using namespace std;typedef long long ll;ll qmul(ll x,ll y,ll p){        //快速乘x%=p;y%=p;ll ans=0;while(y){if(y&1){ans+=x;if(ans>=p) ans-=p;  //这样写不能有负数
        }x<<=1;if(x>=p) x-=p;y>>=1;}return ans;
}struct Mat{int r,c;ll m[110][110];Mat(){memset(m,0,sizeof(m));}
};Mat mmul(Mat x,Mat y,ll p){Mat ans;ans.r=x.r;ans.c=y.c;for(int i=0;i<x.r;i++)for(int k=0;k<x.c;k++)for(int j=0;j<y.c;j++){ans.m[i][j]+=qmul(x.m[i][k],y.m[k][j],p);if(ans.m[i][j]>=p) ans.m[i][j]-=p;}return ans;
}
Mat mpow(Mat x,ll y,ll p){Mat ans;ans.r=x.r;ans.c=x.c;for(int i=0;i<ans.c;i++) ans.m[i][i]=1;while(y){if(y&1) ans=mmul(ans,x,p);x=mmul(x,x,p);y>>=1;}return ans;
}const ll mod = 1000000007;
Mat T, A;
int n, m;
char s[110];int main(){scanf("%d%d", &n, &m);T.r = T.c = m+1;for(int i = 0;i < m;i++){scanf("%s", s);for(int j = 0;j < m;j++)T.m[i][j] = 1- (s[j] - '0');T.m[i][m] =  1;}for(int i = 0;i <= m;i++)  T.m[m][i] = 1;   //补充一类”空妹子“
T = mpow(T, n-1, mod);A.r = 1, A.c = m+1;for(int i = 0;i <= m;i++)  A.m[0][i] = 1;A = mmul(A, T, mod);ll ans = 0;for(int i = 0;i <= m;i++)  ans = (ans + A.m[0][i]) % mod;printf("%lld\n", ans);return 0;
}

没处交题,只能找别人题解的代码对拍,应该没错吧??

参考链接:https://blog.csdn.net/FSAHFGSADHSAKNDAS/article/details/52745912

转载于:https://www.cnblogs.com/lfri/p/11334782.html

czy的后宫——矩阵快速幂优化DP相关推荐

  1. Q老师度假(变形矩阵快速幂优化DP)

    问题描述 忙碌了一个学期的 Q老师 决定奖励自己 N 天假期. 假期中不同的穿衣方式会有不同的快乐值. 已知 Q老师 一共有 M 件衬衫,且如果昨天穿的是衬衫 A,今天穿的是衬衫 B,则 Q老师 今天 ...

  2. 【POJ - 3744】Scout YYF I(概率dp,矩阵快速幂优化dp)

    题干: 题目大意: 在一条不满地雷的路上(无限长),你现在的起点在1处.在N个点处布有地雷,1<=N<=10.地雷点的可能坐标范围:[1,100000000]. 每次前进p的概率前进一步, ...

  3. AtCoder abc256全题解(区间合并模板、矩阵快速幂优化dp、线段树……)

    文章目录 A B C-枚举 D-区间合并模板 E-图论建模,函数图的性质 题意 思路 代码 F-树状数组 题意 思路 代码 G-矩阵快速幂优化dp H-线段树 思路 实现 传送门 本文CSDN 本文j ...

  4. 【noip2016十连测round3】T3 涂色游戏 【矩阵快速幂优化dp】

    涂色游戏 题解: 推一推公式. 我们让f[i][j]表示第i列有j种颜色的方案总数,k表示i-1列用了多少种颜色,l表示第i列用了多少种没有在i-1列出现的颜色,G(i,j)表示i个格子涂j种颜色的方 ...

  5. 2019.02.11 bzoj4818: [Sdoi2017]序列计数(矩阵快速幂优化dp)

    传送门 题意简述:问有多少长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数,且其中至少有一个数是质数,答案对201704082017040820170408取模(n≤1e9, ...

  6. 2018.11.08 NOIP模拟 景点(倍增+矩阵快速幂优化dp)

    传送门 首先按照题意构造出转移矩阵. 然后可以矩阵快速幂求出答案. 但是直接做是O(n3qlogm)O(n^3qlogm)O(n3qlogm)的会TTT掉. 观察要求的东西发现我们只关系一行的答案. ...

  7. 【BZOJ4861】【BJOI2017】—魔法咒语(AC自动机+矩阵快速幂优化dp)

    传送门 当 l ≤ 100 l\le 100 l≤100时 显然的自动机上 d p dp dp就完了 当 l ≤ 1 e 8 l\le1e8 l≤1e8时直接 d p dp dp显然是不行的 但是发现 ...

  8. 简单计数(构造矩阵 矩阵快速幂优化dp)

    传送门 示例1 输入 1 1 输出 0 分析: 代码: #include <bits/stdc++.h>using namespace std; typedef long long ll; ...

  9. 蓝桥杯 - 垒骰子(动态规划+矩阵快速幂优化)

    垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...

最新文章

  1. 在Flash中利用PCRE正则式漏洞CVE-2015-0318的方法
  2. Resharper 5.0 注册码
  3. dealloc 的水,很深?
  4. 反射练习之越过泛型检查
  5. 王之泰201771010131《面向对象程序设计(java)》第九周学习总结
  6. 反转字符串中的元音字符_C程序消除字符串中的所有元音
  7. JMS学习九 ActiveMQ的消息持久化到Mysql数据库
  8. 面试官邪魅一笑:MySQL千万级别大表,你要如何优化?
  9. “我恨Google无人车”
  10. 惊呆了!这一操作将让NLP再次腾飞!
  11. Datatable转实体 实体转换辅助类
  12. spring容器启动的加载过程(三)
  13. 解决办法:undefined reference to symbol '_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
  14. 【EVE模拟器是干什么的】
  15. Unity笔记-31-UI框架(思路)
  16. Lattice Diamond 加入未默认支持flash
  17. 一段美好的记忆,一份真挚的感情,已经远去......
  18. NPN和PNP三极管收录笔记
  19. Docker容器之网络管理、端口映射、容器间的互联、Dockerfile完成镜像封装
  20. 企业文化在企业管理中的作用

热门文章

  1. linux下repo文件的配置
  2. 乐视x820android最新版本,乐视MAX2|MIUI10|安卓8.1|最终完美版|极速_最新最全的乐Max2ROM刷机包下载、刷机教程_...
  3. ninja 编译threadx(ubuntu)
  4. 富途入金步骤记录(个人使用)
  5. Docker安装好后默认路径
  6. 2022款华为MateBook 14和华硕无畏15哪个好
  7. 又一国艺被日本偷师:抹茶在中国失传,却被日本人发扬光大
  8. 推荐几款主流好用的远程终端连接管理软件
  9. iOS APP调取短信 发送消息给其他人
  10. 王者荣耀我的服务器没显示哪个区,王者荣耀怎么看自己在哪个区