K. King Kog's Reception

题意:有q个操作,第 i 次操作若为 + t d,表示在 t 这个时刻插入一个耗时为 d 的骑士,若 -  i 表示删除第 i 个操作,若 ? t 表示查询如果我要在 t 时刻进行进行活动,至少要排多久的队。

思路:设线段树sum和mx分别表示区间内耗时总长和该区间至少要到mx时刻才能处理完区间内所有骑士,那么两个区间合并时显然mx[ o ]=max(mx[ rs ],mx[ ls ]+sum[ rs ]),每次查询就是把 1 到 t 区间分为一些小区间不停的合并,最后得到的值 - t 就是答案。

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1e6+10,N=1e6;
typedef long long ll;
int p[maxn],v[maxn],q;
ll sum[maxn*4],mx[maxn*4],ans;
void build(int o,int l,int r)
{if(l==r){mx[o]=l;return;}int ls=o*2,rs=o*2+1,m=(l+r)/2;build(ls,l,m);build(rs,m+1,r);mx[o]=max(mx[rs],mx[ls]+sum[rs]);sum[o]=sum[ls]+sum[rs];
}
void up(int o,int l,int r,int k,int val)
{if(l==r){sum[o]+=val;mx[o]+=val;return;}int ls=o*2,rs=o*2+1,m=(l+r)/2;if(k<=m)up(ls,l,m,k,val);else up(rs,m+1,r,k,val);mx[o]=max(mx[rs],mx[ls]+sum[rs]);sum[o]=sum[ls]+sum[rs];
}
ll qu(int o,int l,int r,int k)
{if(r<=k){ans=max(mx[o],ans+sum[o]);return ans;}int ls=o*2,rs=o*2+1,m=(l+r)/2;qu(ls,l,m,k);if(k>m)qu(rs,m+1,r,k);return ans;
}
int main()
{char op;build(1,1,N);scanf("%d",&q);for(int i=1;i<=q;i++){scanf(" %c%d",&op,&p[i]);if(op=='+')scanf("%d",&v[i]),up(1,1,N,p[i],v[i]);else if(op=='-')up(1,1,N,p[p[i]],-v[p[i]]);elseans=0,printf("%I64d\n",qu(1,1,N,p[i])-p[i]);}
}

2018-2019 ICPC, NEERC, Northern Eurasia Finals K. King Kog's Reception 线段树相关推荐

  1. 2021-2022 ICPC, NERC, Northern Eurasia Onsite (Unrated, Online Mirror, ICPC Rules, Teams Preferred)

    2021-2022 ICPC, NERC, Northern Eurasia Onsite (Unrated, Online Mirror, ICPC Rules, Teams Preferred) ...

  2. 【九省联考2018】秘密袭击【树形dp】【生成函数】【线段树合并】【多项式插值】

    题意:nnn 个点的带点权的树,点权最大值为 www,求所有连通子图第 kkk 大权值之和模 641236412364123. n,w≤1666n,w\leq 1666n,w≤1666,时限 5s. ...

  3. SPOJ-COT-Count on a tree(树上路径第K小,可持久化线段树)

    题意: 求树上A,B两点路径上第K小的数 分析: 同样是可持久化线段树,只是这一次我们用它来维护树上的信息. 我们之前已经知道,可持久化线段树实际上是维护的一个前缀和,而前缀和不一定要出现在一个线性表 ...

  4. 【BZOJ4504】K个串 可持久化线段树+堆

    [BZOJ4504]K个串 Description 兔子们在玩k个串的游戏.首先,它们拿出了一个长度为n的数字序列,选出其中的一个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计 ...

  5. 2020-2021 ICPC, NERC, Northern Eurasia Onsite (Unrated, Online Mirror, ICPC Rules, Teams Preferred)

    D. Digits 题意 给定一个长度为n的数组a和一个k,求数组中最大的元素乘积的尾数为k (每个元素只能用一次),输出方案数 1<= ai <= 10001 <= n <= ...

  6. CodeForces ABBYY Cup 3.0 - Finals B Shave Beaver! (思维+线段树)

    题目链接 题意:给你n个数1~n的序列,随后又q次询问,每次询问有2种操作,操作1:查询从序列中取出数值为x,x+1,...,y-1,y的数的最少需要取多少次(且每取一次只能是一个递增的子序列)    ...

  7. 【*2000】【2018-2019 ICPC, NEERC, Southern Subregional Contest C 】Cloud Computing

    [链接] 我是链接,点我呀:) [题意] [题解] 我们可以很容易知道区间的每个位置有哪些安排可以用. 显然 我们优先用那些花费的钱比较少的租用cpu方案. 但一个方案可供租用的cpu有限. 我们可以 ...

  8. 2019 ICPC World Finals Problem J. Miniature Golf

    2019 ICPC World Finals Problem J. Miniature Golf Solution 设lll为l0l_0l0​时iii的总分为si,l0s_{i,l_0}si,l0​​ ...

  9. 2019 ICPC World Finals Problem B. Beautiful Bridges

    2019 ICPC World Finals Problem B. Beautiful Bridges Solution 太菜了,sbsbsb题调了一个下午. 首先有一个显然的O(n3)O(n^3)O ...

最新文章

  1. Convert PLY to VTK Using PCL 1.6.0 or PCL 1.8.0 使用PCL库将PLY格式转为VTK格式
  2. 10分钟就能学会的.NET Core配置
  3. 工作93:注意数据对应接口位置
  4. ssis高级转换任务—查找_SSIS中的模糊查找转换
  5. 计算机视觉(CV)中HOG算法的主要步骤
  6. Java定时任务原理
  7. 最大乘积java_《算法入门经典》-最大乘积(java实现)
  8. 14. CSS 列表
  9. Android——通讯录
  10. 张小龙《微信产品观》PPT,经典值得收藏
  11. 可执行bin文件的制作
  12. 三村合建水厂问题研究 (代码)
  13. 国际贸易术语解释通则(EXW 工厂交货…(指定地点))
  14. 安卓游戏平台怎样对接游戏?
  15. ps 仿章工具的使用
  16. 洛谷 P5740 【深基7.例9】最厉害的学生 题解
  17. 常用函数的拉氏变换表
  18. linux下ipython的安装
  19. java截取字符串中间的某个部分
  20. MIPI_TXRX_REXT是什么意思

热门文章

  1. fashion-mnist简介和使用及下载
  2. When I started loving myself 当我开始爱自己 ——查理·卓别林
  3. 个人技术总结——Unity中角色动画制作及动画切换逻辑的实现
  4. springboot 加载一个properties文件转换为对象、List和Map数据结构
  5. Biotin-PEG-NH2 生物素PEG氨基
  6. UHL IOL NVMe测试工具安装及使用的常见问题
  7. 用python暴力破解压缩包密码
  8. 关于微信小程序如何使用Vant组件
  9. 读书笔记2014第8本:《追寻生命的意义》
  10. 第九届蓝桥杯稍小分数c语言,【第九届蓝桥杯大赛征文】蓝桥梦