摘要: 这题刚开始没看懂啥一个,琢磨了半天,看了看Discuss。其实就是求某个坐标点(x, y)的左下放还有几个点,很巧的是题目的数据都已经排好序了,所以根本不用考虑y的事,树状数组求和水过了。(注意,i = 0时死循环,要把数据都往后移一个!)#include <stdio.h>#define N 32010int c[N], ans[N];int lowbit(int i){ return i&(i^(i-1));}void add(int i, int val){ i++; while(i < N) { c[i] += val; i += lowbit(i); }}i 阅读全文
posted @ 2011-08-10 20:58 AC_Von 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 线段树“以点代段”的思想很巧妙,但有时候数据过大直接建线段树会MLE,就比如这道题,如果不进行优化的话肯定是要MLE的(1 <= li<= ri <= 10000000,这得多大的内存消耗啊)。所以,离散化这个概念被引入,离散化这个词最近经常听,但就是不知道具体如何实现,今天借这道题学习了一下,这里写点总结。 比如说这样一串数(3,10000),(9,1000000),(5,100000),(1,1000),(7,1000000);用这组数据直接更新线段树,很有可能会挂掉的(不信可以自己试试。。。)。但如果在不影响线段树更新状态的前提下,把这几个大数用相应的小数取代,再更新的 阅读全文
posted @ 2011-08-10 17:05 AC_Von 阅读(1036) 评论(0) 推荐(2) 编辑