Cellular Automaton UVA - 1386
无数次次RE原因竟然是,开了一个int的n输入用ll型的,简直分分钟奔溃。
思路:开n*n的矩阵内存会爆,这里通过找系数矩阵的规律,用一行代表n行的数。
例如样例1的第一行系数矩阵:1 1 0 0 1,第二行时右移一位1 1 1 0 0 后面即使变换后也是这个道理。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
typedef long long ll;
struct  matrix{ll x[551];
};
ll n,m;
matrix multi(matrix a,matrix b){matrix temp;memset(temp.x,0,sizeof(temp.x));int t=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(t==n) t=0;temp.x[i]+=a.x[j]*b.x[t++];}t--;temp.x[i]%=m;}return temp;
}
matrix quick_multi(matrix a,ll k)//矩阵快速幂
{if(k==1) return a;matrix temp;memset(temp.x,0,sizeof(temp.x));temp.x[0]=1;if(k==0) return temp;while(k){if(k&1)temp=multi(temp,a);a=multi(a,a);k>>=1;}return temp;
}int main()
{int d,k;ll b[550];matrix a;while(scanf("%lld%lld%lld%lld",&n,&m,&d,&k)!=EOF){memset(a.x,0,sizeof(a.x));memset(b,0,sizeof(b));for(int i=0;i<n;i++) scanf("%lld",&b[i]);a.x[0]=1;for(int i=1;i<=d;i++){a.x[i]=1;int p=-i;if(p<0) p+=n;a.x[p]=1;}a=quick_multi(a,k);//for(int i=0;i<n;i++) cout<<a.x[i]<<" ";//cout<<endl;int t=0;for(int i=0;i<n;i++){ll ans=0;for(int j=0;j<n;j++){if(t==n) t=0;ans+=b[j]*a.x[t++];}t--;ans%=m;//少取余??i==0?printf("%lld",ans):printf(" %lld",ans);}printf("\n");}return 0;
}

Cellular Automaton UVA - 1386相关推荐

  1. UVA1386 【Cellular Automaton】题解

    题面:UVA1386 Cellular Automaton 矩阵乘法+快速幂解法: 这是一个比较裸的有点复杂需要优化的矩乘快速幂,所以推荐大家先做一下下列洛谷题目练练手: (会了,差不多就是多倍经验题 ...

  2. poj 3150 Cellular Automaton(迷糊,但原理是用的快速幂)

    http://blog.csdn.net/guard_mine/article/details/44351103 http://www.cnblogs.com/xin-hua/archive/2013 ...

  3. 2012 Tokyo Regional C. One-Dimensional Cellular Automaton 矩阵快速幂

    题意:一个二元函数S(i, t)满足下列方程: 给出,其中N为i的个数,需要求出的值 思路:矩阵快速幂,递推式如下: #include<bits/stdc++.h> using names ...

  4. POJ3150—Cellular Automaton(循环矩阵)

    题目链接:http://poj.org/problem?id=3150 题目意思:有n个数围成一个环,现在有一种变换,将所有距离第i(1<=i<=n)个数小于等于d的数加起来,对m取余,现 ...

  5. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  6. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

  7. kuangbin带你飞 专题1-23 题单

    kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓. 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接. [kuangbin带你飞专题目录1-23] ...

  8. 老鱼的-kuangbin专题题解

    kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Flipt ...

  9. 《算法入门经典大赛——培训指南》第二章考试

    UVa特别考试 UVa站点专门为本书设立的分类题库配合,方便读者提交: http://uva.onlinejudge.org/index.php?option=com_onlinejudge& ...

  10. [Regionals 2012 :: Asia - Tokyo ]

    链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=56 ...

最新文章

  1. laravel homestead环境默认账号密码
  2. 朴素贝叶斯分类器简介及C++实现(性别分类)
  3. 服务器性能好的笔记本电脑,2020高性价比笔记本推荐-1万以上笔记本电脑排行
  4. 理解TCP的通信原理及IO阻塞
  5. 04-树7 二叉搜索树的操作集(c语言实现)
  6. Hibernate5-一对多双向关联-迫切左外连接-HQL
  7. 软硬交互代码示例_matlab交互式程序设计示例:[6]GUI界面编程1
  8. 基于Flink CDC打通数据实时入湖
  9. echarts怎么保存图片到剪切板上_Mac上微信、QQ的聊天图片和记录保存在哪?如何清理或导出?...
  10. Acer 4750 安装黑苹果_黑苹果 Mac OS 10.14.5 Mojave 安装
  11. 微信授权就是这个原理,Spring Cloud OAuth2 授权码模式
  12. python 画竖线_学习笔记92—python 画横竖分界线
  13. win7系统配置时间服务器,与Internet时间服务器同步 设Win7精确时间
  14. 移动硬盘linux双系统,安装ubuntu到移动硬盘(UEFI+GPT),实现在别的电脑也可以使用(详细教程),...
  15. 自动化测试框架RobotFrameWork教程03 RF基础关键字
  16. [转贴]馒头的N种吃法
  17. 100个python算法超详细讲解:求出符合要求的素数
  18. 英雄联盟手游推荐耳机,南卡Lite Pro 2展现优秀游戏声效处理硬实力
  19. 张伟计算机基础案例教程课后答案,案例-大学计算机基础.doc
  20. java求坐标x的对称点_对称点坐标公式是什么

热门文章

  1. Unity 性能优化方法总结
  2. FaceBook 遭遇有史以来全球最大宕机
  3. 魔兽十区服务器人最多,十区毁灭计划 新一轮wow大服务器实装公告
  4. 这些中国扶贫路上的“组合拳”,你见过吗?
  5. 【高级UI】【027】RecyclerView侧滑源码解析
  6. 如何在PowerPoint中添加幻灯片编号
  7. android登录界面素材,2014年国外30个精美APP登录界面UI设计欣赏
  8. 网易python公开课_教程帖-爬取网易云课堂上所有python课程的基本信息
  9. 常见的股票量化交易软件主要有哪几种类型?
  10. mac分区数据恢复|mac分区后数据丢失怎么恢复?