题目链接

https://www.lydsy.com/JudgeOnline/problem.php?id=4887

分析

话说这道题经常见到类似模型来计数算期望,概率啊,然而我太蒻了都不会做,今天看到这题的第一个题解感觉真妙啊

我们构建邻接矩阵\(A\),\(a[i][j]=1\)表示i到j状态有连接的边。

如果有一条边连接\(u,v\)则\(a[u][v]=1\)且\(a[v][u]=1\)

\(a[i][i]=1\)表示停在原地

再构建一个虚点0,\(a[i][0]=1\)表示自爆事件,完美满足题目要求

统计\(\sum_{i=0}^{N}A[1][i]\)就是答案

然而这题第一次提交BZOJ AC 洛谷 WA 不知道怎么回事

然后在8.15发现是矩阵数组没清空....现已AC

代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cctype>
#include <cmath>
#include <vector>
#define ll long long
#define ri register int
using namespace std;
const int maxn=35;
const int maxm=105;
const int inf=0x7ffffff;
template <class T>inline void read(T &x){
x=0;int ne=0;char c;
while(!isdigit(c=getchar()))ne=c=='-';
x=c-48;
while(isdigit(c=getchar()))x=(x<<3)+(x<<1)+c-48;
x=ne?-x:x;
return ;
}
int n,m,t;
struct Mat{
int mat[maxn][maxn];
Mat(){memset(mat,0,sizeof(mat));}
Mat(int x){memet(mat,0,sizeof(mat));for(ri i=0;i<=n;i++)mat[i][i]=x;}
Mat operator *(const Mat &b)const {
Mat ans;
for(ri i=0;i<=n;i++){
for(ri j=0;j<=n;j++){
for(ri k=0;k<=n;k++){
ans.mat[i][j]+=mat[i][k]*b.mat[k][j]%2017;
}
}
}
return ans;
}
Mat operator ^(const int & C)const {
Mat ans=Mat(1),res=*this;int c=C;
while(c){
if(c&1)ans=ans*res;
res=res*res;
c=c>>1;
}
return ans;
}
}a; int main(){
int x,y,ans=0;
read(n),read(m);
for(ri i=0;i<=n;i++){
a.mat[i][0]=1;
a.mat[i][i]=1;
}
for(ri i=1;i<=m;i++){
read(x),read(y);
a.mat[x][y]=a.mat[y][x]=1;
}
read(t);
a=a^t;
for(ri i=0;i<=n;i++)ans+=a.mat[1][i]%2017;
printf("%d\n",ans%2017);
return 0;
}

BZOJ4887可乐题解--矩阵运算的更多相关文章

  1. 【BZOJ4887】[TJOI2017]可乐(矩阵快速幂)

    [BZOJ4887][TJOI2017]可乐(矩阵快速幂) 题面 BZOJ 洛谷 题解 模板题??? #include<iostream> #include<cstdio> # ...

  2. BZOJ4887: [Tjoi2017]可乐 矩阵快速幂

    Description 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且 放在了加里敦星球的1号城市上.这个可乐机器人有三种行为:停在原地,去下一个相邻的 城市,自爆. ...

  3. 【bzoj4887】:[Tjoi2017]可乐 矩阵乘法,快速幂

    [bzoj4887]:[Tjoi2017]可乐 题目大意:一张无相连通图(n<=30),从1号点开始走,每秒可以走到相邻的点也可以自爆,求第t秒(t<=1e6)后所有的方案数是多少对201 ...

  4. 【bzoj4887】[Tjoi2017]可乐 矩阵乘法

    题解: 比较简单的一道题目 如果会倍增floyd这个就很显然的 每次转移看成乘上一个矩阵 另外自爆等同于连到一个特殊点,特殊点只能走自己 停留就是增加自环

  5. BZOJ4887 Tjoi2017可乐(动态规划+矩阵快速幂)

    设f[i][j]为第i天到达j号城市的方案数,转移显然,答案即为每天在每个点的方案数之和.矩乘一发即可. #include<iostream> #include<cstdio> ...

  6. 洛谷P3758/BZOJ4887 [TJOI2017] 可乐 [矩阵快速幂]

    洛谷传送门,BZOJ传送门 可乐 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 299  Solved: 207 Description 加里敦星球的人 ...

  7. [BZOJ4887][TJOI2017]可乐(DP+矩阵快速幂)

    题目描述 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的1号城市上.这个可乐机器人有三种行为: 停在原地,去下一个相邻的城市,自爆.它每一秒都会随机 ...

  8. BZOJ4887:[TJOI2017]可乐(矩阵乘法)

    Description 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且 放在了加里敦星球的1号城市上.这个可乐机器人有三种行为:停在原地,去下一个相邻的 城市,自爆. ...

  9. bzoj4887: [Tjoi2017]可乐

    一眼暴力宽搜(最近比赛想暴力想疯了... 很明显的矩乘,然后自爆可以看作走向向一个无出边的点 然后没啥难的了吧. #include<cstdio> #include<iostream ...

随机推荐

  1. Notepad++格式化xml(转)

    转自:http://www.herongyang.com/XML/NPP-XML-Tools-Plugin-Download-and-Install.html Downloading and inst ...

  2. [Tex学习笔记]章节用罗马字母编号

    微信扫描如上二维码关注跟锦数学微信公众账号. 详情请见那里.

  3. P3951 小凯的疑惑

    P3951 小凯的疑惑 题解 题意也就是求解不能用 ax+by 表示的最大数 ans(a,b,x,y,都是正整数) 给定 a ( =7 ) ,  b ( =3 ) 我们可以把数轴非负半轴上的数按照a的 ...

  4. 慎用String.intern()作为synchronized的对象锁

    https://www.cnblogs.com/yhlx/p/3498387.html

  5. [go]gorhill/cronexpr用go实现crontab

    // crontab基础 // linux crontab // 秒粒度, 年配置(2018-2099) // 哪一分钟(0-59),哪小时(0-23),哪天(1-31),哪月(1-12),星期几(0 ...

  6. 动态绑定v-model

    <template> <div class="pieAll" > <template v-for="(item, index) in tes ...

  7. redis单机版无法启动java程序解决

    1.注释掉 bind 127.0.0.1 2.kill-9 杀死进行 3.redis-server + 配置文件进行重启,

  8. Java内部类(5):应用例

    例1-闭包(Closure) 闭包是一个可调用的对象(通过Callback),它记录了一些信息,这些信息来自于创建它的作用域 interface Incrementable { void increm ...

  9. 修改Mysql 数据库的密码

    1.修改my.cnf 在这个文件里面加入 skip-grant-tables 修改之后,保存.然后重启数据库 2.由于我的系统是Centos7 ,数据库是mariadb ,所以执行命令如下: 3.重启 ...

  10. iptables基本命令到深入

    1.关闭firewalld,安装iptables-server并启动服务 systemctl stop firewalld systemctl disable firewalld yun -y ins ...