【权值分块】bzoj1208 [HNOI2004]宠物收养所
不多说。比pb_ds还是要快不少的。
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define N 80001
int sum,sz,num[N],l[],r[],a[N],op[N],en,ma[N],ans,n;
inline void R(int &x){
char c=;int f=;
for(;c<''||c>'';c=getchar())if(c=='-')f=-;
for(x=;c>=''&&c<='';c=getchar())(x*=)+=(c-'');
x*=f;
}
void makeblock()
{
sz=sqrt(en); if(!sz) sz=;
for(sum=;sum*sz<en;sum++)
{
l[sum]=r[sum-]+;
r[sum]=sum*sz;
for(int i=l[sum];i<=r[sum];i++) num[i]=sum;
}
l[sum]=r[sum-]+;
r[sum]=en;
for(int i=l[sum];i<=r[sum];i++) num[i]=sum;
}
struct Val_Blocks
{
int sumv[],Size;
bool b[N];
inline void Insert(const int &x){b[x]=; sumv[num[x]]++; Size++;}
inline void Delete(const int &x){b[x]=; sumv[num[x]]--; Size--;}
inline int Next(const int &x)
{
if(b[x]) return x;
for(int i=x+;i<=r[num[x]];i++) if(b[i]) return i;
for(int i=num[x]+;i<=sum;i++) if(sumv[i])
for(int j=l[i];;j++)
if(b[j]) return j;
return -;
}
inline int Pre(const int &x)
{
if(b[x]) return x;
for(int i=x-;i>=l[num[x]];i--) if(b[i]) return i;
for(int i=num[x]-;i>=;i--) if(sumv[i])
for(int j=r[i];;j--)
if(b[j]) return j;
return -;
}
}T[];
struct Point{int v,p;}t[N];
bool operator < (const Point &a,const Point &b){return a.v<b.v;}
int main()
{
R(n); for(int i=;i<=n;i++)
{
R(op[i]); R(t[i].v);
t[i].p=i;
} sort(t+,t+n+);
ma[a[t[].p]=++en]=t[].v;
for(int i=;i<=n;i++)
{
if(t[i].v!=t[i-].v) en++;
ma[a[t[i].p]=en]=t[i].v;
} makeblock();
for(int i=;i<=n;i++)
{
if(!T[op[i]^].Size) T[op[i]].Insert(a[i]);
else
{
int Up=T[op[i]^].Next(a[i]),Down=T[op[i]^].Pre(a[i]);
if(Up==-||(Down!=-&&ma[a[i]]-ma[Down]<=ma[Up]-ma[a[i]]))
{
ans=(ans+ma[a[i]]-ma[Down])%;
T[op[i]^].Delete(Down);
}
else
{
ans=(ans+ma[Up]-ma[a[i]])%;
T[op[i]^].Delete(Up);
}
}
} printf("%d\n",ans);
return ;
}
【权值分块】bzoj1208 [HNOI2004]宠物收养所的更多相关文章
- BZOJ1208 HNOI2004 宠物收养所 【非旋转Treap】
BZOJ1208 HNOI2004 宠物收养所 Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的 ...
- bzoj1208 [HNOI2004]宠物收养所(STL,Treap)
1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5956 Solved: 2317[Submit][Sta ...
- 2018.07.06 BZOJ1208: HNOI2004宠物收养所(非旋treap)
1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec Memory Limit: 162 MB Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收 ...
- Bzoj1208 [HNOI2004]宠物收养所
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 7457 Solved: 2960 Description 最近,阿Q开了一间宠物收养所.收养所提供两 ...
- BZOJ1208[HNOI2004]宠物收养场——treap
凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领 ...
- [bzoj1208][HNOI2004]宠物收养所——splay
题目大意 Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发 ...
- [bzoj1208][HNOI2004][宠物收养所] (平衡树)
Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特 ...
- BZOJ1208 [HNOI2004]宠物收养所 splay
原文链接http://www.cnblogs.com/zhouzhendong/p/8085803.html 题目传送门 - BZOJ1208 题意概括 有两种数,依次加入. 规则为下: 如果当前剩余 ...
- 【set】【Splay】【pb_ds】bzoj1208 [HNOI2004]宠物收养所
每次来的如果是人,且宠物数不为零,就从宠物中选出一个与其差距最小的,累加答案:若为零,就把他放入另一个集合里. 如果是宠物,则同上. 各种平衡树都可过,我蛋疼地用了pb_ds. Code: #incl ...
随机推荐
- Educational Codeforces Round 56 (Rated for Div. 2) ABCD
题目链接:https://codeforces.com/contest/1093 A. Dice Rolling 题意: 有一个号数为2-7的骰子,现在有一个人他想扔到几就能扔到几,现在问需要扔多少次 ...
- System l类arraycopy的用法
package org.springframework; /** * @author 秦林森 */ public class Test { public static void main(String ...
- bzoj 2426 【HAOI2010】工程选址 贪心
[HAOI2010]工厂选址 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 447 Solved: 308[Submit][Status][Disc ...
- vue2学习篇一 $mount()手动挂载
$mount()手动挂载 //当Vue实例没有el属性时,则该实例尚没有挂载到某个dom中: //假如需要延迟挂载,可以在之后手动调用vm.$mount()方法来挂载.例如: new Vue({ // ...
- idea讲web项目部署到tomcat,热部署
idea是自动保存文件的,不需要ctrl+s手动保存. idea使用不习惯,修改了jsp文件后,刷新浏览器并没有立刻显示出来,而是要重新编译一下代码,重新部署才会出现. 在idea tomcat 中s ...
- bzoj 1576: [Usaco2009 Jan]安全路经Travel——并查集+dijkstra
Description Input * 第一行: 两个空格分开的数, N和M * 第2..M+1行: 三个空格分开的数a_i, b_i,和t_i Output * 第1..N-1行: 第i行包含一个数 ...
- 51nod K 汽油补给 大根堆+小根堆....
题目传送门 用优先队列瞎搞... 想着在每个地方 先算上一个点到这一个点要花费多少钱 这个用小根堆算就好 然后在这个地方加油 把油钱比自己多的替代掉 这个用大根堆维护一下 然后两个堆之间信息要保持互通 ...
- [BZOJ1025] [SCOI2009]游戏 解题报告
Description windy学会了一种游戏.对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应.最开始windy把数字按顺序1,2,3,……,N写一排在纸上.然后再在这一排下面写上它们对 ...
- NGINX: 反向代理 websocket
参考: [ Using multiple nodes ] [ Nginx 官网 WebSocket proxying ] 关于 websocket 的介绍可以看阮大大的这篇 [ WebSocket 教 ...
- canvas动态绘制饼状图,
当我们使用Echrts很Highcharts的时候,总是觉得各种统计图表是多么神奇,今天我就用现代浏览器支持的canvas来绘制饼状统计图,当然仅仅是画出图并没什么难度,但是统计图一般都有输入,根据不 ...