http://acm.hdu.edu.cn/showproblem.php?pid=1541

题意:给你一堆点,每个点右一个level,为其右下方所有点的数量之和,求各个level包含的点数。

题解:由于输入是有序的,每读进一对x,y 只需要考虑之前读入的数据就行了(之后的必定在其右上方)。如何计算他的level?只需从其X坐标开始往右所有的X坐标上的点数求和即可。然后再让自己的X坐标点数++。这是单点更新,求前缀和的操作,可以用树状数组。

坑:题目条件有误。

  add函数里x<=maxn而不是n,具体原理应该是会处理到n外面吧

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<cstring>
  3. #include<cctype>
  4. #include<cstdlib>
  5. #include<iomanip>
  6. #include<cmath>
  7. #include<cstdio>
  8. #include<string>
  9. #include<climits>
  10. #include<stack>
  11. #include<ctime>
  12. #include<list>
  13. #include<set>
  14. #include<map>
  15. #include<queue>
  16. #include<vector>
  17. #include<sstream>
  18. #include<fstream>
  19. #include<iostream>
  20. #include<functional>
  21. #include<algorithm>
  22. #include<memory.h>
  23. //#define INF LONG_MAX
  24. #define eps 1e-6
  25. #define pi acos(-1.0)
  26. #define e exp(1.0)
  27. #define rep(i,t,n) for(int i =(t);i<=(n);++i)
  28. #define per(i,n,t) for(int i =(n);i>=(t);--i)
  29. #define mp make_pair
  30. #define pb push_back
  31. #define mmm(a,b) memset(a,b,sizeof(a))
  32. //std::ios::sync_with_stdio(false);
  33. using namespace std;
  34. typedef long long ll;
  35. typedef unsigned long long ull;
  36. void smain();
  37. #define ONLINE_JUDGE
  38. int main() {
  39. //ios::sync_with_stdio(false);
  40. #ifndef ONLINE_JUDGE
  41. freopen("C:\\Users\\SuuTT\\Desktop\\test\\in.txt", "r", stdin);
  42. freopen("C:\\Users\\SuuTT\\Desktop\\test\\out.txt", "w", stdout);
  43. //ifstream in;
  44. //string filename;
  45. //getline(cin, filename,'\n');
  46. //in.open(filename);
  47.  
  48. long _begin_time = clock();
  49. #endif
  50. smain();
  51. #ifndef ONLINE_JUDGE
  52. long _end_time = clock();
  53. printf("time = %ld ms.", _end_time - _begin_time);
  54. #endif
  55. return ;
  56. }
  57. int dir[][] = { ,,,,-,,,- };
  58. const int maxn = 4e5 + ;
  59. int n, m;
  60. ll a[maxn];
  61. int d[maxn];
  62. int level[maxn];
  63. int lowbit(int x) { return x & (-x); }
  64. void add(int x, int v) {//a[x]+=v;
  65. while (x <= maxn) {
  66. d[x] += v;
  67. x += lowbit(x);
  68. }
  69.  
  70. }
  71. int query(int x) {
  72. int res = ;
  73. while (x) {
  74. res += d[x];
  75. x -= lowbit(x);
  76. }
  77. return res;
  78. }
  79. struct node {
  80.  
  81. int x, y;
  82. node(int x = , int y = ) :x(x), y(y) {}
  83.  
  84. };
  85.  
  86. void Run() {
  87.  
  88. }
  89.  
  90. void smain() {
  91. while (cin >> n)
  92. {
  93. mmm(d, ); mmm(level, );
  94.  
  95. rep(i, , n) {
  96. int x, y;
  97. cin >> x >> y;
  98. x++;
  99. level[query(x)]++;
  100. //cout << query(x) << endl;
  101. add(x, );
  102.  
  103. }
  104. rep(i, , n - )cout << level[i] << endl;
  105. }
  106. }

