NOIP模拟赛 czy的后宫
【题目描述】
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的后宫的更多相关文章
- NOIP模拟赛 czy的后宫6
czy的后宫6 题目描述 众所周知的是丧尸czy有很多妹子(虽然很多但是质量不容乐观QAQ),今天czy把n个妹子排成一行来检阅.但是czy的妹子的质量实在……所以czy看不下去了.检阅了第i个妹子会 ...
- NOIP模拟赛 czy的后宫4
czy的后宫4 [问题描述] czy有很多妹子,妹子虽然数量很多,但是质量不容乐观,她们的美丽值全部为负数(喜闻乐见). czy每天都要带N个妹子到机房,她们都有一个独一无二的美丽值,美丽值为-1到- ...
- NOIP模拟赛 czy的后宫5
描述 czy要召集他的妹子,但是由于条件有限,可能每个妹子不能都去,但每个妹子都有一个美丽值,czy希望来的妹子们的美丽值总和最大(虽然……). czy有一个周密的电话通知网络,它其实就是一棵树,根结 ...
- NOIP模拟赛 czy的后宫3
[题目描述] 上次czy在机房妥善安排了他的后宫之后,他发现可以将他的妹子分为c种,他经常会考虑这样一个问题:在[l,r]的妹子中间,能挑选出多少不同类型的妹子呢? 注意:由于czy非常丧尸,所以他要 ...
- 2014-10-31 NOIP模拟赛
10.30 NOIp 模拟赛 时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...
- NOIP模拟赛20161023
题目名 双色球 魔方 czy的后宫 mex 源文件 ball.cpp/c/pas cube.cpp/c/pas harem.cpp/c/pas mex.cpp/c/pas 输入文件 ball.in c ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 【noip模拟赛4】Matrix67的派对 暴力dfs
[noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们 ...
随机推荐
- SAP中对于获取订单的状态
在SAP中对于如何获取订单的状态,提供了至少两个函数,分别是 STATUS_READ 和 STATUS_TEXT_EDIT.下面简单介绍这两个函数 1.STATUS_READ 改函数的实现原理大 ...
- vue中修改swiper样式
问题 vue单文件组件中无法修改swiper样式. 解决 1,单文件组件中:新增一个style 不加scoped 让它最终成为全局样式.只在其中操作swiper的样式. <style lang= ...
- 洛谷 P3381 【模板】最小费用最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行包含四个正整数\(N.M.S.T\) ...
- Python-15-收集参数
允许用户提供任意数量的参数: def print_params(*params): print(params) >>> print_params('Testing') ('Tes ...
- Codeforces Round #564 (Div. 2) A. Nauuo and Votes
链接:https://codeforces.com/contest/1173/problem/A 题意: Nauuo is a girl who loves writing comments. One ...
- Http请求数据解释
请求的数据里面包含三个部分内容 : 请求行 . 请求头 .请求体 请求行 POST /examples/servlets/servlet/RequestParamExample HTTP/1.1 PO ...
- jetty jndi数据源
applicationContext.xml <?xml version="1.0" encoding="utf-8"?> <beans de ...
- 基于CDH5.7.x Kylin部署
配置目标文件为 /etc/profile #Kylin exportKYLIN_HOME=/opt/apache-kylin-1.5.4-cdh5.7-bin #Hadoop export HBASE ...
- es6新语法系列,查找字符串,模板字符串
一.模板字符串: ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(template strings).除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 " 外,它们看起来与 ...
- 使用OAuth保护REST API并使用简单的Angular客户端
1.概述 在本教程中,我们将使用OAuth保护REST API并从简单的Angular客户端使用它. 我们要构建的应用程序将包含四个独立的模块: 授权服务器 资源服务器 UI implicit - 使 ...