zoj2853 Evolution
给定一个进化的矩阵图,问在m次之后最终的物种有多少个,实际上这和线性代数及其应用里的一个例题是一样的...总之就相当于煞笔的套个矩阵不断去乘m次,然后每次都会根据得到进化后各物种的个数,矩阵快速幂求一下就好了。
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<string>
#include<set>
#include<algorithm>
#include<vector>
#include<queue>
#include<list>
#include<cmath>
#include<cstring>
#include<map>
#include<stack>
using namespace std;
#define INF 0x3f3f3f3f
#define maxn 205
#define ull unsigned long long
#define ll long long
#define hashmod 99999839
#define mod 9997
#define pi acos(-1)
double z;
int n,m,t,x,y;
double c[][maxn];
struct rec{
double a[maxn][maxn];
rec(){
for(int i = ;i < n;++i){
for(int j = ;j < n;++j){
a[i][j] = ;
}
}
}
void init(){
for(int i = ;i < n;++i){
for(int j = ;j < n;++j){
if(i == j) a[i][j] = 1.0;
}
}
}
rec operator*(const rec& p){
rec ans;
for(int i = ;i < n;++i){
for(int j = ;j < n;++j){
for(int k = ;k < n;++k){
ans.a[i][j] += a[i][k] * p.a[k][j];
}
}
}
return ans;
}
}; void solve(rec p){
rec ans;
ans.init();
while(m){
if(m & ){
ans = ans * p;
}
p = p * p;
m >>= ;
}
for(int i = ;i < n;++i){
c[][n-] += c[][i] * ans.a[i][n-];
}-
printf("%.0f\n",c[][n-]);
}
int main(){
// freopen("a.in","r",stdin);
// freopen("b.out","w",stdout);
while(~scanf("%d%d",&n,&m) && n + m){
for(int i = ;i < n;++i){
c[][i] = ;
}
for(int i = ;i < n;++i){
scanf("%lf",&c[][i]);
}
scanf("%d",&t);
rec p;
p.init();
while(t--){
scanf("%d%d%lf",&x,&y,&z);
p.a[x][y] += z;
p.a[x][x] -= z;
}
solve(p);
}
return ;
}
zoj2853 Evolution的更多相关文章
- Evolution(矩阵快速幂)zoj2853
Evolution Time Limit: 5 Seconds Memory Limit: 32768 KB Description Evolution is a long, long pr ...
- Evolution ZOJ2853
矩阵太大导致爆栈 解决方法:矩阵不要开在main函数里面 全部在外面处理 main函数只能处理简单的赋值和加减 损失的要自减!! 最后为 sum+=t[i]*ans.m[i][n-1]; 得 ...
- 差分进化算法 DE-Differential Evolution
差分进化算法 (Differential Evolution) Differential Evolution(DE)是由Storn等人于1995年提出的,和其它演化算法一样,DE是一种模拟生物进化 ...
- Evolution项目(1)
Evolution项目是基于NFine修改的项目 主要改动为: 支持了.net core 1.0 支持了 EF core 1.0 支持数据库自动创建及Demo数据自动灌入 修改了授权方式 新增加了一个 ...
- ubuntu 14.04 下evolution邮箱客户端设置(腾讯企业邮箱)
安装 evolution 有PPA可用,支持 Ubuntu 14.04 及衍生系统.打开终端,输入以下命令: sudo add-apt-repository ppa:fta/gnome3 sudo a ...
- ON THE EVOLUTION OF MACHINE LEARNING: FROM LINEAR MODELS TO NEURAL NETWORKS
ON THE EVOLUTION OF MACHINE LEARNING: FROM LINEAR MODELS TO NEURAL NETWORKS We recently interviewed ...
- GFS: Evolution on Fast-forward
GFS: Evolution on Fast-forward by Marshall Kirk McKusick, Sean Quinlan | August 7, 2009 A discussion ...
- 长期演进技术(LTE,Long Term Evolution)
/********************************************************************************* * 长期演进技术(LTE,Long ...
- UNIX Filesystems - Evolution Design and Implementation.pdf
UNIX Filesystems - Evolution Design and Implementation.pdf
随机推荐
- (2)《Head First HTML与CSS》学习笔记---img与基于标准的HTML5
1.浏览器处理图像的过程: 1.服务器获取文件,显示出文本结构,以及预留默认的大小给<img>(如果该<img>有width-1值和height-1值,则根据这个值提前设好页面 ...
- 一台机器运行多个JBoss多实例
JBossXMLJVMTomcat应用服务器 我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JBoss实例,上面运行不同的应用程序,这样的话无论由于什么原因需要对某个JBoss实例进行关 ...
- t-sql的楼梯:超越基本级别6:使用案例表达式和IIF函数
t-sql的楼梯:超越基本级别6:使用案例表达式和IIF函数 源自:Stairway to T-SQL: Beyond The Basics Level 6: Using the CASE Expre ...
- 编写高质量Python代码的59个有效方法
Python学习资料或者需要代码.视频加Python学习群:960410445 1. 用Pythonic方式思考 第一条:确认自己使用的Python版本 (1)有两个版本的python处于活跃状态,p ...
- fedora下yum安装gnome和kde桌面 (有问题 )
转自: http://linux.chinaunix.net/techdoc/system/2009/08/31/1133198.shtml 1.1 安装KDE桌面环境 yum groupins ...
- app dcloud 打包公用证书
Android平台云端打包使用的DCloud公用证书 分类:HTML5+ 5+App开发 HBuilder|HBuilderX应用云端打包Android平台默认使用的DCloud公用证书,其信息如下: ...
- 07CSS表格
CSS表格 表格边框 如需在 CSS 中设置表格边框,请使用 border 属性. table, th, td { border: 1px solid blue; } 折叠边框 border-coll ...
- 如何用SQL语句在指定字段前面插入新的字段?
如何用SQL语句在指定字段前面插入新的字段? 2007-10-17 09:28:00| 分类: 笔记|举报|字号 订阅 create proc addcolumn @tablename va ...
- 用node写个简单的静态服务器
直接上代码吧,我把它命名为 app.js, 只要在该文件所在目录下,控制台运行 node app.js 即可启动一个本地服务器了. /** * 服务器 * Author jervy * Date */ ...
- LOJ 2321 清华集训2017 无限之环 拆点+最小费用最大流
题面:中文题面,这里不占用篇幅 分析: 看到题面,我就想弃疗…… 但是作为任务题单,还是抄了题解…… 大概就是将每个格子拆点,拆成五个点,上下左右的触点和一个负责连源汇点的点(以下简称本点). 这个这 ...