这样的题解只能舔题解了,,,qaq

清橙资料里有。。

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <algorithm> using namespace std; struct Matrix
{
double a,b,c,d;
}; struct node
{
double S0,S1;
Matrix S2;
}tree[]; double a[]; void push_up(const int num,const int pos)
{
node &temp1=tree[num<<],&temp2=tree[num<<|];
tree[num].S0=temp1.S0+temp2.S0-a[pos]*a[pos+];
tree[num].S1=temp1.S1+temp2.S1;
Matrix t1=temp1.S2,t2=temp2.S2;
tree[num].S2=(Matrix){t1.a*t2.a,t1.a*t2.b+t1.b,t1.c*t2.a+t2.c,t1.c*t2.b+t1.d+t2.d};
return ;
} void Change(const int l,const int r,const int num,const int s,const node d)
{
if(l==r)
{
a[l]=d.S0;
tree[num]=d;
return ;
} int mid=l+((r-l)>>); if(s<=mid)Change(l,mid,num<<,s,d);
else Change(mid+,r,num<<|,s,d); push_up(num,mid);
return ;
} node Calc(const node temp1,const node temp2,const int pos)
{
node A; A.S0=temp1.S0+temp2.S0-a[pos]*a[pos+];
A.S1=temp1.S1+temp2.S1; Matrix t1=temp1.S2,t2=temp2.S2;
A.S2=(Matrix){t1.a*t2.a,t1.a*t2.b+t1.b,t1.c*t2.a+t2.c,t1.c*t2.b+t1.d+t2.d}; return A;
} node Query(const int l,const int r,const int num,const int s,const int t)
{
if(s<=l && r<=t)
return tree[num]; int mid=l+((r-l)>>); if(t<=mid)return Query(l,mid,num<<,s,t);
if(s>mid) return Query(mid+,r,num<<|,s,t);
return Calc(Query(l,mid,num<<,s,t),Query(mid+,r,num<<|,s,t),mid);
} int main()
{
int n,m,i,op; scanf("%d%d",&n,&m); for(i=;i<=n;++i)
scanf("%lf",&a[i]);
for(i=;i<=n;++i)
Change(,n,,i,(node){a[i],a[i],(Matrix){a[i],a[i]*,a[i],a[i]}}); for(i=;i<=m;++i)
{
scanf("%d",&op); if(op==)
{
int x,y;
scanf("%d%d",&x,&y); node temp=Query(,n,,x,y);
printf("%.2f\n",temp.S0+temp.S1+temp.S2.d);
} if(op==)
{
int x;
double y; scanf("%d%lf",&x,&y);
Change(,n,,x,(node){y,y,(Matrix){y,y*,y,y}});
}
}
return ;
}

