zoukankan      html  css  js  c++  java
  • 【HDOJ】2795 Billboard

    线段树。注意h范围(小于等于n)。

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 #define MAXN 200005
     5 #define lson l, mid, rt<<1
     6 #define rson mid+1, r, rt<<1|1
     7 #define mymax(x, y) (x>y) ? x:y
     8 
     9 int nums[MAXN<<2];
    10 int h, w;
    11 
    12 void PushUP(int rt) {
    13     nums[rt] = mymax(nums[rt<<1], nums[rt<<1|1]);
    14 }
    15 
    16 void build(int l, int r, int rt) {
    17     int mid;
    18     nums[rt] = w;
    19 
    20     if (l == r)
    21         return ;
    22 
    23     mid = (l+r)>>1;
    24     build(lson);
    25     build(rson);
    26 }
    27 
    28 int query(int wi, int l, int r, int rt) {
    29     int mid, ret;
    30 
    31     if (l == r) {
    32         nums[rt] -= wi;
    33         return l;
    34     }
    35     mid = (l+r)>>1;
    36 
    37     if (nums[rt<<1] >= wi)
    38         ret = query(wi, lson);
    39     else
    40         ret = query(wi, rson);
    41 
    42     PushUP(rt);
    43     return ret;
    44 }
    45 
    46 int main() {
    47     int n, wi;
    48 
    49     while (scanf("%d%d%d", &h, &w, &n) != EOF) {
    50         if (h > n)
    51             h = n;      // h < n
    52         build(1, h, 1);
    53         while (n--) {
    54             scanf("%d", &wi);
    55             if (nums[1] < wi)
    56                 printf("-1
    ");
    57             else
    58                 printf("%d
    ", query(wi, 1, h, 1));
    59         }
    60     }
    61 
    62     return 0;
    63 }
  • 相关阅读:
    Qt实现模糊搜索
    Qt解析多级xml文件
    insert into
    Git忽略规则(.gitignore配置)不生效原因和解决
    搭建vue开发环境
    表单
    事件处理
    列表渲染
    条件渲染
    class与style绑定
  • 原文地址:https://www.cnblogs.com/bombe1013/p/3764333.html
Copyright © 2011-2022 走看看