题目链接

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. python 3.6闭包+循环获取出字典中所有的值并保存在list中

    def list_test(): list1=[] def list_all_dict(a): #检测字段类型 if isinstance(a,dict): for x in range(len(a) ...

  2. Linux(CentOS / RHEL 7) 防火墙

    CentOS / RHEL 7 防火墙 Table of Contents 1. 简述 2. 常用基本操作 2.1. 查看防火墙状态 2.2. 开启防火墙 2.3. 关闭防火墙 2.4. 开机自动启动 ...

  3. 视图解析器InternalResourceViewResolver

    ModelAndView对象中即可以封装真实视图路径名,也可以封装视图路径的逻辑名,springmvc.xml 代码如下: <!-- 视图解析器(框架) --> <bean clas ...

  4. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-3.微信Oauth2.0交互流程讲解

    笔记 3.微信Oauth2.0交互流程讲解     简介:讲解微信Oauth2.0交互流程              参考:https://open.weixin.qq.com/cgi-bin/sho ...

  5. 小D课堂 - 新版本微服务springcloud+Docker教程_6-02 springcloud网关组件zuul

    笔记 2.SpringCloud的网关组件zuul基本使用     简介:讲解zuul网关基本使用 1.加入依赖 2.启动类加入注解 @EnableZuulProxy         默认集成断路器 ...

  6. Rancher-k8s加速安装文档

    Kubernetes是一个强大的容器编排工具,帮助用户在可伸缩性系统上可靠部署和运行容器化应用.Rancher容器管理平台原生支持K8s,使用户可以简单轻松地部署K8s集群. 很多同学正常部署k8s环 ...

  7. MATLAB学习(十)实现文件、图像读写

    t=1:5; s1=sin(t); s2=cos(t); s=[t;s1;s2]; fid1=fopen('test.dat','wt'); fprintf(fid1,'\nThis is a For ...

  8. Java泛型(2):泛型接口

    泛型不仅可以在类上实现,也可以在接口上实现.JDK中[Iterable<T> <-- Collection<E> <-- List<E>/Queue&l ...

  9. charles修改请求体内容

    charles修改请求体内容 问:什么是请求体?答:客户端向服务端发出的请求简称请求体,请求体中包含有许许多多的参数,每一个参数都有其特定的意义.多一个或者少一个则服务端给你返回的响应体就会不一样 一 ...

  10. pacman 命令(安装所有软件包)

    MSYS2 中pacman安装所有软件包命令: pacman -Sl | awk '{cmd="pacman -S --needed --noconfirm "$2;system( ...