[tsA1490][2013中国国家集训队第二次作业]osu![概率dp+线段树+矩阵乘法]的更多相关文章

  1. [TS-A1489][2013中国国家集训队第二次作业]抽奖[概率dp]

    概率dp第一题,开始根本没搞懂,后来看了09年汤可因论文才基本搞懂,关键就是递推的时候做差比较一下,考虑新加入的情况对期望值的贡献,然后推推公式(好像还是不太会推qaq...) #include &l ...

  2. [tsA1491][2013中国国家集训队第二次作业]家族[并查集]

    m方枚举,并查集O(1)维护,傻逼题,,被自己吓死搞成神题了... #include <bits/stdc++.h> using namespace std; struct tri { i ...

  3. [TS-A1488][2013中国国家集训队第二次作业]魔法波[高斯消元]

    暴力直接解异或方程组,O(n^6)无法接受,那么我们考虑把格子分块,横着和竖着分别分为互不影响的块,这样因为障碍物最多不超过200个,那么块的个数最多为2*(800+200)=2000个,最后用bit ...

  4. [TS-A1487][2013中国国家集训队第二次作业]分配游戏[二分]

    根据题意,设$3n$次比较中胜了$w$次,负了$l$次,平了$d$次,所有场次中胜了$W$次,负了$L$次,平了$D$次.如果一场赢了,那么$w-l$就会$+1$,相同地,$W-L$也会$+1$:如果 ...

  5. [TS-A1486][2013中国国家集训队第二次作业]树[树的重心,点分治]

    首先考虑暴力,可以枚举每两个点求lca进行计算,复杂度O(n^3logn),再考虑如果枚举每个点作为lca去枚举这个点的子树中的点复杂度会大幅下降,如果我们将每个点递归考虑,每次计算过这个点就把这个点 ...

  6. [TS-A1505] [清橙2013中国国家集训队第二次作业] 树 [可持久化线段树,求树上路径第k大]

    按Dfs序逐个插入点,建立可持久化线段树,每次查询即可,具体详见代码. 不知道为什么,代码慢的要死,, #include <iostream> #include <algorithm ...

  7. MAZE(2019年牛客多校第二场E题+线段树+矩阵乘法)

    题目链接 传送门 题意 在一张\(n\times m\)的矩阵里面,你每次可以往左右和下三个方向移动(不能回到上一次所在的格子),\(1\)表示这个位置是墙,\(0\)为空地. 现在有\(q\)次操作 ...

  8. < < < 2013年国家集训队作业 > > >

    完成题数/总题数:  道/37道 1.  A1504. Book(王迪): 数论+贪心   ★★☆        2013中国国家集训队第二次作业 2.  A1505. 树(张闻涛): 倍增LCA+可 ...

  9. [转] ACM中国国家集训队论文集目录(1999-2009)

    国家集训队1999论文集 陈宏:<数据结构的选择与算法效率——从IOI98试题PICTURE谈起>来煜坤:<把握本质,灵活运用——动态规划的深入探讨>齐鑫:<搜索方法中的 ...

随机推荐

  1. 1章 课程介绍 IDEA介绍演示与安装 IDEA安装

  2. 入门activiti-------1简单运行

    1.下载原料 2.放置位置 3.运行 4.成功页面和测试数据

  3. AngularJS过滤器filter-保留小数-渲染页面-小数点-$filter

    AngularJS      保留小数 默认是保留3位 固定的套路是 {{deom | number:4}} 意思就是保留小数点 的后四位 在渲染页面的时候 加入这儿个代码 用来精确浮点数,指定小数点 ...

  4. [Swift通天遁地]五、高级扩展-(7)UIView(视图类型)的各种扩展方法

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. Akka源码分析-Router

    akak中还有一个比较重要的概念,那就是Router(路由).路由的概念,相信大家都不陌生,在akka中,它就是其他actors的一个代理,会把消息按照路由规则,分发给指定的actor.我一般喜欢把R ...

  6. MyEclipse找不到install new software

    Window->Preferences->Capabilities-> classic update(勾选即可) 勾选后会出现software updates,下面按照help-&g ...

  7. 【洛谷3648/BZOJ3675】[APIO2014]序列分割(斜率优化DP)

    题目: 洛谷3648 注:这道题洛谷3648有SPJ,要求输出方案.BZOJ3675数据组数较多但不要求输出方案. 分析: 这可能是我第三次重学斜率优化了--好菜啊 这道题首先一看就是个DP.稍微推一 ...

  8. flask 三剑客

    1.flask中的httpresponse @app.route("/") # app中的route装饰器 def index(): # 视图函数 return "Hel ...

  9. Android json 数据解析

    1.json格式 2.json解析 3.gson解析 4.fastjson解析 一.Json格式 json一种轻量级的数据交换格式.在网络上传输交换数据一般用xml, json. 两种结构: 1)对象 ...

  10. SQL Sever语言 存储过程及触发器

    存储过程:就像函数一样的会保存在数据库中-->可编程性-->存储过程 创建存储过程: 保存在数据库表,可编程性,存储过程create proc jiafa --需要的参数@a int,@b ...