题意:
太长了不好概括自己看吧。
解析:
显然这有查找前驱后继的操作。
直接上treap就行,复杂度也放的很宽
但是我们要记录treap里当前存的是宠物还是领养人即可。
讨论一下就是sb题了。
代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 80010
#define mod 1000000
#define INF 0x7fffffff
using namespace std;
int n,size;
int ans;
int root;
struct node
{int l,r,val,siz,rnd;
}tr[N];
void pushup(int rt)
{tr[rt].siz=tr[tr[rt].l].siz+tr[tr[rt].r].siz+1;
}
void lturn(int &rt)
{int t=tr[rt].r;tr[rt].r=tr[t].l;tr[t].l=rt;tr[t].siz=tr[rt].siz;pushup(rt);rt=t;
}
void rturn(int &rt)
{int t=tr[rt].l;tr[rt].l=tr[t].r;tr[t].r=rt;tr[t].siz=tr[rt].siz;pushup(rt);rt=t;
}
void insert(int &rt,int v)
{if(!rt){rt=++size;tr[rt].l=tr[rt].r=0;tr[rt].siz=1,tr[rt].rnd=rand();tr[rt].val=v;return; }tr[rt].siz++;if(v<=tr[rt].val){insert(tr[rt].l,v);if(tr[tr[rt].l].rnd<tr[rt].rnd)rturn(rt);}else{insert(tr[rt].r,v);if(tr[tr[rt].r].rnd<tr[rt].rnd)lturn(rt);}
}
void del(int &rt,int v)
{tr[rt].siz--;if(tr[rt].val==v){if(tr[rt].l==0||tr[rt].r==0){rt=tr[rt].l+tr[rt].r;return;}if(tr[tr[rt].l].rnd<tr[tr[rt].r].rnd)rturn(rt),del(rt,v);else lturn(rt),del(rt,v);}else if(v<tr[rt].val)del(tr[rt].l,v);else del(tr[rt].r,v);
}
int ask_pre(int rt,int v)
{if(!rt)return 0;if(v<=tr[rt].val)return ask_pre(tr[rt].l,v);else{int ret=ask_pre(tr[rt].r,v);return max(tr[rt].val,ret);}
}
int ask_sub(int rt,int v)
{if(!rt)return INF;if(v>=tr[rt].val)return ask_sub(tr[rt].r,v);else{int ret=ask_sub(tr[rt].l,v);return min(tr[rt].val,ret);}
}
int main()
{scanf("%d",&n);int cnt=0;for(int i=1;i<=n;i++){int x,y;scanf("%d%d",&x,&y);if(!cnt){if(x)cnt--,insert(root,y);else cnt++,insert(root,y);}else if(cnt>0){if(x){cnt--;int tmp1=ask_pre(root,y),tmp2=ask_sub(root,y);if(!tmp1){ans=(ans+abs(tmp2-y))%mod,del(root,tmp2);continue;}if(tmp2==INF){ans=(ans+abs(tmp1-y))%mod,del(root,tmp1);continue;}if(y-tmp1<=tmp2-y){ans=(ans+abs(y-tmp1))%mod;del(root,tmp1);}else{ans=(ans+abs(tmp2-y))%mod;del(root,tmp2);}}else cnt++,insert(root,y);}else{if(x)cnt--,insert(root,y);else{cnt++;int tmp1=ask_pre(root,y),tmp2=ask_sub(root,y);if(!tmp1){ans=(ans+abs(tmp2-y))%mod,del(root,tmp2);continue;}if(tmp2==INF){ans=(ans+abs(tmp1-y))%mod,del(root,tmp1);continue;}if(y-tmp1<=tmp2-y){ans=(ans+abs(y-tmp1))%mod;del(root,tmp1);}else{ans=(ans+abs(tmp2-y))%mod;del(root,tmp2);}   }}}printf("%d\n",ans);
}

BZOJ 1208 [HNOI2004]宠物收养所 treap相关推荐

  1. BZOJ 1208: [HNOI2004]宠物收养所 (Treap)

    BZOJ 1208: [HNOI2004]宠物收养所 题目概述: 有一家宠物收养所,提供两种服务:收养主人遗弃的宠物和让新主人领养宠物. 宠物收养所中总是会有两种情况发生:遗弃宠物过多和领养宠物人过多 ...

  2. BZOJ 1208: [HNOI2004]宠物收养所

    1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 7684  Solved: 3042 [Submit][S ...

  3. 1208: [HNOI2004]宠物收养所

    1208: [HNOI2004]宠物收养所 1.用Treap树写: 只需要三个操作,插入,删除,查找(同时找出其前继后继): View Code /************************** ...

  4. BZOJ1208[HNOI2004]宠物收养场——treap

    凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领 ...

  5. cogs62 [HNOI2004] 宠物收养所

    cogs62 [HNOI2004] 宠物收养所 啦啦啦啦 不维护区间的平衡树题都是树状数组+二分练手题! 不会的参考我的普通平衡树的多种神奇解法之BIT+二分答案 // It is made by X ...

  6. 洛谷P2286 [HNOI2004]宠物收养所 [STL,平衡树]

    题目传送门 宠物收养所 题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的 ...

  7. bzoj1208: [HNOI2004]宠物收养所

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 6182  Solved: 2396 [Submit][Status][Discuss] Descri ...

  8. B1208 [HNOI2004]宠物收养所 平衡树||set (滑稽)

    这个题是一道splay裸题,但是我不太会写,所以用set直接水过去!!!哈哈哈哈,美滋滋. set总结: set是一个集合,然后里面没用重复的元素.里面有一些函数: begin()     ,返回se ...

  9. 洛谷P2286 [HNOI2004]宠物收养场

    题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领 ...

最新文章

  1. 关于学习Python的一点学习总结(39->导入模块)
  2. C#综合揭秘——细说多线程(上)
  3. mvc:default-servlet-handler /说明
  4. idea配置连接oracle数据库的pom文件中添加什么?
  5. Pytorch数据读取(Dataset, DataLoader, DataLoaderIter)
  6. python进阶-Python 进阶用法 (持续更新)
  7. Nuclide 早起用户体感
  8. android 代码设置textview draw,Android 自定义气泡TextView
  9. multiprocessing.manager管理的对象需要加锁吗_【极客思考】设计模式:你确定你真的理解了单例模式吗?...
  10. Android学习—7种形式的Android Dialog使用举例
  11. 温习下 function pointer.
  12. 汇编工具MASM包下载
  13. okcc呼叫中心外呼系统小白的使用教程
  14. Frp配置——stcp及p2p模式
  15. 解决MainActivity.onCreate(Unknown Source)的混淆错误
  16. 子库存-OU-库存组织-关系
  17. iOS开发实用技术之MapKit框架的使用
  18. 在clubof.net上建立了个人主页
  19. 最新小漫画Android下载,迷妹漫画安卓app2021最新版
  20. 网易考拉海购:电商高并发架构设计的铁律

热门文章

  1. 聊聊rel=external nofollow和rel=noopener noreferrer
  2. 超大数据10进制转2进制详解(可推广到其他进制)/ Codeup 100000579 问题 C: 进制转换
  3. 【校招VIP】出品:在线实习“职查查”每期测试用例设计
  4. vs qt中增加png图标
  5. 如何向Salesforce Support提Case
  6. Hyperledger/cello实际测试——SDK
  7. react手脚架安装
  8. Arduino制作俄罗斯方块小游戏(三)程序源码
  9. 软件测试类工具大全2009版
  10. 贝壳 OLAP 平台架构及演进