BZOJ 5082: 弗拉格 矩阵乘法
如果单点而不是求 sigma 的话还是比较好办的.
遇到这种前缀和相减的矩阵乘法可以增设一个 0 使得后面的能先加到前面,然后再算.
这样的话可以使的最后算出的是前缀和相加的形式.
code:
#include <bits/stdc++.h>
#define ll long long
#define mod 1000000007
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
struct data
{ll v[9][9]; data() { memset(v,0,sizeof(v));} ll *operator[](int a) { return v[a]; } data operator*(data &a) {data ans; int i,j,k; for(i=0;i<=8;++i) for(j=0;j<=8;++j) for(k=0;k<=8;++k) ans[i][j]=(ans[i][j]+v[i][k]*a[k][j]%mod)%mod; return ans; }
}A,T;
data pow(data x,int y)
{data ans; int i; for(i=0;i<=8;++i) ans[i][i]=1; while(y) {if(y&1) ans=ans*x; x=x*x; y>>=1; } return ans;
}
void init()
{for(int i=0;i<=8;++i) A[i][0]=1; A[1][5]=A[1][7]=1; A[2][5]=A[2][7]=1; A[3][6]=A[3][8]=1; A[4][6]=A[4][8]=1; A[5][1]=A[5][3]=1; A[6][1]=A[6][3]=1; A[7][2]=A[8][4]=1;
}
ll calc(int x)
{if(!x) return 0; data tmp=pow(A,x-1); ll ans=tmp[0][0]*4; for(int i=1;i<=8;++i) ans+=tmp[i][0]; return ans%mod;
}
int main()
{ // setIO("input"); int i,j,l,r; scanf("%d%d",&l,&r),--l; init(); printf("%lld\n",((calc(r) + calc((r+1)/2) - calc(l) - calc((l+1)/2)) * 500000004 % mod + mod)%mod); return 0;
}
BZOJ 5082: 弗拉格 矩阵乘法相关推荐
- 【bzoj5082】弗拉格 矩阵乘法
题目描述 给你n个flag,你要把每个染色成红黑白黄四色之一,满足: 1.相邻旗不能同色 2.白不能和黄相邻,红不能和黑相邻 3.不能存在连续三个球依次是"黑白红"或"红 ...
- bzoj5082 弗拉格 矩阵乘法
Description "如果明天进了面试,我就去爆妹子的照"--有妹子的丁相允作为一个oier,自然不能立太多flag,让我们来看 一道和flag有关的题目吧 给你n个flag, ...
- 信息学奥赛一本通 提高篇 第5章 矩阵乘法
例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...
- BZOJ 3329 Xorequ (数位DP、矩阵乘法)
BZOJ 3329 Xorequ (数位DP.矩阵乘法) 手动博客搬家: 本文发表于20181105 23:18:54, 原地址https://blog.csdn.net/suncongbo/arti ...
- BZOJ 1444 [JSOI2009]有趣的游戏 (AC自动机、概率与期望DP、矩阵乘法)
诶这题洛谷居然没有??? 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1444 题解: 我见到主要有两种做法. 一是矩阵乘法.设\(d ...
- 【BZOJ 3326】[Scoi2013]数数 数位dp+矩阵乘法优化
挺好的数位dp-- 先说一下我个人的做法: 经过观察,发现这题按照以往的思路从后往前递增,不怎么好推,然后我就大胆猜想,从前往后推,发现很好推啊,维护四个变量,从开始位置到现在有了i个数 f[i]:所 ...
- BZOJ 2738: 矩阵乘法 [整体二分]
给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 愚蠢的名字...... 整体二分,影响因子就是矩阵里的数 把$\le mid$的矩阵元素加到二维树状数组里然后询问分成两组就行 ...
- BZOJ 4180: 字符串计数 后缀自动机 + 矩阵乘法 + 二分(神题)
Description SD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999. 他给出了一个字符串T,字符串T中有且仅有4种字符 'A', 'B', 'C', ...
- [BZOJ]4180: 字符串计数 SAM+矩阵乘法+二分
Description SD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999. 他给出了一个字符串T,字符串T中有且仅有4种字符 'A', 'B', 'C', ...
最新文章
- vs2008与IIS 7.0使用在vista上时出现的问题及解决方法(Internet Explorer 无法显示该页面)(VS2008: IE Cannot Display Web Page)...
- 广西卫生职业技术学院计算机考试,广西卫生职业技术学院单招2021年春招分数线...
- 2016年全球芯片市场或衰退2.13%
- 使用C# lock同时访问共享数据
- 安卓动画知识总结 Animation AnimationSet LayoutAnimation
- Java动态代理模拟spring的AOP
- 用 Mars Remote API 轻松分布式执行 Python 函数
- axios_的基本使用_使用axios()方法来发送请求---axios工作笔记004
- [Firefox] 方便实用的firefox 插件
- 【TJOI2016】【bzoj4552】排序(二分答案+线段树01排序)
- 台式计算机m9870t,新闻中心 ——驱动之家:您身边的电脑专家
- 在Android上加载具有AI危害检测的TensorFlow模型
- 关于KNX/IP 网关协议报文解析以及几个注意事项
- 阿里云部署vmware报错
- 常用电子元器件介绍 齿轮规格的参数
- python pdf书籍领取
- 监控平台(J2EE)声音告警程序功能设计与实现
- (线段树)洛谷 P2471 [SCOI2007]降雨量
- 什么是模块化?为什么要模块化
- 【移动端】滑动验证致使整个屏幕都在动