2018-2019 ICPC, NEERC, Northern Eurasia Finals K. King Kog's Reception 线段树
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 线段树相关推荐
- 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) ...
- 【九省联考2018】秘密袭击【树形dp】【生成函数】【线段树合并】【多项式插值】
题意:nnn 个点的带点权的树,点权最大值为 www,求所有连通子图第 kkk 大权值之和模 641236412364123. n,w≤1666n,w\leq 1666n,w≤1666,时限 5s. ...
- SPOJ-COT-Count on a tree(树上路径第K小,可持久化线段树)
题意: 求树上A,B两点路径上第K小的数 分析: 同样是可持久化线段树,只是这一次我们用它来维护树上的信息. 我们之前已经知道,可持久化线段树实际上是维护的一个前缀和,而前缀和不一定要出现在一个线性表 ...
- 【BZOJ4504】K个串 可持久化线段树+堆
[BZOJ4504]K个串 Description 兔子们在玩k个串的游戏.首先,它们拿出了一个长度为n的数字序列,选出其中的一个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计 ...
- 2020-2021 ICPC, NERC, Northern Eurasia Onsite (Unrated, Online Mirror, ICPC Rules, Teams Preferred)
D. Digits 题意 给定一个长度为n的数组a和一个k,求数组中最大的元素乘积的尾数为k (每个元素只能用一次),输出方案数 1<= ai <= 10001 <= n <= ...
- CodeForces ABBYY Cup 3.0 - Finals B Shave Beaver! (思维+线段树)
题目链接 题意:给你n个数1~n的序列,随后又q次询问,每次询问有2种操作,操作1:查询从序列中取出数值为x,x+1,...,y-1,y的数的最少需要取多少次(且每取一次只能是一个递增的子序列) ...
- 【*2000】【2018-2019 ICPC, NEERC, Southern Subregional Contest C 】Cloud Computing
[链接] 我是链接,点我呀:) [题意] [题解] 我们可以很容易知道区间的每个位置有哪些安排可以用. 显然 我们优先用那些花费的钱比较少的租用cpu方案. 但一个方案可供租用的cpu有限. 我们可以 ...
- 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 ...
- 2019 ICPC World Finals Problem B. Beautiful Bridges
2019 ICPC World Finals Problem B. Beautiful Bridges Solution 太菜了,sbsbsb题调了一个下午. 首先有一个显然的O(n3)O(n^3)O ...
最新文章
- Convert PLY to VTK Using PCL 1.6.0 or PCL 1.8.0 使用PCL库将PLY格式转为VTK格式
- 10分钟就能学会的.NET Core配置
- 工作93:注意数据对应接口位置
- ssis高级转换任务—查找_SSIS中的模糊查找转换
- 计算机视觉(CV)中HOG算法的主要步骤
- Java定时任务原理
- 最大乘积java_《算法入门经典》-最大乘积(java实现)
- 14. CSS 列表
- Android——通讯录
- 张小龙《微信产品观》PPT,经典值得收藏
- 可执行bin文件的制作
- 三村合建水厂问题研究 (代码)
- 国际贸易术语解释通则(EXW 工厂交货…(指定地点))
- 安卓游戏平台怎样对接游戏?
- ps 仿章工具的使用
- 洛谷 P5740 【深基7.例9】最厉害的学生 题解
- 常用函数的拉氏变换表
- linux下ipython的安装
- java截取字符串中间的某个部分
- MIPI_TXRX_REXT是什么意思