掷骰子【普通线性DP】【转移方程可以优化为矩阵快速幂】
掷骰子

思路
可以先定义一个状态f[i] [j]: 前i个骰子,最后一个面是j的方法数,
肯定超时,然鹅可以混一些分,代码如下
for(int i=1;i<=6;i++) f[0][i]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=6;j++)
{
for(int k=1;k<=6;k++)
{
int _ops=ops[j];
if(w[_ops][j]) continue;
f[i][j] = (f[i-1][k] + f[i][j]) %mod;
}
}
}
开始考虑优化代码
转移方程中:
f[i] [j] = (0|4)f[i-1] [1] + (0|4)f[i-1] [2] +(0|4)f[i-1] [3] +…
方程形式一样,系数在确定好之后也一样。我们考虑矩阵快速幂来加速。
F=F*A^(n-1)

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define mst(s,_s) memset(s, _s, sizeof(s))
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 0x3f3f3f3f;
const int N = 1e6+100;
int T,n,m;
const int mod=1e9+7;
ll A[10][10];
int op[10];
ll F[10];
void mult(ll c[],ll a[],ll b[][10])
{
ll temp[10]={0};
for(int i=1;i<=6;i++)
{
for(int k=1;k<=6;k++)
{
temp[i]=(temp[i]+a[k]*b[i][k])%mod;
}
}
for(int i=1;i<=6;i++)
c[i]=temp[i];
}
void mult(ll c[][10],ll a[][10],ll b[][10])
{
int temp[10][10]={0};
for(int i=1;i<=6;i++)
for(int j=1;j<=6;j++)
{
for(int k=1;k<=6;k++){
temp[i][j] = (temp[i][j] + a[i][k] * b[k][j]) %mod;
//temp[i][j]+=a[i][k]*b[k][j];
}
}
for(int i=1;i<=6;i++)
for(int j=1;j<=6;j++)
c[i][j]=temp[i][j];
}
int main() {
cin>>n>>m;
for(int i=1;i<=6;i++)
for(int j=1;j<=6;j++)
A[i][j]=4;
op[1]=4;
op[4]=1;
op[2]=5;
op[5]=2;
op[3]=6;
op[6]=3;
for(int i=0;i<m;i++)
{
int a,b;
cin>>a>>b;
A[a][op[b]]=0;
A[b][op[a]]=0;
}
for(int i=1;i<=6;i++) F[i]=4;
int b=n-1;
while(b)
{
if(b&1) mult(F,F,A);
mult(A,A,A);
b>>=1;
}
ll res=0;
for(int i=1;i<=6;i++)
res=(res+F[i])%mod;
cout<<res<<endl;
return 0;
}
掷骰子【普通线性DP】【转移方程可以优化为矩阵快速幂】的更多相关文章
- “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp,K,二分+排序,L,矩阵快速幂,M,线段树区间更新+Lazy思想,N,超级快速幂+扩展欧里几德,O,BFS】
黑白图像直方图 发布时间: 2017年7月9日 18:30 最后更新: 2017年7月10日 21:08 时间限制: 1000ms 内存限制: 128M 描述 在一个矩形的灰度图像上,每个 ...
- $bzoj1009-HNOI2008$ $GT$考试 字符串$dp$ 矩阵快速幂
题面描述 阿申准备报名参加\(GT\)考试,准考证号为\(N\)位数\(x_1,x_2,...,x_n\ (0\leq x_i\leq 9)\),他不希望准考证号上出现不吉利的数字. 他的不吉利数字\ ...
- HDU 5863 cjj's string game ( 16年多校10 G 题、矩阵快速幂优化线性递推DP )
题目链接 题意 : 有种不同的字符,每种字符有无限个,要求用这k种字符构造两个长度为n的字符串a和b,使得a串和b串的最长公共部分长度恰为m,问方案数 分析 : 直觉是DP 不过当时看到 n 很大.但 ...
- bzoj2004 矩阵快速幂优化状压dp
https://www.lydsy.com/JudgeOnline/problem.php?id=2004 以前只会状压dp和矩阵快速幂dp,没想到一道题还能组合起来一起用,算法竞赛真是奥妙重重 小Z ...
- 2018.10.23 bzoj1297: [SCOI2009]迷路(矩阵快速幂优化dp)
传送门 矩阵快速幂优化dp简单题. 考虑状态转移方程: f[time][u]=∑f[time−1][v]f[time][u]=\sum f[time-1][v]f[time][u]=∑f[time−1 ...
- bzoj1009 [HNOI2008]GT考试——KMP+矩阵快速幂优化DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1009 字符串计数DP问题啊...连题解都看了好多好久才明白,别提自己想出来的蒟蒻我... 首 ...
- POJ 3744 【矩阵快速幂优化 概率DP】
搞懂了什么是矩阵快速幂优化.... 这道题的重点不是DP. /* 题意: 小明要走某条路,按照个人兴致,向前走一步的概率是p,向前跳两步的概率是1-p,但是地上有地雷,给了地雷的x坐标,(一维),求小 ...
- LOJ2325. 「清华集训 2017」小 Y 和恐怖的奴隶主【矩阵快速幂优化DP】【倍增优化】
LINK 思路 首先是考虑怎么设计dp的状态 发现奴隶主的顺序没有影响,只有生命和个数有影响,所以就可以把每个生命值的奴隶主有多少压缩成状态就可以了 然后发现无论是什么时候一个状态到另一个状态的转移都 ...
- BZOJ5298 CQOI2018 交错序列 【DP+矩阵快速幂优化】*
BZOJ5298 CQOI2018 交错序列 [DP+矩阵快速幂优化] Description 我们称一个仅由0.1构成的序列为"交错序列",当且仅当序列中没有相邻的1(可以有相邻 ...
- HDU5411——CRB and Puzzle——————【矩阵快速幂优化dp】
CRB and Puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
随机推荐
- form 表单中input 使用disable属性
记录一下今天踩得坑. 在使用form表单提交的时候,input用了disable属性,在查找了好久之后,找到原因,万万没想到是因为disable. 修改方法:disable改为readonly dis ...
- 阿里云初始化,epel库,docker安装的一般步骤,和java8 升级 java11 的一些bug,无法显示验证码,等
1. 反射异常 有些反射异常,不是自己代码的错而是一些框架调用的时候,所带来的,不好处理. 用压制输出的形式,1行为压制,2行为调试模式,输出所有的报错信息.这里用java.base / java.n ...
- VS Code 快速下载
最近在官网下载Visual Studio Code时,下载速度特别慢,经过搜索后发现,将下载地址前部分更换为国内地址后,下载速度飞快. 具体步骤如下: VSCodeSetup-x64-1.72.0 官 ...
- VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory.
macOS VirtualBox Bridged Adapter 不能用 I'm running macOS High Sierra 10.13.1 and VirtualBox 5.2.2. Thi ...
- h5项目
h5项目,用vue3,用vite搭建就好,是一个新的项目. 接口还在开发,可以用mock模拟. 现有信息:接口url,ui-url,原型url(各部分的交互关系)
- Truenas Core安装(DOS界面)
下载ISO安装包 搜索truenas core ,找到网站www.truenascore.com,根据网站导航栏指示,点击menu--software--truenas core--download ...
- ABAP 删除内表重复数据
SORT <内表> BY <字段> [ascending/descending]. DELETE ADJACENT DUPLICATES FROM <内表> COM ...
- 1.CD冷却效果
CD冷却效果.. 一.将需要用到的图片复制到 PS 中做去色处理,将图片保存为 PNG 格式.如下 二.将制作好的图片导入 Unity 中,做成图集 三.在虚拟按键上添加 UI - Image 制作 ...
- Git 初始命令行
命令行指令 Git 全局设置 git config --global user.name "Administrator" git config --global user.emai ...
- antd Vue--this.$confirm弹窗使用
看API中this.$confirm弹窗使用不对 讲的也不明确,在此记录下正确的用法 this.$confirm("确认删除文件?",{ type:'error'}).then(( ...