ZOJ3772_Calculate the Function
给出一些数组a[i],每次询问为li,ri,定义f[li]=a[li],f[li+1]=a[li+1],对于其他不超过ri的位置,f[x]=f[x-1]+a[x]*f[x-2] 。
题目有着浓浓的矩阵气息。
f[x]=f[x-1]+a[x]*f[x-2]
f[x-1]=f[x-1]+0
根据上面两个我们就可以知道
f[x]=========|1,a[x]| f[x-1]
f[x-1]=======|1 , 0| f[x-2]
这样我们就把矩阵构造出来了,相当于每次询问某一段区间的矩阵的乘积。
由于是连续的区间,线段树即可解决问题。
注意矩阵是放在左边,所以大的位置放在左边,线段树操作的时候也需要注意了。
召唤代码君:
#include <iostream>
#include <cstring>
#include <cstdio>
#define maxn 300300
#define mod 1000000007
typedef long long ll;
using namespace std; class Mat{
public:
ll f[][];
Mat() { f[][]=f[][]=f[][]=f[][]=; }
Mat(int f1,int f2,int f3,int f4){
f[][]=f1,f[][]=f2,f[][]=f3,f[][]=f4;
}
Mat operator * (Mat m1) const{
Mat m0;
for (int i=; i<; i++)
for (int j=; j<; j++)
for (int k=; k<; k++)
m0.f[i][j]=(m0.f[i][j]+f[i][k]*m1.f[k][j])%mod;
return m0;
}
void output(){
cout<<f[][]<<' '<<f[][]<<'\n'<<f[][]<<' '<<f[][]<<'\n';
}
}tree[maxn]; int n,m,T,a[maxn]; void build(int rt,int l,int r)
{
if (l==r){
tree[rt]=Mat(,a[l],,);
return;
}
int mid=(l+r)>>;
build(rt<<,l,mid);
build(rt<<|,mid+,r);
tree[rt]=tree[rt<<|]*tree[rt<<];
} Mat query(int rt,int l,int r,int L,int R)
{
if (L<=l && R>=r) return tree[rt];
int mid=(l+r)>>;
Mat tot(,,,);
if (R> mid) tot=query(rt<<|,mid+,r,L,R);
if (L<=mid) tot=tot*query(rt<<,l,mid,L,R);
return tot;
} int main()
{
int x,y;
scanf("%d",&T);
while (T--)
{
scanf("%d%d",&n,&m);
for (int i=; i<=n; i++) scanf("%d",&a[i]);
build(,,n);
while (m--)
{
scanf("%d%d",&x,&y);
if (y==x || y==x+){
if (y==x) printf("%d\n",a[x]);
else printf("%d\n",a[x+]);
continue;
}
Mat tmp=query(,,n,x+,y);
/*
cout<<" ans Mat is : \n";
tmp.output();
cout<<" ........... the end of Mat.";
*/
printf("%d\n",(int)((tmp.f[][]*a[x+]+tmp.f[][]*a[x])%mod));
}
}
return ;
}
ZOJ3772_Calculate the Function的更多相关文章
- 通过百度echarts实现数据图表展示功能
现在我们在工作中,在开发中都会或多或少的用到图表统计数据显示给用户.通过图表可以很直观的,直接的将数据呈现出来.这里我就介绍说一下利用百度开源的echarts图表技术实现的具体功能. 1.对于不太理解 ...
- jsp中出现onclick函数提示Cannot return from outside a function or method
在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...
- JavaScript function函数种类
本篇主要介绍普通函数.匿名函数.闭包函数 目录 1. 普通函数:介绍普通函数的特性:同名覆盖.arguments对象.默认返回值等. 2. 匿名函数:介绍匿名函数的特性:变量匿名函数.无名称匿名函数. ...
- 在ubuntu16.10 PHP测试连接MySQL中出现Call to undefined function: mysql_connect()
1.问题: 测试php7.0 链接mysql数据库的时候发生错误: Fatal error: Uncaught Error: Call to undefined function mysqli_con ...
- jquery中的$(document).ready(function() {});
当文档载入时执行function函数里的代码, 这部分代码主要声明,页面加载后 "监听事件" 的方法.例如: $(document).ready( $("a") ...
- Function.prototype.toString 的使用技巧
Function.prototype.toString这个原型方法可以帮助你获得函数的源代码, 比如: function hello ( msg ){ console.log("hello& ...
- 转:ORA-15186: ASMLIB error function = [asm_open], error = [1], 2009-05-24 13:57:38
转:ORA-15186: ASMLIB error function = [asm_open], error = [1], 2009-05-24 13:57:38http://space.itpub. ...
- [Xamarin] 透過Native Code呼叫 JavaScript function (转帖)
今天我們來聊聊關於如何使用WebView 中的Javascript 來呼叫 Native Code 的部分 首先,你得先來看看這篇[Xamarin] 使用Webview 來做APP因為這篇文章至少講解 ...
- Oracle数据库自动备份SQL文本:Procedure存储过程,View视图,Function函数,Trigger触发器,Sequence序列号等
功能:备份存储过程,视图,函数触发器,Sequence序列号等准备工作:--1.创建文件夹 :'E:/OracleBackUp/ProcBack';--文本存放的路径--2.执行:create or ...
随机推荐
- 母版页的 page_load事件执行两次
定义了一个母版页 Admin.master 部分代码如下 <body onload="LoadHight()"> <div> <!--公共的头部开始 ...
- linux——ssh服务
SSH服务(TCP端口号22):安全的命令解释器 为客户机提供安全的Shell 环境,用于远程管理 SSH基于公钥加密(非对称加密)技术: 数据加密传输: 客户端和服务器的身份验证: 公钥 和 私钥 ...
- Linux 命令 ls -l
一.ll命令 ll并不是linux下一个基本的命令,它实际上是ls -l的一个别名. Ubuntu默认不支持命令ll,必须用 ls -l,这样使用起来不是很方便. 如果要使用此命令,可以作如下修改:打 ...
- dispay属性的block,inline,inline-block
转自下面的几位大神: http://www.cnblogs.com/KeithWang/p/3139517.html 总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 bl ...
- 生成API文档的软件
SandCastle:http://shfb.codeplex.com/SourceControl/latest#1952439 HTML Help:http://msdn.microsoft.com ...
- 【转】用Python实现各种排序算法
以下代码均为python3版本的代码 # 冒泡排序 # 比较相邻的元素大小,将小的前移,大的后移,就像水中的气泡一样,最小的元素经过几次移动,会最终浮到水面上. def bubbleSort(list ...
- [Reship]如何回复审稿人意见
================================= This article came from here:http://blog.renren.com/GetEntry.do?id= ...
- 《C++编程规范:101条规则、准则与最佳实践》学习笔记
转载:http://dsqiu.iteye.com/blog/1688217 组织和策略问题 0. 不要为小事斤斤计较.(或者说是:知道什么东西不需要标准化) 无需在多个项目或者整个公司范围内强制实施 ...
- jquery table 拼接集合
1html: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...
- UVALive 4818 - Largest Empty Circle on a Segment (计算几何)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...