【题目描述】

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

【输入格式】

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

【输出格式】

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

【样例输入】

2 2

01

10

【样例输出】

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。

注:此题时限1.5s是因为本评测机跑太慢,大家正常做

但写的太丑可能T一俩个点

前辈都忙着开后宫了,就我这个苦逼在弱校挣扎。。。

F[i][j]={F[i-1][k]} i表示由i个妹子组成,j代表以j结尾

用异或状态压缩

60分:

 #include<iostream>
using namespace std; const int mod=; int n,m,ans,p=;
int F[][];
bool D[][];
char s[]; int main()
{
cin>>n>>m;
for(int i=;i<=m;i++)
{
scanf("%s",s+);
for(int j=;j<=m;j++)
D[i][j]=s[j]-'';
}
for(int i=;i<=m;i++) F[][i]=;
for(int i=;i<=n;i++)
{
p^=;
for(int j=;j<=m;j++)
{
F[p][j]=;
for(int k=;k<=m;k++)
if(!D[j][k])
F[p][j]=(F[p][j]+F[p^][k])%mod;
}
}
for(int i=;i<=m;i++)
ans=(ans+F[p][i])%mod;
cout<<ans<<endl;
return ;
}

100分要用矩阵乘法配合图论来做

f[i][k]表示从i到k的路径条数,即以第i盆花开始,第k盆花结束的摆法有多少种

那么f[i][k]=Σ(f[i][j]*f[j][k])

即f=f*gn

配合快速幂

最后ans=Σ(f[i][0])

 #define LL long long

 #include<iostream>
#include<cstring>
using namespace std; const int MAXN=;
const int mod=; struct MAT
{
LL mat[MAXN][MAXN];
}f,g;
LL n,m,ans;
char ch[]; MAT mult(MAT a,MAT b)
{
MAT t;
memset(t.mat,,sizeof(t.mat));
for(int i=;i<=m;i++)
for(int j=;j<=m;j++)
if(a.mat[i][j])
for(int k=;k<=m;k++)
t.mat[i][k]=(t.mat[i][k]+a.mat[i][j]*b.mat[j][k])%mod;
return t;
} void modexp(int b)
{
while(b)
{
if(b&) f=mult(f,g);
g=mult(g,g);
b>>=;
}
} int main()
{
cin>>n>>m;
for(int i=;i<=m;i++)
{
scanf("%s",ch+);
for(int j=;j<=m;j++)
if(ch[j]=='') g.mat[i][j]=;
}
for(int i=;i<=m;i++)
{
g.mat[][i]=g.mat[i][]=;
f.mat[i][i]=;
}
modexp(n);
for(int i=;i<=m;i++)
ans=(ans+f.mat[i][])%mod;
cout<<ans<<endl;
return ;
}

NOIP模拟赛 czy的后宫的更多相关文章

  1. NOIP模拟赛 czy的后宫6

    czy的后宫6 题目描述 众所周知的是丧尸czy有很多妹子(虽然很多但是质量不容乐观QAQ),今天czy把n个妹子排成一行来检阅.但是czy的妹子的质量实在……所以czy看不下去了.检阅了第i个妹子会 ...

  2. NOIP模拟赛 czy的后宫4

    czy的后宫4 [问题描述] czy有很多妹子,妹子虽然数量很多,但是质量不容乐观,她们的美丽值全部为负数(喜闻乐见). czy每天都要带N个妹子到机房,她们都有一个独一无二的美丽值,美丽值为-1到- ...

  3. NOIP模拟赛 czy的后宫5

    描述 czy要召集他的妹子,但是由于条件有限,可能每个妹子不能都去,但每个妹子都有一个美丽值,czy希望来的妹子们的美丽值总和最大(虽然……). czy有一个周密的电话通知网络,它其实就是一棵树,根结 ...

  4. NOIP模拟赛 czy的后宫3

    [题目描述] 上次czy在机房妥善安排了他的后宫之后,他发现可以将他的妹子分为c种,他经常会考虑这样一个问题:在[l,r]的妹子中间,能挑选出多少不同类型的妹子呢? 注意:由于czy非常丧尸,所以他要 ...

  5. 2014-10-31 NOIP模拟赛

        10.30 NOIp  模拟赛   时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...

  6. NOIP模拟赛20161023

    题目名 双色球 魔方 czy的后宫 mex 源文件 ball.cpp/c/pas cube.cpp/c/pas harem.cpp/c/pas mex.cpp/c/pas 输入文件 ball.in c ...

  7. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  8. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

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

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

随机推荐

  1. java 多线程下载文件并实时计算下载百分比(断点续传)

    多线程下载文件 多线程同时下载文件即:在同一时间内通过多个线程对同一个请求地址发起多个请求,将需要下载的数据分割成多个部分,同时下载,每个线程只负责下载其中的一部分,最后将每一个线程下载的部分组装起来 ...

  2. Request a certificate from a certificate vendor

    Request a certificate from a certificate vendor Now, with your CSR in hand, visit the Web site of yo ...

  3. 笔记-JavaWeb学习之旅15

    Filter:过滤器 概念:当访问服务器的资源是,过滤器可以将请求拦截下来,完成一些特殊的功能 快速入门: 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径 package com.d ...

  4. react父组件调用子组件方法

    把子组件的参数回传到父组件中,并且赋值给子组件的一个实例方法. 参考React中文网: http://www.css88.com/react/docs/refs-and-the-dom.html im ...

  5. CodeForces - 894A-QAQ(思维)

    "QAQ" is a word to denote an expression of crying. Imagine "Q" as eyes with tear ...

  6. Linux上常用命令整理(二)—— paste

    上一篇整理了cat指令的几个基本常见用法,这次整理一下paste指令的基本用法. cat paste cut grep paste paste可以简单的理解为把两个文件的内容按列合并,与cat命令直接 ...

  7. 1550: Simple String 最大流解法

    http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1550 很久以前做的一题,当时队友用最大流做,现在我也是 这个转化为二分图多重匹配,就是一样的意 ...

  8. Ubuntu搭建WordPress-MySQL-Apache

    目标 技术博客www.xifarm.com有5年时间了. 原来在虚拟机/VPS上搭建,不过都是Windows系统下的. 最近突发奇想,试试迁移到Linux的Unbuntu下.说干就干,抽空用了大约3天 ...

  9. 基于 opencv图像去噪

                       -------------------开通头条号-------------------- 实验名称 图像去噪 实验目的 1.掌握算术均值滤波器.几何均值滤波器.谐 ...

  10. [USACO15OPEN]回文的路径Palindromic Paths

    [USACO15OPEN]回文的路径Palindromic Paths 题目描述 Farmer John's farm is in the shape of an N \times NN×N grid ...