【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 看到这种矩阵的问题 以为是前缀和搞事情 结果呢 扫描线 ...
随机推荐
- 2020 年TI 杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置)
2020年TI杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置) 摘要:E题的竞赛内容主要是参赛者自己搭建一个晶体管放大器,能够产生不失真.顶部失真.底部失真.双向失真和交越失真五种波形,并分别 ...
- Spring Cloud Alibaba 基础
Spring Cloud Alibaba 基础 什么是Spring Cloud Alibaba 这里我们不讲解Spring Cloud 和 Spring Cloud Alibaba 的关系,大家自己查 ...
- C#4语法新特性
C#4,.NET Framework 4.0, Visual Studio 2010 C#4.0新引进的语法基于.Net Framework 4.0.主要引进的语法:动态类型,命名参数.可选参数,优 ...
- docker搭建redis集群
一.简介 docker作为一个容器技术,在搭建资源隔离性服务上具有很大的优势,在一台服务器上可以启动多个docker容器,感觉每个在容器里面部署的服务就像是部署在不同的服务器上.此次基于docker以 ...
- 深入web workers (上)
前段时间,为了优化某个有点复杂的功能,我采用了shared workers + indexDB,构建了一个高性能的多页面共享的服务.由于是第一次真正意义上的运用workers,比以前单纯的学习有更多体 ...
- mysql触发
create procedure agex(in addage1 int,in addage2 int)begindeclare curl_stu_id int; declare curl_stu_s ...
- 【转载】TCP/IP协议栈
TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输.TCP/IP 协议采用4层结构,分别是应用层.传输层.网络层和链路 ...
- Redis学习(一)——初识Redis
1.Redis是什么 1)REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. 2)Redis的特点 Red ...
- windows端口占用和进程定位
问题:Error was Port already in use: 40001 1. netstat -ano|findstr "40001" TCP 127.0.0.1:1404 ...
- 机器学习——dbscan密度聚类
完整版可关注公众号:大数据技术宅获取 DBSCAN(Density-Based Spatial Clustering of Applications with Noise,基于密度的有噪应用中的空间聚 ...