【GDKOI2014】JZOJ2020年8月13日提高组T4 内存分配
【GDKOI2014】JZOJ2020年8月13日提高组T4 内存分配
题目
Description

Input

Output
输出m行,每行一个整数,代表输入中每次程序变化后系统所需要的空闲内存单位数。
Sample Input
2 3
1 4
1 4
2 2 1
2 1 1
1 1 1
Sample Output
2
3
1
Data Constraint
对于30%的数据,有1<=n,m<=1000
对于100%的数据,有1<=n,m<=100000
Hint

题解
题意
有\(n\)个点
每个点有两个值\(a\),\(b\)
当节点\(i\)加上\(b_i\)时它就会消失,贡献\(a_i+b_i\)
每秒都会有个点的\(a_i\)和\(b_i\)改变
问最小初始费用
分析
发现有修改
易想到线段树
设\(sum[l][r]\)表示\(\sum_{i=l}^{r}a[i]\)
\(ans[l][r]\)表示\(l\)~\(r\)的最小答案
那么可以用线段树维护
顺便把\(ans\)和\(sum\)改为一维
动态开点
Code
#include<bits/stdc++.h>
#define inf 2147483647
#define rg register
using namespace std;
struct node
{
long long size,rs,ls,val;
}tree[4000005];
long long n,m,j,tot,a[1000005],b[1000005],ans[4000005];
void ins(long long now,long long l,long long r,long long p,long long q)
{
if (l==r)
{
tree[now].val+=p;
tree[now].size++;
ans[now]=q;
return;
}
long long mid=(l+r)>>1;
if (q<=mid)
{
if (tree[now].ls==0) tree[now].ls=++tot;
ins(tree[now].ls,l,mid,p,q);
}
else
{
if (tree[now].rs==0) tree[now].rs=++tot;
ins(tree[now].rs,mid+1,r,p,q);
}
tree[now].val=tree[tree[now].ls].val+tree[tree[now].rs].val;
ans[now]=max(ans[tree[now].ls],ans[tree[now].rs]-tree[tree[now].ls].val);
}
void del(long long now,long long l,long long r,long long p,long long q)
{
if (l==r)
{
tree[now].val-=p;
tree[now].size--;
if (tree[now].size==0) ans[now]=0;
return;
}
long long mid=(l+r)>>1;
if (q<=mid)
{
if (tree[now].ls==0) tree[now].ls=++tot;
del(tree[now].ls,l,mid,p,q);
}
else
{
if (tree[now].rs==0) tree[now].rs=++tot;
del(tree[now].rs,mid+1,r,p,q);
}
tree[now].val=tree[tree[now].ls].val+tree[tree[now].rs].val;
ans[now]=max(ans[tree[now].ls],ans[tree[now].rs]-tree[tree[now].ls].val);
}
int main()
{
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
scanf("%lld%lld",&n,&m);
tot=1;
for (rg long long i=1;i<=n;++i)
{
scanf("%lld%lld",&a[i],&b[i]);
ins(1,0,inf,a[i],b[i]);
}
for (rg long long i=1;i<=m;i++)
{
scanf("%lld",&j);
del(1,0,inf,a[j],b[j]);
scanf("%lld%lld",&a[j],&b[j]);
ins(1,0,inf,a[j],b[j]);
printf("%lld\n",ans[1]);
}
return 0;
}
【GDKOI2014】JZOJ2020年8月13日提高组T4 内存分配的更多相关文章
- 【GDKOI2014】JZOJ2020年8月13日提高组T3 壕壕的寒假作业
[GDKOI2014]JZOJ2020年8月13日提高组T3 壕壕的寒假作业 题目 Description Input Output 输出n行.第i行输出两个整数,分别表示第i份作业最早完成的时刻以及 ...
- 【GDKOI2014】JZOJ2020年8月13日提高组T2 石油储备计划
[GDKOI2014]JZOJ2020年8月13日提高组T2 石油储备计划 题目 Description Input Output 对于每组数据,输出一个整数,表示达到"平衡"状态 ...
- 【GDKOI2014】JZOJ2020年8月13日提高组T1 阶乘
[GDKOI2014]JZOJ2020年8月13日提高组T1 阶乘 题目 Description Input 第一行有一个正整数T,表示测试数据的组数. 接下来的T行,每行输入两个十进制整数n和bas ...
- JZOJ2020年8月13日提高组反思
JZOJ2020年8月13日提高组反思 T1 打了3h+,然后自己的小数据都没过 果断选择交对拍的暴力 下次还是注意时间吧 T2 一下三题都没时间打了 看了题目觉得特别烦人(有式子) 再看发现式子类似 ...
- JZOJ2020年8月11日提高组T4 景点中心
JZOJ2020年8月11日提高组T4 景点中心 题目 Description 话说宁波市的中小学生在镇海中学参加计算机程序设计比赛,比赛之余,他们在镇海中学的各个景点参观.镇海中学共有n个景点,每个 ...
- JZOJ2020年8月11日提高组T3 页
JZOJ2020年8月11日提高组T3 页 题目 Description 战神阿瑞斯听说2008年在中华大地上,将举行一届规模盛大的奥林匹克运动会,心中顿觉异常兴奋,他想让天马在广阔的天空上,举行一场 ...
- JZOJ2020年8月11日提高组T2 宝石
JZOJ2020年8月11日提高组T2 宝石 题目 Description 见上帝动了恻隐之心,天后也想显示一下慈悲之怀,随即从口袋中取出一块魔术方巾,让身边的美神维纳斯拿到后堂的屏风上去试试,屏风是 ...
- JZOJ2020年8月11日提高组T1 密码
JZOJ2020年8月11日提高组T1 密码 题目 Description 在浩浩茫茫的苍穹深处,住着上帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏.今天他们正在观赏大地 ...
- JZOJ2020年8月11日提高组反思
JZOJ2020年8月11日提高组反思 T1 看到题 啊这?! 我看错了吗??? 我理解错题了吗?? 好吧没有-- 高精度模板题,不用多说 T2 看到这种矩阵的问题 以为是前缀和搞事情 结果呢 扫描线 ...
随机推荐
- Python爬虫实战详解:爬取图片之家
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 如何使用python去实现一个爬虫? 模拟浏览器请求并获取网站数据在原始数据 ...
- Json Master masters JSON!
对于一个软件开发人员, JSON 是最熟悉的东西之一了, 每一个开发人员基本上每一天都会跟 JSON 打交道. 作为一个大前端开发人员, 当看到从服务器返回的 JSON 数据时, 尤其是大数据量或者复 ...
- 一步一步实现直播软件源码的RTMP推流流媒体服务
第一步:准备工具 OBS推流工具下载及配置可以参见:OBS推流工具 第二步:安装流媒体服务 Windows/Linux系统环境中搭建直播流媒体服务 极速安装,下载解压一键启动即可,支持Windows和 ...
- 【填坑往事】Android手机锁屏人脸解锁优化过程实录
背景 写这篇文章,主要是为了以后面试方便.因为我简历上写了,上一份工作的最大亮点是将人脸解锁的速度由1200ms优化到了600ms,所以这些内容已经回答无数遍了.但每次总觉得回答的不完整,或者说总感觉 ...
- 面经手册 · 第17篇《码农会锁,ReentrantLock之AQS原理分析和实践使用》
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 如果你相信你做什么都能成,你会自信的多! 千万不要总自我否定,尤其是职场的打工人.如 ...
- selenium-常用操作总结
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome ...
- char和signed char不同编译器下的使用反思
遇到一个问题,在使用一个算法的时候出现了仿真正常,但是在使用时出现函数的返回数据只有正值的异常. 在定位算法问题的时候,由算法函数最后的返回值由后向前推,最后发现问题在与char类型的值在不同编译器下 ...
- Docker - 解决 Error response from daemon: driver failed programming external connectivity on endpoint tomcat9999
问题背景 执行 docker start tomcat 报以下的错误 Error response from daemon: driver failed programming external co ...
- 使用Selenium爬取京东电商数据(以手机商品为例)
进入京东(https://www.jd.com)后,我如果搜索特定的手机产品,如oppo find x2,会先出现如下的商品列表页: 如果点击进入其中一个商品会进入到如下图所示的商品详情页,可以看到用 ...
- TCP Persist 坚持定时器
1.坚持定时器在接收方通告接收窗口为0,阻止发送端继续发送数据时设定. 由于连接接收端的发送窗口通告不可靠(只有数据才会确认),如果一个确认丢失了,双方就有可能因为等待对方而使连接终止: 接收放等待接 ...