bzoj 1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1898
当然是邻接矩阵做转移矩阵来快速幂。
对于鳄鱼,好在它们周期的lcm是12,也就是每12次就又一样了。
所以把12个转移矩阵合成一下,就可以每次乘一样的,进而快速幂。%12剩下的次数暴力一下。
学到了一些方便的东西,比如struct的构造函数没有参数之类的。
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- using namespace std;
- const int N=,mod=1e4;
- int n,m,st,ed,k,fs;
- struct Matrix{
- int a[N][N];
- Matrix(){memset(a,,sizeof a);}
- Matrix operator*(const Matrix &b)const
- {
- Matrix c;
- memset(c.a,,sizeof c.a);//
- for(int i=;i<=n;i++)
- for(int k=;k<=n;k++)
- for(int j=;j<=n;j++)
- (c.a[i][j]+=a[i][k]*b.a[k][j]%mod)%=mod;
- return c;
- }
- void init()
- {
- for(int i=;i<=n;i++)a[i][i]=;
- }
- }r[],ans;
- int main()
- {
- scanf("%d%d%d%d%d",&n,&m,&st,&ed,&k);st++;ed++;
- int x,y;
- for(int i=;i<=m;i++)
- {
- scanf("%d%d",&x,&y);x++;y++;
- for(int j=;j<=;j++)
- r[j].a[x][y]=,r[j].a[y][x]=;
- }
- scanf("%d",&fs);
- for(int i=;i<=fs;i++)
- {
- scanf("%d",&x);
- for(int j=;j<=x;j++)
- {
- scanf("%d",&y);y++;
- for(int k=j;k<=;k+=x)
- memset(r[k].a[y],,sizeof r[k].a[y]);
- }
- }
- r[].init();
- for(int i=;i<=;i++)r[]=r[]*r[i];
- ans.a[][st]=;x=k/;
- while(x)
- {
- if(x&)ans=ans*r[];
- r[]=r[]*r[];x>>=;
- }
- x=k%;
- for(int i=;i<=x;i++)ans=ans*r[i];
- printf("%d",ans.a[][ed]);
- return ;
- }
bzoj 1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂的更多相关文章
- BZOJ 1898: [Zjoi2005]Swamp 沼泽鳄鱼 [矩阵乘法]
1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1082 Solved: 602[Submit][S ...
- bzoj1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1898 求到达方案数...还是矩阵快速幂: 能够到达就把邻接矩阵那里赋成1,有鳄鱼的地方从各处 ...
- BZOJ1898: [Zjoi2005]Swamp 沼泽鳄鱼(矩阵快速幂)
题意 题目链接 Sol 不难发现吃人鱼的运动每\(12s\)一个周期 所以暴力建12个矩阵,放在一起快速幂即可 最后余下的部分暴力乘 #include<bits/stdc++.h> usi ...
- BZOJ 1898: [Zjoi2005]Swamp 沼泽鳄鱼
1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1085 Solved: 604[Submit][S ...
- bzoj 1898: [Zjoi2005]Swamp 沼泽鳄鱼【dp+矩阵快速幂】
注意到周期234的lcm只有12,也就是以12为周期,可以走的状态是一样的 所以先预处理出这12个状态的转移矩阵,乘起来,然后矩阵快速幂优化转移k/12次,然后剩下的次数暴力转移即可 #include ...
- BZOJ 1898: [Zjoi2004]Swamp 沼泽鳄鱼(矩阵乘法)
可以发现,如果没有鳄鱼,那么就是裸地一道题,但是可以发现鳄鱼最多每12次重复,那么就少于12的那部分dp,其他的就矩阵乘法就行了 PS:第一次吧矩阵乘法AC了好开心QAQ CODE: #include ...
- 1898: [Zjoi2005]Swamp 沼泽鳄鱼
1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1582 Solved: 870 [Submit][S ...
- BZOJ 1898: [Zjoi2004]Swamp 沼泽鳄鱼( dp + 矩阵快速幂 )
----------------------------------------------------------------------- #include<cstdio> #incl ...
- 【BZOJ1898】[Zjoi2005]Swamp 沼泽鳄鱼 矩阵乘法
[BZOJ1898][Zjoi2005]Swamp 沼泽鳄鱼 Description 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎 ...
随机推荐
- linux创建指定大小的文件
一.生成文件大小和实际占空间大小一样的文件 dd if=/dev/zero of=50M.file bs=1M count=50 dd if=/dev/zero of=20G.file bs=1G c ...
- 主攻ASP.NET.4.5.1 MVC5.0之重生:在项目中使用zTree jQuery 树插件
效果图和json格式 Controllers代码 using HR.Models; using HR.Models.Repository; /***************************** ...
- 在shell,R,python中用变量和常量创建文件名
很多时候我们希望文件名的格式是:变量+常量的. 1.shell:变量"常量" [wangjq@mgmt multi_pcr]$ a="var" [wangjq@ ...
- 数据库系统概论学习2-《关系数据库与 E/R 模型》
-----------------------------一直更新学习内容------------------------------------ 建立一个关系数据库需要几步? 2.关系数据库与 E/ ...
- centOS安装apache服务器
# yum install httpd 启动 systemctl start httpd 重启 systemctl restart httpd 停止 systemctl stop httpd
- 初识Spring security-无Security的SpringMVC
百度百科定义: Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了 ...
- webpack 从0 手动配置
1. npm init 2. npm install -D webpack webpack-cli 3. 创建webpack入口文件( 默认 webpack.config.js 可以通过 webpac ...
- ggplot笔记002——qplot()函数
qplot()函数 一年前就听说过ggplot,很多人都说ggplot强大,ggplot无所不能,从今天开始就让我们一起来见证一下这个神奇的R包. 首先要加载ggplot2: 1 if(!suppre ...
- JavaWeb -- Servlet+JSP+JavaBean(MVC)模式
Servlet+JSP+JavaBean(MVC)模式适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP ...
- QT 多页面切换之QTabWidget
//mydialog.h #ifndef MYDIALOG_H #define MYDIALOG_H #include <QDialog> class QTabWidget; class ...