【模板】HDU 1541 树状数组的更多相关文章

  1. HDU 1541 树状数组

    树状数组入门博客推荐 http://blog.csdn.net/qq_34374664/article/details/52787481 Stars Time Limit: 2000/1000 MS ...

  2. hdu 4638 树状数组 区间内连续区间的个数(尽可能长)

    Group Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  3. hdu 4777 树状数组+合数分解

    Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  4. HDU - 1166 树状数组模板(线段树也写了一遍)

    题意: 汉语题就不说题意了,用到单点修改和区间查询(树状数组和线段树都可以) 思路: 树状数组的单点查询,单点修改和区间查询. 树状数组是巧妙运用二进制的规律建树,建树就相当于单点修改.这里面用到一个 ...

  5. HDU 2852 (树状数组+无序第K小)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2852 题目大意:操作①:往盒子里放一个数.操作②:从盒子里扔掉一个数.操作③:查询盒子里大于a的第K小 ...

  6. HDU 4911 (树状数组+逆序数)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4911 题目大意:最多可以交换K次,就最小逆序对数 解题思路: 逆序数定理,当逆序对数大于0时,若ak ...

  7. hdu 5792(树状数组,容斥) World is Exploding

    hdu 5792 要找的无非就是一个上升的仅有两个的序列和一个下降的仅有两个的序列,按照容斥的思想,肯定就是所有的上升的乘以所有的下降的,然后再减去重复的情况. 先用树状数组求出lx[i](在第 i ...

  8. HDU 1934 树状数组 也可以用线段树

    http://acm.hdu.edu.cn/showproblem.php?pid=1394 或者是我自己挂的专题http://acm.hust.edu.cn/vjudge/contest/view. ...

  9. 2018 CCPC网络赛 1010 hdu 6447 ( 树状数组优化dp)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 思路:很容易推得dp转移公式:dp[i][j] = max(dp[i][j-1],dp[i-1][j ...

随机推荐

  1. Spark 底层网络模块

    文章正文 对于分布式系统来说,网络是最基本的一环,其设计的好坏直接影响到整个分布式系统的稳定性及可用性.为此,Spark专门独立出基础网络模块spark-network,为上层RPC.Shuffle数 ...

  2. 15款基于 jQuery模态对话框

    在数字世界的竞争已大大增加.这就是为什么要确保网络设计的各个方面都是一流的,这是很重要的.从布局到一些非常小的东西,比如对话框,每一件都需要设计得很好.对话框通常被忽视,但它们可能对访问者有很大的影响 ...

  3. 【iCore4 双核心板_ARM】例程八:定时器PWM实验——呼吸灯

    实验原理: STM32的定时器有PWM功能,iCore4的蓝色LED连接在定时器的输出接口上, 可以通过定时器的PWM输出控制LED的亮度,从而实验呼吸灯的功能. 核心代码: int main(voi ...

  4. 【emWin】例程十七:窗口对象——Button

    介绍: 按钮小工具通常用作触摸屏的主要用户界面元素,本例程介绍按钮小工具的创建及使用方法. 触摸校准(上电可选择是否进入校准界面) 自绘按钮(通过回调函数来自行绘制各种形状的按钮) 设置按钮字体 设置 ...

  5. Odoo小数精度及货币精度详解

    一.小数精度的设置 一般在设置-数据结构-精度设置中就可以对 小数类型的字段进行精度设置: 对于代码中定义为 digits=dp.get_precision('Product Price') 或 di ...

  6. .net core实现跨域

    什么是跨域在前面已经讲解过了,这里便不再讲解,直接上代码. 一.后台API接口 用.net core创建一个Web API项目负责给前端界面提供数据. 二.前端界面 建立两个MVC项目,模拟不同的ip ...

  7. OSI网络体系结构

    为把在一个网络结构下开发的系统与在另一个网络结构下开发的系统互连起来,以实现更高一级的应用,使异种机之间的通信成为可能,便于网络结构标准化,国际标准化组织(ISO)于1983年形成了开放系统互连基本参 ...

  8. [echarts] 横纵数据散点图

    需求:课程平均分(X)与课程通过率散点图 http://echarts.baidu.com/echarts2/doc/example/scatter1.html https://www.cnblogs ...

  9. 弹出框插件——dialog

    基于jquery和dot.js弹出框插件,兼容IE6+等其他浏览器. 思想:弹出框元素插入body节点中,并在页面垂直居中显示(fixed定位),触发确定和关闭事件绑定. 注意ie6包含两个问题:一. ...

  10. nginx-启动gzip、虚拟主机、请求转发、负载均衡

    一.启用gzip 1     gzip  on; 2     gzip_min_length 1k; 3     gzip_buffers 4 16k; 4     gzip_http_version ...