分享web开发知识

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

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

BZOJ1012: [JSOI2008]最大数maxnumber

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

给定n<=200000个操作:单点插入,查最后若干个数的Max,强制在线。

在线个鬼啊至少我空间还是可以先分配的,把序列倒过来,分配好空间,每个查询就是一个前缀Max了。

 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<stdlib.h> 5 //#include<queue> 6 //#include<math.h> 7 //#include<time.h> 8 //#include<iostream> 9 using namespace std;10 11 int n,mod;12 #define maxn 20001113 struct BIT14 {15 ????int a[maxn],n;16 ????void clear(int m) {n=m; for (int i=1;i<=n;i++) a[i]=-0x7fffffff;}17 ????void add(int x,int v) {for (;x<=n;x+=x&-x) a[x]=max(a[x],v);}18 ????int query(int x) {int ans=0; for (;x;x-=x&-x) ans=max(ans,a[x]); return ans;}19 }t;20 21 struct Point{int x; bool w;}a[maxn];22 int main()23 {24 ????scanf("%d%d",&n,&mod);25 ????char id[5];26 ????int tot=0;27 ????for (int i=1;i<=n;i++)28 ????{29 ????????scanf("%s%d",id,&a[i].x);30 ????????a[i].w=(id[0]==‘A‘);31 ????????tot+=(id[0]==‘A‘);32 ????}33 ????t.clear(tot);34 ????int last=0;35 ????for (int i=1;i<=n;i++)36 ????{37 ????????if (a[i].w) t.add(tot--,(a[i].x+0ll+last)%mod);38 ????????else printf("%d\n",(last=t.query(tot+a[i].x)));39 ????}40 ????return 0;41 }
View Code

BZOJ1012: [JSOI2008]最大数maxnumber

原文地址:http://www.cnblogs.com/Blue233333/p/8082652.html

知识推荐

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