BZOJ 3544 treap (set)
来源:互联网 发布:电路板仿真软件 编辑:程序博客网 时间:2024/05/17 13:09
我只是想找个treap的练习题……
每回找到lower_bound 就好啦
//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define int long longint n,m,a[200500],sum[200500],jy,ans,root,size;struct Treap{int ch[2],v,cnt,sz,rnd;}tr[300500];void Upd(int k){tr[k].sz=tr[tr[k].ch[0]].sz+tr[tr[k].ch[1]].sz+tr[k].cnt;}void rot(int &k,bool f){int t=tr[k].ch[f];tr[k].ch[f]=tr[t].ch[!f],tr[t].ch[!f]=k,Upd(k),Upd(t),k=t;}void insert(int &k,int num){ if(!k){k=++size,tr[k].cnt=tr[k].sz=1,tr[k].rnd=rand(),tr[k].v=num;return;} tr[k].sz++; if(tr[k].v==num){tr[k].cnt++;return;} bool f=num>tr[k].v; insert(tr[k].ch[f],num); if(tr[k].rnd>tr[tr[k].ch[f]].rnd)rot(k,f);}void find(int k,int num){ if(!k)return; if(tr[k].v<num)find(tr[k].ch[1],num); else if(tr[k].v>num)jy=tr[k].v,find(tr[k].ch[0],num); else find(tr[k].ch[0],num);}int bgn(int k){ if(tr[k].ch[0])return bgn(tr[k].ch[0]); else return tr[k].v;}signed main(){ insert(root,0); scanf("%lld%lld",&n,&m); for(int i=1;i<=n;i++)scanf("%lld",&a[i]),a[i]=(a[i]%m+m)%m,sum[i]=(sum[i-1]+a[i])%m; for(int i=1;i<=n;i++){ jy=-1,find(root,sum[i]); if(~jy)ans=max(ans,(sum[i]-jy+m)%m); else ans=max(ans,sum[i]-bgn(root)); insert(root,sum[i]); } printf("%lld\n",ans);}
//By SiriusRen#include <set>#include <cstdio>#include <cstring>using namespace std;#define int long longint n,m,a[200500],sum[200500],ans,jy;set<int>s;signed main(){ s.insert(0); scanf("%lld%lld",&n,&m); for(int i=1;i<=n;i++)scanf("%lld",&a[i]),a[i]=(a[i]%m+m)%m,sum[i]=(sum[i-1]+a[i])%m; for(int i=1;i<=n;i++){ if(s.lower_bound(sum[i])!=s.end())ans=max(ans,(sum[i]-*s.lower_bound(sum[i])+m)%m); else ans=max(ans,sum[i]-*s.begin()); s.insert(sum[i]); } printf("%lld\n",ans);}
0 0
- BZOJ 3544 treap (set)
- bzoj 3224(splay/treap)
- bzoj 3544: [ONTAK2010]Creative Accounting treap
- BZOJ 1588 营业额统计(TREAP)
- bzoj 3224(非旋转treap)
- bzoj 3223(非旋转treap/splay)
- BZOJ 1208 浅谈treap+treap全操作模板(BZOJ 3224)
- BZOJ 2827 千山鸟飞绝 Treap
- bzoj 3224(treap)
- bzoj 1691(treap)
- bzoj 2827 千山鸟飞绝(treap)
- BZOJ 1503 treap
- BZOJ 1503 treap
- BZOJ 3224 TREAP
- bzoj 3224 treap模板
- bzoj 1112 treap
- BZOJ - 2141 排队(树状数组套treap||分块)
- BZOJ 2141排队(树状数组套Treap)
- ionic 插件安装一个错误的处理
- MPAndroidChart使用(BarChart为例)
- [经验] -- PHP团队开发中遇到的那些坑,看我是如何解决的?
- compileSdkVersion, minSdkVersion 和 targetSdkVersion详解
- 排序算法集合(二)归并排序精讲
- BZOJ 3544 treap (set)
- RabbitMQ从入门到精通----基本概念
- 【Dia】如何解决dia无法输入中文
- bootstrap分页插件jqPaginator.js
- Android上玩玩Hook:Cydia Substrate实战
- Sikuli使用说明(包含完整安装过程)
- UISwitch - 开关按钮 的使用详解
- easyui toolbar 动态显示与隐藏
- webview加载网页图片不能充满屏的问题