题目描述

czy要妥善安排他的后宫,他想在机房摆一群妹子,一共有n个位置排成一排,每个位置可以摆妹子也可以不摆妹子。有些类型妹子如果摆在相邻的位置(隔着一个空的位置不算相邻),就不好看了。假定每种妹子数量无限,求摆妹子的方案数。

输入输出格式

输入格式:

输入有m+1行,第一行有两个用空格隔开的正整数n、m,m表示妹子的种类数。接下来的m行,每行有m个字符1或0,若第i行第j列为1,则表示第i种妹子第j种妹子不能排在相邻的位置,输入保证对称。(提示:同一种妹子可能不能排在相邻位置)。

输出格式:

输出只有一个整数,为方案数(这个数字可能很大,请输出方案数除以1000000007的余数。

输入输出样例

输入样例#1:

2 2
01
10

输出样例#1:

7
【样例说明】
七种方案为(空,空)、(空,1)、(1、空)、(2、空)、(空、2)、(1,1)、(2,2)。

说明

20%的数据,1<n≤5,0<m≤10。

60%的数据,1<n≤200,0<m≤100。

100%的数据,1<n≤1000000000,0<m≤100。

分析:求方案数,想到dp,设f[i][j]表示前i个位置,第i个位置放第j类的妹子的方案数,那么显然f[i][j] = Σf[i-1][k],其实可以把“不放妹子”变成一种妹子,这种妹子不与任何妹子冲突,那么套用上面的dp方程,就能得到60分.

剩下的40分因为n太大了,导致空间和时间都会吃不消,那该怎么优化呢?总不能把第一维去掉吧,接下来就比较难想到了,因为题目给我们的是一个邻接矩阵,邻接矩阵+dp能有什么优化呢?矩阵快速幂!这道题怎么跟矩阵快速幂扯上联系呢?因为我们人为规定了第m+1种妹子:"不放妹子",那么现在就是每个位置都要放上一个妹子了,如果我们把每个妹子抽象成一条边,边权为1,那么就是求长度为n的路径数,这就是经典的矩阵快速幂的应用,套用模板就可以了.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>using namespace std;const int mod = 1e9 + 7;int n, m;
long long a[110][110],ans[110][110],t[110][110];
long long anss;void mul1()
{memset(t, 0, sizeof(t));for (int i = 0; i <= m; i++)for (int j = 0; j <= m; j++)for (int k = 0; k <= m; k++){t[i][j] += ans[i][k] * a[k][j];t[i][j] %= mod;}memcpy(ans, t, sizeof(ans));
}void mul2()
{memset(t, 0, sizeof(t));for (int i = 0; i <= m; i++)for (int j = 0; j <= m; j++)for (int k = 0; k <= m; k++){t[i][j] += a[i][k] * a[k][j];t[i][j] %= mod;}memcpy(a, t, sizeof(a));
}void qpow(int b)
{while (b){if (b & 1)mul1();b >>= 1;mul2();}
}int main()
{scanf("%d%d", &n, &m);for (int i = 1; i <= m; i++)for (int j = 1; j <= m; j++){int t;scanf("%1d", &t);t = (t + 1) % 2;a[i][j] = t;}for (int i = 0; i <= m; i++){a[i][0] = a[0][i] = 1;ans[i][i] = 1;}qpow(n);for (int i = 0; i <= m; i++)anss = (anss + ans[0][i]) % mod;printf("%lld\n", anss);return 0;
}

转载于:https://www.cnblogs.com/zbtrs/p/7551699.html

noip模拟赛 czy的后宫相关推荐

  1. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排 ...

  2. NOIP模拟赛csy2021/10/30

    NOIP模拟赛csy2021/10/30 比赛时间规划 赛后反思与总结 这..总的来说感觉打的很不好,根本没有状态,有一部分原因是今天来晚了,太慌,更多的还是这次题感觉很难o(╥﹏╥)o 比赛时间规划 ...

  3. NOIP 模拟赛 长寿花 题解

    NOIP 模拟赛 长寿花 题解 要放 \(n\) 层物品,第 \(i\) 层有 \(a_i\) 个位置放物品,物品有 \(m\) 中颜色,有约束条件: 同一层两个相邻物品颜色不能相同. 相邻两层颜色集 ...

  4. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  5. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  6. jyzy noip模拟赛5.22-2

    不知道哪来的题 jyzy noip模拟赛5.22-2 样例输入 1 2 3 4 样例输出 0.200000000000000 数据 |a|,|b|,|c|,|d|<=1e9 很多大佬迅速想到二分 ...

  7. 【WZOI第二次NOIP模拟赛Day1T2】世界末日 解题报告

    [WZOI第二次NOIP模拟赛Day1T2]世界末日 Problem 2 世界末日 (doomsday.pas/c/cpp) 背景 话说CWQ大牛终于打开了那扇神秘大门,但迎接他的不是什么神秘的东西, ...

  8. 辣鸡(ljh) NOIP模拟赛 模拟 平面几何 数论 化学相关(雾)

    [题目描述] 辣鸡ljhNOI之后就退役了,然后就滚去学文化课了. 然而在上化学课的时候,数学和化学都不好的ljh却被一道简单题难住了,受到了大佬的嘲笑. 题目描述是这样的:在一个二维平面上有一层水分 ...

  9. NOIP模拟赛套路技巧经验总结

    前言 还有2天就NOIP了,之前做了这么多场模拟赛,是时候拿出来总结一下, 算是给自己一针强心剂. 列表 从最近的考试总结起(个人认为的重点,可能有重复,仅供参考): (转化很重要,一定要简化问题过后 ...

  10. 【NOIP 模拟赛】平均数 涂色游戏 序列题解

    吐槽(完跪):神tmNOIP模拟赛,看到大题头根本高级数据结构什么的想都没想,结果死的很惨,第三题竟然要可持久化线段树,这NOIP我服了. 平均数: 这道题40分相信大家都能拿到,剩下的60分讲真考验 ...

最新文章

  1. 访谈实录:网管员如何踏上高薪之路(1)
  2. git 拉新项目_git上拉取项目
  3. C++ 构造函数分类以及调用
  4. C语言结构体用法很多,坑也很多
  5. windows 下eclipse 连HBASE
  6. 那些属于我自己的牢骚
  7. 进阶篇:3.4.1)机械加工件-不同制造工艺详解和对应设备
  8. RuntimeError :excepted object of type torch.floatTensor but found type torch.DoubleTensor
  9. 天空里的云偶遇 彩虹做成衣裳也要用心呵护——潮港城的茶点,好芒果的冰饮...
  10. linux bond双活跟主备的区别,“双活中心”比“主备”方式更可靠
  11. perl读取文件夹下的文件
  12. 用户未登录跳转至登录页面
  13. html报告致谢,论文致谢内容
  14. 常见js手撕题及算法总结
  15. 【cocos2d-x4.0学习笔记】dya01
  16. 通过豆瓣API爬取北美票房榜
  17. MapReduce 的核心知识点,你都 get 到了吗 ?(干货文章,建议收藏!)
  18. Direct Rendering Manager - 基本概念
  19. IEEE搜索期刊内部文章
  20. EasyUi之动态数据表格的实现

热门文章

  1. 【渝粤题库】陕西师范大学210024 学前儿童科学教育 作业 (专升本)
  2. SVM(1)-概念与理解
  3. 求解偏微分方程开源有限元软件deal.II学习--Step 7
  4. c编程技巧——获取可用的处理器(CPU)核数
  5. linux mysql 命令
  6. 使用CSS创建Digg样式风格的导航栏或菜单
  7. bzoj 3351 [ioi2009]Regions
  8. MySQL 5.7安装(多实例)最佳实践
  9. 子群和Lagrange定理
  10. 异构系统间Web Service通讯框架小结(补完企划)