摘要:
在抽取MinHeap的时候,涉及到重载,覆盖,虚函数等,有几点之前没注意到的问题在这里总结下:1. 覆盖(override)只要是函数同名就会被覆盖,子类指针若调用父类的同名不同参数的函数的话,会在编译时期报编译错误;2. 成员函数在编译时就确定该函数的所属类,同一个类的不同对象共享一份成员函数地址,根据指针的类型调用指定的成员函数,属于early bind;3. 虚函数采用late bind,就是在运行时才能确定具体调用的函数,根据this指向的内存空间类型,去对应的虚表中取对应的函数,通过同一个slot位置抽象;4. 成员函数的实现跟全局函数类似,找到该函数对应的逻辑代码段后,将this指 阅读全文
posted @ 2013-08-26 18:40
litstrong
阅读(161)
评论(0)
推荐(0)
摘要:
Hoax or what题意是询问一个动态序列的最小值和最大值。可以用multiset来实现。#include #include using namespace std;int main() { freopen("h.in", "r", stdin); freopen("h.ans", "w", stdout); int n; while (scanf("%d", &n) && n) { multiset bills; int sum = 0; for (int i = 阅读全文
posted @ 2013-08-26 17:21
litstrong
阅读(300)
评论(0)
推荐(0)
摘要:
Frequent values题意是不同颜色区间首尾相接,询问一个区间内同色区间的最长长度。网上流行的做法,包括翻出来之前POJ的代码也是RMQ做法,对于序列上的每个数,记录该数向左和向右延续的最远位置,那么对于一个查询Q(L, R),它的答案就分成了三种情况right(L) - L,R - left(R)以及Q(L+right(L),R-left(R))。这里给出一个线段树做法,在线段树的节点上维护3个量:l_value, r_value, value分别表示以左端点为起始点,以右端点为起始点以及该区间内的最大的连续长度,更新时通过两个子区间相接的地方是否相同分不同的情况进行讨论。#incl 阅读全文
posted @ 2013-08-26 11:16
litstrong
阅读(369)
评论(0)
推荐(0)

浙公网安备 33010602011771号