当前位置: 首页 > news >正文

P8624 [蓝桥杯 2015 省 AB] 垒骰子【 矩阵快速幂】

P8624 [蓝桥杯 2015 省 AB] 垒骰子

题目描述

赌圣 atm 晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。

经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥!

我们先来规范一下骰子:1 11的对面是4 442 22的对面是5 553 33的对面是6 66

假设有m mm组互斥现象,每组中的那两个数字的面紧贴在一起,骰子就不能稳定的垒起来。

atm 想计算一下有多少种不同的可能的垒骰子方式。

两种垒骰子方式相同,当且仅当这两种方式中对应高度的骰子的对应数字的朝向都相同。

由于方案数可能过多,请输出模10 9 + 7 10^9+7109+7的结果。

不要小看了 atm 的骰子数量哦~。

输入格式

第一行两个整数n nnm mm

n nn表示骰子数目。

接下来m mm行,每行两个整数a aab bb,表示a aab bb数字不能紧贴在一起。

输出格式

一行一个数,表示答案模10 9 + 7 10^9+7109+7的结果。

输入输出样例 #1

输入 #1

2 1 1 2

输出 #1

544

说明/提示

对于30 % 30\%30%的数据:n ≤ 5 n \le 5n5

对于60 % 60\%60%的数据:n ≤ 100 n \le 100n100

对于100 % 100\%100%的数据:0 < n ≤ 10 9 , m ≤ 36 0<n \le 10^9,m \le 360<n109,m36

时限 2 秒, 256M

蓝桥杯 2015 年省赛 AB 组 I 题。

问题链接:P8624 [蓝桥杯 2015 省 AB] 垒骰子
问题分析:矩阵快速幂问题,不解释。
参考链接:LQ0168 垒骰子【矩阵快速幂】
题记:(略)

AC的C++语言程序如下:

/* LQ0168 垒骰子 */#include<iostream>#include<cstring>usingnamespacestd;typedeflonglongLL;constintMOD=1000000007;constintN=6;inta[]={0,4,5,6,1,2,3};structmat{LL a[N+1][N+1];mat(){memset(a,0,sizeofa);}};matmul(mat x,mat y){mat ans;for(inti=1;i<=N;i++)for(intj=1;j<=N;j++)for(intk=1;k<=N;k++)ans.a[i][j]=(ans.a[i][j]+x.a[i][k]*y.a[k][j])%MOD;returnans;}matqpow(mat x,LL y){mat ans;for(inti=1;i<=N;i++)ans.a[i][i]=1;while(y){if(y&1)ans=mul(ans,x);x=mul(x,x);y>>=1;}returnans;}LLpower(LL x,LL y){LL ans=1;while(y){if(y&1)ans*=x,ans%=MOD;x*=x,x%=MOD;y>>=1;}returnans;}intmain(){LL n,m;while(cin>>n>>m){mat t;for(inti=1;i<=N;i++)for(intj=1;j<=N;j++)t.a[i][j]=1;while(m--){intx,y;cin>>x>>y;t.a[x][a[y]]=0;t.a[y][a[x]]=0;}mat ans=qpow(t,n-1);LL cnt=0;for(inti=1;i<=N;i++)for(intj=1;j<=N;j++)cnt=(cnt+ans.a[i][j])%MOD;cout<<cnt*power(4,n)%MOD<<endl;}return0;}
http://www.jsqmd.com/news/468836/

相关文章:

  • 利用快马平台快速生成带安装教程的Flask应用原型
  • FLUX.2-Klein-9B入门指南:从环境搭建到第一张编辑图片
  • AirScript脚本实战:如何用金山文档定时发送个性化早安邮件
  • PostgreSQL 技术日报 (3 月 12 日)|为什么加索引反而变慢?这招让查询快 50 倍
  • 不安全代码从“允许”到“授权”:C# 13全新[UnsafePermission]元数据契约,为什么你的AssemblyInfo.cs必须今天更新?
  • 2026年如何巧妙应对数据中心中断风险
  • 我只会 Java 一门语言可以吗?
  • uniGUI独立EXE与ISAPI模式下HTTPS配置全攻略(含HyperServer设置)
  • 汇总一下,国内各大OpenClaw一站式部署平台
  • FunASR语音识别场景应用:如何用它高效制作视频字幕和整理音频笔记
  • AI核心概念全解析深度教程(非常详细),AGI、AIGC从入门到精通,收藏这一篇就够了!
  • 洛谷P2239题解
  • ubuntu22.04 安装部署 openclaw
  • static作用(修饰函数、局部变量、全局变量)
  • 如何突破Cursor AI试用限制:2025年多语言版Pro功能解锁全指南
  • 告别繁琐调轴:清音刻墨Qwen3智能字幕对齐系统快速上手攻略
  • Flutter 三方库 gettext_parser 的鸿蒙化适配指南 - 支持标准 PO/MO 翻译文件解析、高性能多语言资源转换
  • RAG 效果不好?90% 的人排查方向都错了
  • 【初学者入门C语言】之函数
  • 开源工具cursor-free-vip:突破Cursor功能限制的开发效率增强指南
  • MinIO 社区版被故意阉割,Web管理功能全面移除,来试试国产的RustFS?
  • CW2015电源管理芯片避坑指南:常见问题与解决方案
  • 行测高频成语:安之若素
  • YOLOv8训练-推理一体化:全流程部署指南
  • 养龙虾迅速走红!OpenClaw部署保姆级教程,两步解锁专属龙虾AI助理!
  • 机器人开发工程师:技术核心、挑战与人才甄选
  • 看了500份简历,被HR淘汰的就这3个问题!
  • Nodemailer使用教程:在Node.js中发送电子邮件
  • 3月12日(进阶4)
  • Redis 平替来了!SpringBoot 集成 Dragonfly,性能暴涨 25 倍