分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

[JSOI2008]最大数

发布时间:2023-09-06 02:31责任编辑:蔡小小关键词:暂无标签

这道题是板子题,用来练习线段树。

 1 #include <bits/stdc++.h> 2 ?3 using namespace std; 4 ?5 #define re register 6 #define rep(i, a, b) for (re int i = a; i <= b; ++i) 7 #define repd(i, a, b) for (re int i = a; i >= b; --i) 8 #define maxx(a, b) a = max(a, b); 9 #define minn(a, b) a = min(a, b);10 #define LL long long11 #define inf (1 << 30)12 13 const int maxn = 2e5 + 5, N = 2e5;14 15 struct Seg_T {16 #define lson (o << 1)17 #define rson (o << 1 | 1)18 ????int v[maxn << 4];19 ????void pushup(int o) { v[o] = max(v[lson], v[rson]); }20 ????void add(int o, int l, int r, int x, int t) {21 ????????if (l == r) { v[o] = t; return; }22 ????????int mid = (l + r) >> 1;23 ????????if (x <= mid) add(lson, l, mid, x, t);24 ????????else add(rson, mid+1, r, x, t);25 ????????pushup(o);26 ????}27 ????int query(int o, int l, int r, int ql, int qr) {28 ????????if (ql <= l && r <= qr) return v[o];29 ????????int mid = (l + r) >> 1, ans = 0;30 ????????if (ql <= mid) ans = max(ans, query(lson, l, mid, ql, qr));31 ????????if (mid < qr) ans = max(ans, query(rson, mid+1, r, ql, qr));32 ????????return ans;33 ????}34 } S;35 36 int n, L = 0;37 LL D, t;38 39 int main() {40 ????scanf("%d %lld", &n, &D);41 42 ????rep(i, 1, n) {43 ????????char c[2]; LL x;44 ????????scanf("%s %lld", c, &x);45 ????????if (c[0] == ‘Q‘) printf("%lld\n", t = S.query(1, 1, N, L-x+1, L));46 ????????else {47 ????????????L++;48 ????????????S.add(1, 1, N, L, (t+x) % D);49 ????????}50 ????}51 52 ????return 0;53 }

[JSOI2008]最大数

原文地址:https://www.cnblogs.com/ac-evil/p/10325408.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved