NOI 2013 矩阵游戏
http://uoj.ac/problem/124
矩阵乘法。
十进制快速幂。
刚开始还傻傻地写二进制快速幂,然后陈老师一语点醒梦中人......
#include<cstdio> #include<cstdlib> #include<iostream> #include<fstream> #include<algorithm> #include<cstring> #include<string> #include<cmath> #include<queue> #include<stack> #include<map> #include<utility> #include<set> #include<bitset> #include<vector> #include<functional> #include<deque> #include<cctype> #include<climits> #include<complex> //#include<bits/stdc++.h>适用于CF,UOJ,但不适用于pojusing namespace std;typedef long long LL; typedef double DB; typedef pair<int,int> PII; typedef complex<DB> CP;#define mmst(a,v) memset(a,v,sizeof(a)) #define mmcy(a,b) memcpy(a,b,sizeof(a)) #define re(i,a,b) for(i=a;i<=b;i++) #define red(i,a,b) for(i=a;i>=b;i--) #define fi first #define se second #define m_p(a,b) make_pair(a,b) #define SF scanf #define PF printf #define two(k) (1<<(k))template<class T>inline T sqr(T x){return x*x;} template<class T>inline void upmin(T &t,T tmp){if(t>tmp)t=tmp;} template<class T>inline void upmax(T &t,T tmp){if(t<tmp)t=tmp;}const DB EPS=1e-9; inline int sgn(DB x){if(abs(x)<EPS)return 0;return(x>0)?1:-1;} const DB Pi=acos(-1.0);inline void clear(vector<int> *A,int a,int b){int i,j;A->clear();re(i,0,a)re(j,0,b)A[i].push_back(0);}inline int gint(){int res=0;bool neg=0;char z;for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());if(z==EOF)return 0;if(z=='-'){neg=1;z=getchar();}for(;z!=EOF && isdigit(z);res=res*10+z-'0',z=getchar());return (neg)?-res:res; } inline LL gll(){LL res=0;bool neg=0;char z;for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());if(z==EOF)return 0;if(z=='-'){neg=1;z=getchar();}for(;z!=EOF && isdigit(z);res=res*10+z-'0',z=getchar());return (neg)?-res:res;}const LL Mod=1000000007; const int maxlen=1000000;char N[maxlen+1000],M[maxlen+100]; LL a,b,c,d;struct Tmatrix{LL v[3][3];inline void clear(){mmst(v,0);}inline friend Tmatrix operator *(const Tmatrix &a,const Tmatrix &b){Tmatrix c;c.v[1][1]=(a.v[1][1]*b.v[1][1]+a.v[1][2]*b.v[2][1])%Mod;c.v[1][2]=(a.v[1][1]*b.v[1][2]+a.v[1][2]*b.v[2][2])%Mod;c.v[2][1]=(a.v[2][1]*b.v[1][1]+a.v[2][2]*b.v[2][1])%Mod;c.v[2][2]=(a.v[2][1]*b.v[1][2]+a.v[2][2]*b.v[2][2])%Mod;return c;}};inline void minus1(char *A){int i,t;for(t=1;A[t]=='0';t++);re(i,1,t-1)A[i]='9';A[t]--;}Tmatrix f1,f2,f1n,g;Tmatrix A[maxlen+100]; inline Tmatrix power2(Tmatrix a,int k){Tmatrix x,y=a;x.v[1][1]=1;x.v[1][2]=0;x.v[2][1]=0;x.v[2][2]=1;while(k!=0){if(k&1)x=x*y;y=y*y;k>>=1;}return x;} inline Tmatrix power(Tmatrix a,char *K){int i,l=strlen(K+1);A[1]=a;re(i,2,l)A[i]=power2(A[i-1],10);Tmatrix x;x.v[1][1]=1;x.v[1][2]=0;x.v[2][1]=0;x.v[2][2]=1;re(i,1,l)x=x*power2(A[i],K[i]-'0');return x;}int main(){freopen("matrix.in","r",stdin);freopen("matrix.out","w",stdout);int i,l;SF("%s",N+1);l=strlen(N+1);re(i,1,l/2)swap(N[i],N[l-i+1]);SF("%s",M+1);l=strlen(M+1);re(i,1,l/2)swap(M[i],M[l-i+1]);a=gint();b=gint();c=gint();d=gint();f1.v[1][1]=a;f1.v[1][2]=b;f1.v[2][1]=0;f1.v[2][2]=1;f2.v[1][1]=c;f2.v[1][2]=d;f2.v[2][1]=0;f2.v[2][2]=1;minus1(M);minus1(N);f1n=power(f1,M);g=f2*f1n;g=power(g,N);g=f1n*g;cout<<(g.v[1][1]+g.v[1][2])%Mod<<endl; }
View Code
转载于:https://www.cnblogs.com/maijing/p/4686947.html
NOI 2013 矩阵游戏相关推荐
- [ZJOI2007]棋盘制作 报表统计 矩阵游戏 时态同步
好长时间了..简要除草. 棋盘制作:经典dp... 报表统计:明显数据结构,,,但我没想出来,第一问可以用堆,第二问用平衡树. 矩阵游戏:好吧.一眼二分图,匈牙利过. 时态同步:树形dp,貌似不难,( ...
- BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 123 Solved: 73 [ Submit][ St ...
- BZOJ 3240 [Noi2013] 矩阵游戏 题解
转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24594825 [原题] 3240: [Noi2013]矩阵游戏 Time Limit ...
- bzoj1059: [ZJOI2007]矩阵游戏
1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4748 Solved: 2264 [Submit][St ...
- [ZJOI2007]矩阵游戏
来源:牛客网: 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N *N黑白方阵进行(如同国际象棋一般,只是颜色是随意的). 每次可以对该矩阵 ...
- NOIP模拟测试13「矩阵游戏·跳房子·优美序列」
矩阵游戏 考试时思路一度和正解一样,考试到最后还是打了80分思路,结果80分打炸了只得了40分暴力分 题解 算出来第一列的总值,每次通过加每两列之间的差值得出下一列的总值 算第一列我们只需要让当前点* ...
- 【BZOJ - 1059】矩阵游戏(二分图匹配,建图,最小边覆盖)
题干: 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N *N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作:行交换 ...
- [bzoj1059]矩阵游戏
虽然是一道水难题,但是我这种蒟蒻还是要讲一讲的. Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N *N黑白方阵进行(如同国际 ...
- 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告
P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般 ...
最新文章
- 6.ajax应用,ajax应用
- 网络:TCP粘包问题?如何解决?
- 【温故知新】CSS学习笔记(显示模式简介)
- nyoj 791 Color the fence(贪心)
- 17 FI配置-财务会计-定义雇员的容差组
- pytorch根据特征图训练LSTM Stacked AutoEncoder
- BioSPPy - Biosignal(生物信号处理库)
- Lync 小技巧-26-由于服务器连接问题,一些演示功能不可用
- weibinv matlab,利用MATLAB进行夫琅和费衍射
- T检验、F检验和统计学意义(P值或sig值)
- 电脑使用过程中“xx指令引用的xx内存。该内存不能为written或read”的解决方案!
- 修正半透明头发的渲染异常
- 软件需求分析的五个步骤_建立满足用户需求的云的5个步骤
- 声纹识别开源工具 ASV-Subtools
- PostgreSQL JIT(Just-In-Time Compilation)With LLVM 的实现原理
- CentOS-7安装Cinnamon Desktop
- 转:招聘就是战略,洞察面试三板斧
- java minma_Java Core.minMaxLoc方法代码示例
- 使用Wireshark抓包软件提示The NPF driver isn’t running解决办法
- ARM嵌入式开发板学习路线指引
热门文章
- 中国大气污染影响韩国?生态环境部这样反驳
- 图的单源最短路径,Floyd算法(数据结构c++)
- 关于arduino和zigbee串口16进制通信问题
- Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
- oc 自定义导航栏背景
- overflow:hidden;zoom:1 理解转__
- jquery 半透明遮罩效果 小结
- “二子乘舟”的故事很难讲
- mysql_connect() 不支持 请检查 mysql 模块是否正确加载
- Java实现自动生成Mysql数据库表实体类