zoukankan      html  css  js  c++  java
  • 线段树入门

    http://ac.jobdu.com/problem.php?pid=1544
    #include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> const int Maxint = 0x7fffffff; const int Max = 200010; int node[Max]; int data[Max]; void createSegTree(int L, int R, int root) { if (L == R) { node[root] = data[L]; return ; } int mid = (L + R) / 2; createSegTree(L, mid, root * 2 ); createSegTree(mid + 1, R, root * 2 + 1); if (node[root] > node[root * 2]) node[root] = node[root * 2]; if (node[root] > node[root * 2 + 1]) node[root] = node[root * 2 + 1]; } int query(int qL, int qR, int L, int R, int root) { if (L > qR || R < qL) return Maxint; if (qL <= L && R <= qR) return node[root]; int mid = (L + R) / 2; int Lmin = query(qL, qR, L, mid, root * 2); int Rmin = query(qL, qR, mid + 1, R, root * 2 + 1); return Lmin < Rmin ? Lmin : Rmin; } void setNode(int n) { for (int i = 1; i <= n; ++i) node[i] = Maxint; } int main() { //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); int n, t, qL, qR; while(scanf("%d", &n) != EOF) { setNode(2 * n + 1); for (int i = 1; i <= n; ++i) scanf("%d", &data[i]); createSegTree(1, n, 1); //for (int i = 1; i <= 2 * n + 1; ++i) //printf("%d ", node[i]); printf(" "); scanf("%d", &t); while(t) { --t; scanf("%d %d", &qL, &qR); if (qL == qR) printf("%d ", data[qL]); else printf("%d ", query(qL, qR, 1, n, 1)); } } return 0; }
  • 相关阅读:
    iOS6后的内存警告处理
    key things of ARC
    敏捷软件开发Note
    ViewController的属性
    sizeToFit & sizeThatFits
    iOS静态库的制作与引用
    xcode添加build phase
    什么是HUD
    xcode中的预定义宏
    管理授权&管理决策&管理组织&管理目标
  • 原文地址:https://www.cnblogs.com/forgood/p/3355410.html
Copyright © 2011-2022 走看看