平衡树题,求每个点的前驱,照例可以用set水过。。。(平衡树还是不会写)

又新学了一个用法:

set <int> ::iterator s1;

这样s1就可以直接附为set中的地址了。但是调用值的时候要加一个*。

题干:

  1. Description
  2.  
  3. 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了一种最小波动值来衡量这种情况: 该天的最小波动值 当最小波动值越大时,就说明营业情况越不稳定。 而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。你的任务就是编写一个程序帮助Tiger来计算这一个值。 第一天的最小波动值为第一天的营业额。 输入输出要求
  4. Input
  5. 第一行为正整数 ,表示该公司从成立一直到现在的天数,接下来的n行每行有一个整数(有可能有负数) ,表示第i
  6. 天公司的营业额。
  7. 天数n<=,
  8. 每天的营业额ai <= ,,。
  9. 最后结果T<=^
  10.  
  11. Output
  12.  
  13. 输出文件仅有一个正整数,即Sigma(每天最小的波动值) 。结果小于2^
  14. Sample Input
  15.  
  16. Simple Output
  17.  
  18. HINT
  19. 结果说明:+|-|+|-|+|-|+|-|+|-|=+++++=
  20. 该题数据bug已修复.----2016.5.

代码:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<ctime>
  5. #include<queue>
  6. #include<set>
  7. #include<algorithm>
  8. #include<cstring>
  9. using namespace std;
  10. #define duke(i,a,n) for(int i = a;i <= n;i++)
  11. #define lv(i,a,n) for(int i = a;i >= n;i--)
  12. #define clean(a) memset(a,0,sizeof(a))
  13. const int INF = << ;
  14. typedef long long ll;
  15. typedef double db;
  16. template <class T>
  17. void read(T &x)
  18. {
  19. char c;
  20. bool op = ;
  21. while(c = getchar(), c < '' || c > '')
  22. if(c == '-') op = ;
  23. x = c - '';
  24. while(c = getchar(), c >= '' && c <= '')
  25. x = x * + c - '';
  26. if(op) x = -x;
  27. }
  28. template <class T>
  29. void write(T x)
  30. {
  31. if(x < ) putchar('-'), x = -x;
  32. if(x >= ) write(x / );
  33. putchar('' + x % );
  34. }
  35. set <ll> s;
  36. set <ll> ::iterator s1;
  37. int n,p;
  38. ll ans = ;
  39. int main()
  40. {
  41. read(n);
  42. if(n == )
  43. {
  44. printf("0\n");
  45. return ;
  46. }
  47. read(p);
  48. s.insert(p);
  49. ans = p;
  50. duke(i,,n)
  51. {
  52. read(p);
  53. s1 = s.lower_bound(p);
  54. ll minn = INF;
  55. if(s1 != s.end())
  56. {
  57. minn = min(minn,abs(*s1 - p));
  58. // cout<<t<<endl;
  59. }
  60. if(s1 != s.begin())
  61. {
  62. minn = min(minn,abs(*--s1 - p));
  63. // cout<<t<<endl;
  64. }
  65. ans += minn;
  66. s.insert(p);
  67. }
  68. write(ans);
  69. return ;
  70. }
  71. /*
  72. 6
  73. 5
  74. 1
  75. 2
  76. 5
  77. 4
  78. 6
  79. */

B1588 [HNOI2002]营业额统计 set||平衡树的更多相关文章

  1. 1588. [HNOI2002]营业额统计【平衡树-splay 或 线段树】

    Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每 ...

  2. HNOI2002营业额统计(平衡树)

    标准的平衡树. 贴个splay吧 var v,l,r,fa:..] of longint; root,x,i,n,ans:longint; procedure zig(x:longint); var ...

  3. 数据结构:(平衡树,链表)BZOJ 1588[HNOI2002]营业额统计

    1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 12173  Solved: 4354[Submit][Sta ...

  4. 1588: [HNOI2002]营业额统计

    1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 9203  Solved: 3097[Submit][Stat ...

  5. 【链表】BZOJ1588: [HNOI2002]营业额统计

    1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 17555  Solved: 7179[Submit][Sta ...

  6. [HNOI2002]营业额统计_Treap

    [HNOI2002]营业额统计 题目大意:给你一串n数序列,对于每一个刚输入的数a,找到一个前面的数k,使得|a-k|最小. 注释:$n<=32767,ai<=10^6$. 想法:刚学Tr ...

  7. 2018.07.06 BZOJ 1588: HNOI2002营业额统计(非旋treap)

    1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MB Description 营业额统计 Tiger最近被公司升任为营业部经理,他上 ...

  8. cogs1533 [HNOI2002]营业额统计

    cogs1533 [HNOI2002]营业额统计 啦啦啦啦 不维护区间的平衡树题都是树状数组+二分练手题! 不会的参考我的普通平衡树的多种神奇解法之BIT+二分答案 和上一篇博文完全一样2333 另外 ...

  9. BZOJ1588: [HNOI2002]营业额统计[BST]

    1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 14151  Solved: 5366[Submit][Sta ...

随机推荐

  1. html5——文本阴影

    基本结构 text-shadow: 30px 23px 31px #;/* 文字阴影: 水平位移 垂直位移 模糊程度 阴影颜色*/ 凹凸文字 <!DOCTYPE html> <htm ...

  2. java攻城师之路--复习java web之servlet

    需要掌握的知识点:1.Servlet程序编写 ----- 生命周期2.ServletAPI Request Response 3.Cookie 和 Session Servlet 用来 动态web资源 ...

  3. C#使用Win32函数的一些类型转换

    C#在访问Win 32 Api时需要处理C 结构与C#结构的映射,这在MSDN以及许多Blog上都可以找到参考的资料.Win 32 中有一些定义复杂的Struct,这些结构体拥有长度固定的数组或者一些 ...

  4. iOS UIWebView 访问https绕过证书验证的方法

    @implementation NSURLRequest (NSURLRequestWithIgnoreSSL) + (BOOL)allowsAnyHTTPSCertificateForHost:(N ...

  5. 多目标跟踪笔记二:Efficient Algorithms for Finding the K Best Paths Through a Trellis

    Abstract 本文提出了一种新的方法来寻找不相交k最优路径.最坏情况下计算复杂度为N3log(N).该方法比WVD算法(https://www.cnblogs.com/walker-lin/p/1 ...

  6. enote笔记语言(4)

    what:我想知道某个“关键词(keyword)”(即,词语,可以是概念|专业术语|.......)的定义. why:我想知道事物发生的原因:我会不会犯“归因错误”?是“单因素”的还是“多因素”的原因 ...

  7. Coefficient Computation (大整数、Java解决)

    Coefficient Computation UVALive8265 题意:计算组合数C(n,k)的值并将值按给定的进制输出. 思路:Java大整数类硬上. PS:刚刚学完Java的大整数类,结果却 ...

  8. Python-基本语法元素

    #TempConvert.py TempStr = input("请输入带有符号的温度值: ") if TempStr[-1] in ['F', 'f']: C = (eval(T ...

  9. vue 组件通信传值

    父子组件通信: 子组件 <template> <div> <h3 @click="alerrt"> 我是子组件一</h3> < ...

  10. vim学习1-入门指令

    使用vim命令进入vim界面 vim后面加上你要打开的已存在的文件名或者不存在(则作为新建文件)的文件名. 打开Xfce终端,输入以下命令 $ vim practice_1.txt 直接使用vim也可 ...