0-based&1-based

0-based => 0 ~ n - 1 STL写法

1-based => 1 ~ n 普通数组写法

个人模板当中

中位数

这个随意

0based0-based:取$ [n / 2]$

1based1-based:取 [(n+1)/2][(n + 1)/ 2]

中位数常见于货仓选址问题

前缀和&差分

基本上都是1based1-based,不用考虑边界

图论

个人习惯:看题目意思,一般题目从0节点开始, 就0-based,从1节点开始,就1-based,只要修改idx就行

包括但不限于邻接表head节点,边edge;有向无环图的入度deg[],拓扑序列seq[]等。

struct Edge {
    int to;
    int w;
    int nxt;
};

Edge[M];
int head[N], idx = 1;  // head节点
int deg[N], seq[N];    // 拓扑排序:入度deg,拓扑序列seq

void add(int form, int to, int w) {
    edge[idx].to = to, edge[idx].w = w, edge[idx].nxt = head[from]; 
    head[from] = idx ++;
    deg[to] ++;
}

int main() {
    memset(head, -1, sizeof head);
    memset(deg, 0, sizeof deg);
    // ...
}

本博客所有文章均采用 CC BY-NC-SA 4.0 协议 ,禁止商用,转载请注明出处!