zoukankan      html  css  js  c++  java
  • [JSOI2008]最大数maxnumber

    Description

    BZOJ1012

    Solution

    线段树模板题

    (话说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
    ", ans);
    		}
    	}	
    	return 0;
    }
    

    Note

    据说这个题还可以用ST表来解决。

  • 相关阅读:
    Add Two Numbers
    Reverse Linked List II
    Reverse Linked List
    Remove Duplicates from Sorted List
    Remove Duplicates from Sorted List II
    Partition List
    Intersection of Two Linked Lists
    4Sum
    3Sum
    2Sum
  • 原文地址:https://www.cnblogs.com/wyxwyx/p/bzoj1012.html
Copyright © 2011-2022 走看看