题目链接

题意分析

当前等级为\(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. JDeveloper 开发环境配置

    JDeveloper 开发环境配置 程序员的基础教程:菜鸟程序员

  2. ubuntu开机执行指令或脚本

    vi /etc/rc.d/rc.localz 将指令添加到exit 0之前,保存.

  3. Ubuntu下U盘只读文件系统,图标上锁,提示无法修改

    资料来源于网络,自己总结 问题 Ubuntu下有时候插入U盘,发现不能修改其中的内容.例如不能新建文件和文件夹,不能向U盘中复制文件等,系统提示:只读文件系统. 原因大概是U盘的文件系统信息出错(保存 ...

  4. Luogu 3321 [SDOI2015]序列统计

    BZOJ 3992 点开这道题之后才发现我对原根的理解大概只停留在$998244353$的原根是$3$…… 关于原根: 点我 首先写出$dp$方程,设$f_{i, j}$表示序列长度为$i$当前所有数 ...

  5. [Tools]SurveyMonkey

    做问卷调查,推荐一个好工具,免费的 SurveyMonkey : it's free, quick & easy! https://www.surveymonkey.com/

  6. Disruptor 系列(二)使用场景

    Disruptor 系列(二)使用场景 今天用一个订单问题来加深对 Disruptor 的理解.当系统中有订单产生时,系统首先会记录订单信息.同时也会发送消息到其他系统处理相关业务,最后才是订单的处理 ...

  7. 6.nuget安装C#Driver驱动ZooKeeperNet

    一: C# 的Drivers   1. nuget上下载 zookeeper.Net   IWatcher是什么?: client 连接到 server 后,会在server上面注册一个watcher ...

  8. Objective-C 学习笔记(二) 函数

    Objective-C 函数 定义一个方法 在Objective-C编程的方法定义的一般形式如下: - (return_type) method_name:( argumentType1 )argum ...

  9. Javascript设计模式理论与实战:桥接模式

    桥接模式将抽象部分与实现部分分离开来,使两者都可以独立的变化,并且可以一起和谐地工作.抽象部分和实现部分都可以独立的变化而不会互相影响,降低了代码的耦合性,提高了代码的扩展性. 基本理论 桥接模式定义 ...

  10. 更改kvm虚拟机磁盘大小

    kvm 虚拟机的磁盘大小可通过命令:qemu-img resize filename size 来改,要注意的是resize只支持raw格式的磁盘文件,如果想更改qcow2等格式的磁盘大小,需先用qe ...