题目链接

题意分析

当前等级为\(x\)的魔法书会对等级在\([x,inf]\)的所有人造成\(y\)的影响

所以除了求平均值之外 就是区间修改区间求和

需要使用动态开点 + 标记永久化

需要注意的是 当前点为空的话 需要返回 目标区间长度*下放标记值

CODE:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<string>
#include<queue>
#include<map>
#include<stack>
#include<list>
#include<set>
#include<deque>
#include<vector>
#include<ctime>
#define ll long long
#define inf 0x7fffffff
#define N 200080
#define IL inline
#define M 10008611
#define D double
#define R register
using namespace std;
template<typename T>IL void read(T &_)
{
T __=0,___=1;char ____=getchar();
while(!isdigit(____)) {if(____=='-') ___=0;____=getchar();}
while(isdigit(____)) {__=(__<<1)+(__<<3)+____-'0';____=getchar();}
_=___ ? __:-__;
}
/*-------------OI使我快乐-------------*/
ll n,m,root,tot,maxn;
struct Node{
ll tag,sum;
Node(){tag=sum=0;}
}tre[M];
struct Qury{
ll knd,x,y;
}e[N];
ll lson[M],rson[M];
IL void update(ll &now,ll lenow,ll rinow,ll le,ll ri,ll d)
{
if(!now) now=++tot;tre[now].sum+=(ri-le+1)*d;
if(lenow==le&&rinow==ri)
{
tre[now].tag+=d;return;
}
ll mid=(lenow+rinow)>>1;
if(ri<=mid) update(lson[now],lenow,mid,le,ri,d);
else if(mid<le) update(rson[now],mid+1,rinow,le,ri,d);
else update(lson[now],lenow,mid,le,mid,d),update(rson[now],mid+1,rinow,mid+1,ri,d);
}
IL ll qury(ll now,ll lenow,ll rinow,ll le,ll ri,ll have)
{
if(!now) return (ri-le+1)*have;
if(le==lenow&&rinow==ri) return tre[now].sum+(rinow-lenow+1)*have;
ll mid=(lenow+rinow)>>1;
if(ri<=mid) return qury(lson[now],lenow,mid,le,ri,have+tre[now].tag);
else if(mid<le) return qury(rson[now],mid+1,rinow,le,ri,have+tre[now].tag);
else return qury(lson[now],lenow,mid,le,mid,have+tre[now].tag)+qury(rson[now],mid+1,rinow,mid+1,ri,have+tre[now].tag);
}
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
read(n);read(m);
for(R ll i=1;i<=n;++i)
{
read(e[i].x);read(e[i].y);
e[i].knd=-1;maxn=max(maxn,e[i].x);
}
for(R ll i=n+1;i<=n+m;++i)
{
read(e[i].knd);read(e[i].x);read(e[i].y);
if(e[i].knd==1) maxn=max(maxn,e[i].y);
else maxn=max(maxn,e[i].x);
}
for(R ll i=1;i<=n;++i)
{
update(root,1,maxn,e[i].x,maxn,e[i].y);
}
for(R ll i=n+1;i<=n+m;++i)
{
if(e[i].knd==1)
{
ll tmp=qury(root,1,maxn,e[i].x,e[i].y,0);
printf("%.4f\n",(1.0*(D)(tmp))/(1.0*(D)(e[i].y-e[i].x+1)));
}
else
{
update(root,1,maxn,e[i].x,maxn,e[i].y);
}
}
// fclose(stdin);
// fclose(stdout);
return 0;
}

HEOI 2019 RP++

