首页 > Web开发 > 详细

[BZOJ1012][JSOI2008]最大数maxnumber

时间:2018-07-30 19:22:58      阅读:187      评论:0      收藏:0      [点我收藏+]

线段树模板题

(话说vim的ggyG竟然不复制最后一个字符,送来了我bzoj的第一个ce...看来文末换行符还是要打的)

code:

#include <cstdio>
#include <algorithm>

typedef long long LL;
const int N = 800000 + 10;

LL a[N];

void add(int o, int l, int r, int q, LL v) {
    if (l == r) {
        a[o] = v;
        return;
    }
    int mid = (l+r) >> 1;
    if (q <= mid) add(o<<1, l, mid, q, v);
    else add(o<<1|1, mid+1, r, q, v);
    a[o] = std::max(a[o<<1], a[o<<1|1]);    
}

LL query(int o, int l, int r, int ql, int qr) {
    if (ql <= l && qr >= r) {
        return a[o];
    }
    int mid = (l+r) >> 1;
    LL ans = 0;
    if (ql <= mid) ans = std::max(ans, query(o<<1, l, mid, ql, qr));
    if (qr > mid) ans = std::max(ans, query(o<<1|1, mid+1, r, ql, qr));
    return ans; 
}

int main() {
    LL m, d;
    scanf("%lld%lld", &m, &d);
    LL ans = 0, x, n = 0;
    char op[3]; 
    for (int i = 1; i <= m; ++i) {
        scanf("%s%lld", op, &x);
        if (op[0] == ‘A‘) add(1, 1, m, ++n, (x+ans)%d);
        else {
            ans = query(1, 1, m, n-x+1, n);
            printf("%lld\n", ans);
        }
    }   
    return 0;
}

[BZOJ1012][JSOI2008]最大数maxnumber

原文:https://www.cnblogs.com/wyxwyx/p/bzoj1012.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!