【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

  1. #include<bits/stdc++.h>
  2. #define inf 2147483647
  3. #define rg register
  4. using namespace std;
  5. struct node
  6. {
  7. long long size,rs,ls,val;
  8. }tree[4000005];
  9. long long n,m,j,tot,a[1000005],b[1000005],ans[4000005];
  10. void ins(long long now,long long l,long long r,long long p,long long q)
  11. {
  12. if (l==r)
  13. {
  14. tree[now].val+=p;
  15. tree[now].size++;
  16. ans[now]=q;
  17. return;
  18. }
  19. long long mid=(l+r)>>1;
  20. if (q<=mid)
  21. {
  22. if (tree[now].ls==0) tree[now].ls=++tot;
  23. ins(tree[now].ls,l,mid,p,q);
  24. }
  25. else
  26. {
  27. if (tree[now].rs==0) tree[now].rs=++tot;
  28. ins(tree[now].rs,mid+1,r,p,q);
  29. }
  30. tree[now].val=tree[tree[now].ls].val+tree[tree[now].rs].val;
  31. ans[now]=max(ans[tree[now].ls],ans[tree[now].rs]-tree[tree[now].ls].val);
  32. }
  33. void del(long long now,long long l,long long r,long long p,long long q)
  34. {
  35. if (l==r)
  36. {
  37. tree[now].val-=p;
  38. tree[now].size--;
  39. if (tree[now].size==0) ans[now]=0;
  40. return;
  41. }
  42. long long mid=(l+r)>>1;
  43. if (q<=mid)
  44. {
  45. if (tree[now].ls==0) tree[now].ls=++tot;
  46. del(tree[now].ls,l,mid,p,q);
  47. }
  48. else
  49. {
  50. if (tree[now].rs==0) tree[now].rs=++tot;
  51. del(tree[now].rs,mid+1,r,p,q);
  52. }
  53. tree[now].val=tree[tree[now].ls].val+tree[tree[now].rs].val;
  54. ans[now]=max(ans[tree[now].ls],ans[tree[now].rs]-tree[tree[now].ls].val);
  55. }
  56. int main()
  57. {
  58. freopen("test.in","r",stdin);
  59. freopen("test.out","w",stdout);
  60. scanf("%lld%lld",&n,&m);
  61. tot=1;
  62. for (rg long long i=1;i<=n;++i)
  63. {
  64. scanf("%lld%lld",&a[i],&b[i]);
  65. ins(1,0,inf,a[i],b[i]);
  66. }
  67. for (rg long long i=1;i<=m;i++)
  68. {
  69. scanf("%lld",&j);
  70. del(1,0,inf,a[j],b[j]);
  71. scanf("%lld%lld",&a[j],&b[j]);
  72. ins(1,0,inf,a[j],b[j]);
  73. printf("%lld\n",ans[1]);
  74. }
  75. return 0;
  76. }

【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. K8s之实践Pod深入理解

      K8s之实践Pod深入理解 1.同一pod下的nginx+php+mysql nginx+php+mysql.yaml文件 --- apiVersion: v1 kind: Secret meta ...

  2. 较详细的gdb入门教程

    本文主要介绍gdb的基础使用.若需了解一些技巧,请访问此篇博客:点这里 本篇教程适用于Windows,macOS及Linux,但由于Windows的自带终端很难用,所以体验可能不太好.Windows ...

  3. 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)

    再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Blueste ...

  4. c#集合随机数

    List<int> list = new List<int>(10); Random r=new Random(); int num = 0; for (int i = 0; ...

  5. 微信告警如何配置?用Cloud Alert快速实现微信告警

    在当下互联网蓬勃发展的时代里,微信已经成为了人们生活中不可分割的一部分.作为苦逼的运维人员,我们自然也得跟得上时代的步伐,将微信添加进告警的通知方式里.如果能够将告警消息第一时间发送到微信中,更清楚地 ...

  6. 对accuracy、precision、recall、F1-score、ROC-AUC、PRC-AUC的一些理解

    最近做了一些分类模型,所以打算对分类模型常用的评价指标做一些记录,说一下自己的理解.使用何种评价指标,完全取决于应用场景及数据分析人员关注点,不同评价指标之间并没有优劣之分,只是各指标侧重反映的信息不 ...

  7. uniapp 证书 打包上线GooglePlay app自动升级

    uniapp Android证书 打包上线GooglePlay app自动升级 1.Android证书申请 要安装jdk并配置环境变量. keytool -genkey -alias android ...

  8. VS2017新建MVC+ORM中的LinqDb访问数据库项目

    1.前提概述 ORM对象关系映射(Object-Relational Mapping)是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言 ...

  9. mybatis insert转update,duplicate关键字的使用示例,及返回情况说明

    主键存在时又insert转为update某个关键字段,示例如下,注意,如果这条数据曾经不存在,此时执行insert返回条目是1,如果已存在,执行update返回条目是2!!!<insert id ...

  10. Centos7下Jewel版本radosgw服务启动

    前言 本篇介绍了centos7下jewel版本的radosgw配置,这里的配置是指将服务能够正常起来,不涉及到S3的配置,以及其他的更多的配置,radosgw后面的gw就是gateway的意思,也就是 ...