P4915 帕秋莉的魔导书的更多相关文章

  1. P4915 帕秋莉的魔导书(动态开点线段树)

    题目背景 帕秋莉有一个巨大的图书馆,里面有数以万计的书,其中大部分为魔导书. 题目描述 魔导书是一种需要钥匙才能看得懂的书,然而只有和书写者同等或更高熟练度的人才能看得见钥匙.因此,每本魔导书都有它自 ...

  2. P4910 帕秋莉的手环

    题目背景 帕秋莉是蕾米莉亚很早结识的朋友,现在住在红魔馆地下的大图书馆里.不仅擅长许多魔法,还每天都会开发出新的魔法.只是身体比较弱,因为哮喘,会在咏唱符卡时遇到麻烦. 她所用的属性魔法,主要是生命和 ...

  3. [Luogu] P4910 帕秋莉的手环

    题目背景 帕秋莉是蕾米莉亚很早结识的朋友,现在住在红魔馆地下的大图书馆里.不仅擅长许多魔法,还每天都会开发出新的魔法.只是身体比较弱,因为哮喘,会在咏唱符卡时遇到麻烦. 她所用的属性魔法,主要是生命和 ...

  4. 【Cogs2187】帕秋莉的超级多项式(多项式运算)

    [Cogs2187]帕秋莉的超级多项式(多项式运算) 题面 Cogs 题解 多项式运算模板题 只提供代码了.. #include<iostream> #include<cstdio& ...

  5. cogs 998. [東方S2] 帕秋莉·诺蕾姬

    二次联通门 : cogs 998. [東方S2] 帕秋莉·诺蕾姬 交上去后发现自己没上榜 就想着加点黑科技 把循环展开一下 结果WA了.. 万恶的姆Q /* cogs 998. [東方S2] 帕秋莉· ...

  6. 【HZOI2015】帕秋莉的超级多项式

    题面 题目分析 超级模板题: 多项式乘法 多项式求逆 多项式开根 多项式求导 多项式求积分 多项式求对数 多项式求自然对数为底的指数函数 多项式快速幂 代码实现 #include<iostrea ...

  7. COGS2187 [HZOI 2015] 帕秋莉的超级多项式

    什么都别说了,咱心态已经炸了... question 题目戳这里的说... 其实就是叫你求下面这个式子的导函数: noteskey 其实是道板子题呢~ 刚好给我们弄个多项式合集的说... 各种板子粘贴 ...

  8. 洛谷 P4910 帕秋莉的手环 矩阵乘法+快速幂详解

    矩阵快速幂解法: 这是一个类似斐波那契数列的矩乘快速幂,所以推荐大家先做一下下列题目:(会了,差不多就是多倍经验题了) 注:如果你不会矩阵乘法,可以了解一下P3390的题解 P1939 [模板]矩阵加 ...

  9. COGS 2189 帕秋莉的超级多项式

    放模板啦! 以后打比赛的时候直接复制过来. 说句实话vector的效率真的不怎么样,但是似乎也还行,最主要是……写得比较爽. #include <cstdio> #include < ...

随机推荐

  1. BaseSEOPage统一设置网站SEO

    代码: public class BaseSeoPage : System.Web.UI.Page { protected override void OnPreLoad(EventArgs e) { ...

  2. using namespace cv

    在OpenCV中使用 using namespace cv 的作用: 在使用#include语句包含相应头文件后,使用下面语句即可包含相应的Opencv命名空间 using namespace cv; ...

  3. 网络爬虫--requests库中两个重要的对象

    当我们使用resquests.get()时,返回的时response的对象,他包含服务器返回的所有信息,也包含请求的request的信息. 首先: response对象的属性有以下几个, r.stat ...

  4. 整理悬浮在列表中a元素时改变a元素上下边框颜色的问题。

    整理一下当悬浮在a元素上时a的上下边颜色改变,并且里面的内容不会移动,下面是PSD图效果区域: 刚开始我先给A元素加了上下边框和颜色,利用a:hover改变a元素上下的边框颜色,但是第一个a元素的下边 ...

  5. line-height:150% 和 line-height:1.5

    line-height属性的细节与大多数CSS属性不同,line-height支持属性值设置为无单位的数字.有无单位在子元素继承属性时有微妙的不同. 有单位(包括百分比)与无单位之间的区别有单位时,子 ...

  6. swift po 实现动态按钮2

    // //  ButtonViewController.swift //  PopInstall // //  Created by su on 15/12/11. //  Copyright © 2 ...

  7. 20169205 2016-2017-2 实验四 SQL注入实验

    20169205 2016-2017-2 实验四 SQL注入实验 实验介绍 SQL注入技术是利用web应用程序和数据库服务器之间的接口来篡改网站内容的攻击技术.通过把SQL命令插入到Web表单提交框. ...

  8. 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  9. EBS 并发程序运行信息

    --并发程序运行信息SELECT REQUEST_ID,       PROGRAM,       actual_start_date 开始日期,       ACTUAL_COMPLETION_DA ...

  10. Rsyslog远程传输的几种方式

    基本介绍 Rsyslog是一个syslogd的多线程增强版,rsyslog vs. syslog-ng 链接是rsyslog官方和syslog特性和性能上的一些对比,目前大部分Linux发行版本默认也 ...