2017.8.5 One-Dimensional 思考记录
这题递推式已经给了,就考虑怎么优化就可以了
对于a*b+c*d+e*f的形式直接拆到两个矩阵里即可
由于乘的时候实际是遍历每个项,所以不参与运算的设为0即可
码(from某知名选手):
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,ta,tb,tc,mod;
struct jz{int p[99][99];
}a,b;
jz operator *(const jz &x,const jz &y)
{jz c;memset(c.p,0,sizeof(c.p));for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)for(int k=1;k<=n;k++)
c.p[i][k]+=x.p[i][j]*y.p[j][k]; for (int i=1; i<=n; i++) for (int j=1; j<=n; j++) c.p[i][j]%=mod; return c;
}
int main()
{while (scanf("%d%d%d%d%d%d",&n,&mod,&ta,&tb,&tc,&m) && n){ int i; for (i=1; i<=n; i++) scanf("%d",&a.p[1][i]); memset(b.p,0,sizeof(b.p)); for (i=1; i<=n; i++){ if (i<n) b.p[i][i+1]=ta; b.p[i][i]=tb; if (i>1) b.p[i][i-1]=tc; } for (; m; m>>=1,b=b*b) if (m&1) a=a*b; for (i=1; i<=n; i++) printf("%d%c",a.p[1][i],(i<n)?' ':'\n'); } }
2017.8.5 One-Dimensional 思考记录相关推荐
- 2017.3.24 分裂游戏 思考记录
事先说明:这不是好题解,这只是思考记录 同机房的xp都学博弈了.. 感觉还是学学看吧 先来看一下简单的nim: 题目: Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个 ...
- 2017.10.24 上升序列 思考记录
终于有会做的题了... 一开始想用正常的lis ,然后从前往后扫, 由于最优查询区间在序列上是按顺序单调递增的,所以想记录每个点取哪个值跳到哪,这样是n*m logn的 然后发现既然是单调递增的那直接 ...
- 2017.10.7 括号序列 思考记录
这个题看起来很简单,但细节比较麻烦.参考完别人的代码后才想出自己的解法的.. 一开始认为已匹配的括号是可以直接消的,所以就只维护了两个变量 但还有区间取反.. 由于和已配对的括号的顺序有关,所以不是很 ...
- 2017.9.28 约数研究 思考记录
这个题一开始可能会想复杂, 然而它需要对答案的贡献进行归类 可以发现,一个约数对其倍数的数贡献是一样的,,所以可以考虑离散 所以直接对于每个数不好求,就可以考虑每个约数的贡献 而每个约数i就有n/i个 ...
- 2017.5.11 道路修建 思考记录
这个线段树一眼秒了(主要是有前面的思考经验) 就是维护两个列对应线段上的形态.,比较好想的 但数据结构题有个特点--使你知道结构也不会做----会做也会很大概率爆零.... 所以数据结构题必须 小数据 ...
- 2017.5.9 积木大赛 思考记录
为什么要把这个题放上来?因为这个题还是很有代表性的 首先必须要跳出模拟的思考: 可以忽视每一步具体的操作,直接看目标,这样就会总结出一些规律: 连续上升或连续下降的序列次数一定是最大值,因为每次都可以 ...
- 2017.4.25 解方程 思考记录
这个题好乱啊..n*m就会炸,每个数还都可能是10^10000..这n*ai tm读进去都要10^6效率 . 一般这种似乎没有任何数论定理的东西范围还这么变态只能考虑随机化算法了.. 似乎可以用取模 ...
- 2017.3.29 报表统计 思考记录
有生之年第一道浙江省选题(虽然历史久远并且很水) 记录每个位置数列的左端点和右端点 维护两颗splay 一颗维护全局最小差值,一颗维护相邻最小差值 对于全局splay:每次插入时记录路径取差值mi ...
- 2017.3.6 地精部落 思考记录
其实这个题第一眼是没有任何思路的 强行无视题解,经过漫长的找规律,终于推出了一个可行的方法: f[i][0/1]i表示最高位的数字,0表示开始是上升,1表示开始是下降. 为什么会推出这个? 1.因为所 ...
- 2017.10.30 覆盖问题 思考记录
从细节入手已经从一种技巧变成一种策略了. 题目给出的条件很奇怪,是3个正方形,, 为什么是3个而不是4个或2个呢.. 于是先用一个大矩形把所有点卡住 然后显然矩形的每个边 都有一个正方形和他在一条直线 ...
最新文章
- 十佳自由Linux物理工具
- 微软模拟飞行2020服务器多少内存,《微软模拟飞行2020》配置公开,想玩爽还需玩家加大投入...
- NullPointerException int java.util.List.size()
- 操作数栈的字节码指令执行分析
- Matlab_求最大特征值和特征向量
- 多图丨入门必看:万字长文带你轻松了解CRM
- 浅谈医疗卫生系统人事档案管理
- 【论文学习】基于区块链的档案数据保护和共享方法
- PS 滤镜——素描算法(一)
- 何恺明目前的学术成果是否够得上计算机视觉领域历史第一人?
- Java基本数据类型转字符串
- 一份比较实用的Ubuntu下替代WIN软件列表
- SUBMAIL邮件平台API接口-Mail/xsend
- 高中数学必修一二次函数与幂函数试题及答案
- SAP实施案例之亨得利集团
- taobao.item.templates.get( 获取用户宝贝详情页模板名称 )
- IBM陈剑:金融行业大数据解决方案实践
- piwik服务器性能,piwik 大负载以及多域名监控隐藏piwik服务器原始域名解决方案...
- 5.24黄金短线上涨能否继续做空?今日如何布局
- 起底网红机器人波士顿动力
热门文章
- Spyder里面好像不能用汉字
- 深度学习标注工具LabelImg的使用方法
- windows绕开强制更新
- Python官方文档学习心得(第一章)
- 基于python的科技论文_实地科研 | 上海财经大学 | 金融科技、商业分析、人工智能:机器学习、人工智能及其在金融科技中的应用(2021.1.25开课)...
- EDGE浏览器配合阿呆喵设置广告过滤
- python安装第三方库时报错 SyntaxError: invalid syntax
- windos 服务怎么写_周岁邀请函怎么写
- python netsnmp_在Ubuntu18.04中关于Python使用netsnmp进行snmp编程
- 在matlab中function,Matlab中function函数使用操作方法