题意:往集合里面添加删除数,集合中的数是按从小到大排列的,询问下标模5等于3的数的和。

记得当时这题不会做,

现在想简单多了,只要维护五个值和左右子树的size大小就行了。

  1. #define maxn 100005
  2.  
  3. struct node
  4. {
  5. int l,r;
  6. int sz;
  7. i64 f[];
  8. int mid()
  9. {
  10. return (l + r ) / ;
  11. }
  12. };
  13. node tt[maxn * ];
  14. struct node1
  15. {
  16. int id ;
  17. i64 x;
  18. };
  19. node1 ml[maxn];
  20. void push_up(int root )
  21. {
  22. int sz ;
  23. sz = tt[root * ].sz;
  24. tt[root].sz = tt[root * ].sz + tt[root * + ].sz;
  25. for(int i = ; i < ; i ++ )
  26. tt[root].f[i] = tt[root * ].f[i] + tt[root * + ].f[(i + - sz % ) % ];
  27. return ;
  28. }
  29. void build(int root ,int l,int r )
  30. {
  31. tt[root].l = l ;
  32. tt[root].r = r ;
  33. tt[root].sz = ;
  34. for(int i = ; i < ; i ++ ) tt[root].f[i] = ;
  35. if(l == r ) return ;
  36. int mid = tt[root].mid();
  37. build(root * , l , mid );
  38. build(root * + , mid + , r);
  39. return ;
  40. }
  41. void update(int root ,int pos ,i64 vv)
  42. {
  43. if(tt[root].l == tt[root].r )
  44. {
  45. if(vv == )
  46. {
  47. tt[root].sz = ;
  48. for(int i = ; i < ; i ++ ) tt[root].f[i] = ;
  49. }
  50. else
  51. {
  52. tt[root].sz = ;
  53. for(int i = ; i < ;i ++ ) tt[root].f[i] = ;
  54. tt[root].f[] = vv;
  55. }
  56. return ;
  57. }
  58. int mid = tt[root].mid();
  59. if(pos <= mid )
  60. update(root * , pos , vv);
  61. if(pos > mid )
  62. update(root * + , pos , vv);
  63. push_up(root);
  64. }
  65. int num;
  66. i64 b[maxn];
  67. int pos[maxn];
  68. char str[];
  69. int main()
  70. {
  71. int x;
  72. int n ;
  73. while(scanf("%d",&n)!=EOF)
  74. {
  75. num = ;
  76. for(int i = ;i <= n ; i ++ )
  77. {
  78. scanf("%s",str);
  79. if(str[] == 'a')
  80. {
  81. ml[i].id = ;
  82. scanf("%I64d",&ml[i].x);
  83. b[num++] = ml[i].x;
  84. }
  85. else if(str[] == 'd')
  86. {
  87. ml[i].id = ;
  88. scanf("%I64d",&ml[i].x);
  89. b[num++] = ml[i].x;
  90. }
  91. else
  92. {
  93. ml[i].id = ;
  94. }
  95. }
  96. sort(b ,b + num);
  97. int pos;
  98. num = unique(b,b+num) - b;
  99. build(,,num);
  100. for(int i = ; i <= n ; i ++ )
  101. if(ml[i].id != )
  102. {
  103. pos = lower_bound(b , b + num , ml[i].x) - b + ;
  104. if(ml[i].id == )
  105. update(,pos,ml[i].x);
  106. else update(,pos,);
  107. }
  108. else
  109. {
  110. printf("%I64d\n",tt[].f[]);
  111. }
  112. }
  113. return ;
  114. }

hdu4288 Coder 2012成都网络赛 A题的更多相关文章

  1. HDU 4730 We Love MOE Girls (2013成都网络赛,签到水题)

    We Love MOE Girls Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. HDU 4734 F(x) (2013成都网络赛,数位DP)

    F(x) Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  3. HDU 4737 A Bit Fun (2013成都网络赛)

    A Bit Fun Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. HDU 4733 G(x) (2013成都网络赛,递推)

    G(x) Time Limit: 2000/500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  5. HDU 4731 Minimum palindrome (2013成都网络赛,找规律构造)

    Minimum palindrome Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  6. ACM-ICPC 2019南昌网络赛F题 Megumi With String

    ACM-ICPC 南昌网络赛F题 Megumi With String 题目描述 给一个长度为\(l\)的字符串\(S\),和关于\(x\)的\(k\)次多项式\(G[x]\).当一个字符串\(str ...

  7. ACM-ICPC 2019南昌网络赛I题 Yukino With Subinterval

    ACM-ICPC 2019南昌网络赛I题 Yukino With Subinterval 题目大意:给一个长度为n,值域为[1, n]的序列{a},要求支持m次操作: 单点修改 1 pos val 询 ...

  8. 2019ICPC南京网络赛A题 The beautiful values of the palace(三维偏序)

    2019ICPC南京网络赛A题 The beautiful values of the palace https://nanti.jisuanke.com/t/41298 Here is a squa ...

  9. HDU 4762 Cut the Cake (2013长春网络赛1004题,公式题)

    Cut the Cake Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

随机推荐

  1. dedecms 织梦显示时间格式

    field:pubdate function=GetDateMK(@me)/] 2009-11-10 [field:pubdate function=GetDateTimeMK(@me)/] 2009 ...

  2. OpenCV Haar AdaBoost源代码改进(比EMCV快6倍)

    这几天研究了OpenCV源代码 Haar AdaBoost算法,作了一下改进 1.去掉了全部动态分配内存的操作.对嵌入式系统有一定的速度提升 2.凝视覆盖了大量关键代码 3.降低了代码一半的体积,而且 ...

  3. 读取 raspberrypi 的cpu和gpu温度

    #!/usr/bin/env python # -*- coding: utf-8 -*- import requests import json import time import command ...

  4. Android学习路径(十)如何将Action Bar堆放在布局

    默认情况下,action bar出如今activity窗体的顶部,稍微降低了activity布局的总空间.假设你想隐藏或者显示action bar,在这堂用户体验的课程中,你能够通过调用hide()  ...

  5. Xamarin.Android 入门实例(3)之呼叫电话号码

    1.Main.axml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...

  6. hdu 2899 hdu 3400 三分/几何

    hdu2899 : 水提,直接三分,事实上求导后二分也能够. #include<iostream> #include<cstdio> using namespace std; ...

  7. hdu1506——Largest Rectangle in a Histogram

    Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  8. Android - match_parent 和 fill_parent差异

    Android - match_parent 和 fill_parent差异 本文地址: http://blog.csdn.net/caroline_wendy match_parent 和 fill ...

  9. MyBatis系列教程(六)-- 与Spring综合(Integrate with Spring)

    其它工具或技术需要使用: 项目管理工具 : Maven 前台WEB图库:JSP 其他框架:Spring, Spring MVC 数据库 : Derby Maven的Web项目 Maven Depend ...

  10. [LeetCode203]Remove Linked List Elements

    题目: Remove all elements from a linked list of integers that have value val. ExampleGiven: 1 --> 2 ...