【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 内存分配的更多相关文章

  1. 【GDKOI2014】JZOJ2020年8月13日提高组T3 壕壕的寒假作业

    [GDKOI2014]JZOJ2020年8月13日提高组T3 壕壕的寒假作业 题目 Description Input Output 输出n行.第i行输出两个整数,分别表示第i份作业最早完成的时刻以及 ...

  2. 【GDKOI2014】JZOJ2020年8月13日提高组T2 石油储备计划

    [GDKOI2014]JZOJ2020年8月13日提高组T2 石油储备计划 题目 Description Input Output 对于每组数据,输出一个整数,表示达到"平衡"状态 ...

  3. 【GDKOI2014】JZOJ2020年8月13日提高组T1 阶乘

    [GDKOI2014]JZOJ2020年8月13日提高组T1 阶乘 题目 Description Input 第一行有一个正整数T,表示测试数据的组数. 接下来的T行,每行输入两个十进制整数n和bas ...

  4. JZOJ2020年8月13日提高组反思

    JZOJ2020年8月13日提高组反思 T1 打了3h+,然后自己的小数据都没过 果断选择交对拍的暴力 下次还是注意时间吧 T2 一下三题都没时间打了 看了题目觉得特别烦人(有式子) 再看发现式子类似 ...

  5. JZOJ2020年8月11日提高组T4 景点中心

    JZOJ2020年8月11日提高组T4 景点中心 题目 Description 话说宁波市的中小学生在镇海中学参加计算机程序设计比赛,比赛之余,他们在镇海中学的各个景点参观.镇海中学共有n个景点,每个 ...

  6. JZOJ2020年8月11日提高组T3 页

    JZOJ2020年8月11日提高组T3 页 题目 Description 战神阿瑞斯听说2008年在中华大地上,将举行一届规模盛大的奥林匹克运动会,心中顿觉异常兴奋,他想让天马在广阔的天空上,举行一场 ...

  7. JZOJ2020年8月11日提高组T2 宝石

    JZOJ2020年8月11日提高组T2 宝石 题目 Description 见上帝动了恻隐之心,天后也想显示一下慈悲之怀,随即从口袋中取出一块魔术方巾,让身边的美神维纳斯拿到后堂的屏风上去试试,屏风是 ...

  8. JZOJ2020年8月11日提高组T1 密码

    JZOJ2020年8月11日提高组T1 密码 题目 Description 在浩浩茫茫的苍穹深处,住着上帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏.今天他们正在观赏大地 ...

  9. JZOJ2020年8月11日提高组反思

    JZOJ2020年8月11日提高组反思 T1 看到题 啊这?! 我看错了吗??? 我理解错题了吗?? 好吧没有-- 高精度模板题,不用多说 T2 看到这种矩阵的问题 以为是前缀和搞事情 结果呢 扫描线 ...

随机推荐

  1. 2020 年TI 杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置)

    2020年TI杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置) 摘要:E题的竞赛内容主要是参赛者自己搭建一个晶体管放大器,能够产生不失真.顶部失真.底部失真.双向失真和交越失真五种波形,并分别 ...

  2. Spring Cloud Alibaba 基础

    Spring Cloud Alibaba 基础 什么是Spring Cloud Alibaba 这里我们不讲解Spring Cloud 和 Spring Cloud Alibaba 的关系,大家自己查 ...

  3. C#4语法新特性

    C#4,.NET Framework 4.0, Visual Studio 2010  C#4.0新引进的语法基于.Net Framework 4.0.主要引进的语法:动态类型,命名参数.可选参数,优 ...

  4. docker搭建redis集群

    一.简介 docker作为一个容器技术,在搭建资源隔离性服务上具有很大的优势,在一台服务器上可以启动多个docker容器,感觉每个在容器里面部署的服务就像是部署在不同的服务器上.此次基于docker以 ...

  5. 深入web workers (上)

    前段时间,为了优化某个有点复杂的功能,我采用了shared workers + indexDB,构建了一个高性能的多页面共享的服务.由于是第一次真正意义上的运用workers,比以前单纯的学习有更多体 ...

  6. mysql触发

    create procedure agex(in addage1 int,in addage2 int)begindeclare curl_stu_id int; declare curl_stu_s ...

  7. 【转载】TCP/IP协议栈

    TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输.TCP/IP 协议采用4层结构,分别是应用层.传输层.网络层和链路 ...

  8. Redis学习(一)——初识Redis

    1.Redis是什么 1)REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. 2)Redis的特点 Red ...

  9. windows端口占用和进程定位

    问题:Error was Port already in use: 40001 1. netstat -ano|findstr "40001" TCP 127.0.0.1:1404 ...

  10. 机器学习——dbscan密度聚类

    完整版可关注公众号:大数据技术宅获取 DBSCAN(Density-Based Spatial Clustering of Applications with Noise,基于密度的有噪应用中的空间聚 ...