【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 看到这种矩阵的问题 以为是前缀和搞事情 结果呢 扫描线 ...
随机推荐
- K8s之实践Pod深入理解
K8s之实践Pod深入理解 1.同一pod下的nginx+php+mysql nginx+php+mysql.yaml文件 --- apiVersion: v1 kind: Secret meta ...
- 较详细的gdb入门教程
本文主要介绍gdb的基础使用.若需了解一些技巧,请访问此篇博客:点这里 本篇教程适用于Windows,macOS及Linux,但由于Windows的自带终端很难用,所以体验可能不太好.Windows ...
- 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)
再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Blueste ...
- c#集合随机数
List<int> list = new List<int>(10); Random r=new Random(); int num = 0; for (int i = 0; ...
- 微信告警如何配置?用Cloud Alert快速实现微信告警
在当下互联网蓬勃发展的时代里,微信已经成为了人们生活中不可分割的一部分.作为苦逼的运维人员,我们自然也得跟得上时代的步伐,将微信添加进告警的通知方式里.如果能够将告警消息第一时间发送到微信中,更清楚地 ...
- 对accuracy、precision、recall、F1-score、ROC-AUC、PRC-AUC的一些理解
最近做了一些分类模型,所以打算对分类模型常用的评价指标做一些记录,说一下自己的理解.使用何种评价指标,完全取决于应用场景及数据分析人员关注点,不同评价指标之间并没有优劣之分,只是各指标侧重反映的信息不 ...
- uniapp 证书 打包上线GooglePlay app自动升级
uniapp Android证书 打包上线GooglePlay app自动升级 1.Android证书申请 要安装jdk并配置环境变量. keytool -genkey -alias android ...
- VS2017新建MVC+ORM中的LinqDb访问数据库项目
1.前提概述 ORM对象关系映射(Object-Relational Mapping)是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言 ...
- mybatis insert转update,duplicate关键字的使用示例,及返回情况说明
主键存在时又insert转为update某个关键字段,示例如下,注意,如果这条数据曾经不存在,此时执行insert返回条目是1,如果已存在,执行update返回条目是2!!!<insert id ...
- Centos7下Jewel版本radosgw服务启动
前言 本篇介绍了centos7下jewel版本的radosgw配置,这里的配置是指将服务能够正常起来,不涉及到S3的配置,以及其他的更多的配置,radosgw后面的gw就是gateway的意思,也就是 ...