离散化坐标,每个坐标开一棵以鸟的编号为关键字的平衡树。每次插入时打2个标记,同时更新自身。这个方法比较显然,而且好写。正解好像用很迷的方法乱搞了一波,然后用线段树不打标记就做出来了,并不会。

treap旋转没传引用,调了好久。

#include<bits/stdc++.h>
#define N 30005
#define M 330005
#define x first
#define y second
#define IF else if
using namespace std;
int n,m,i,v[M];
typedef int ds[N];
ds f,l,r,z;
typedef pair<int,int>vec;
vec a[M],s[M];
struct node{int v,a,i,j,s,q;node*r,*l;
}*t[M],e[M];
node*back=e+1;
node*null=e;
node*create(int v){return&(*back++=(node){v,z[v],0,0,1,rand(),e,e});
}
void update(node*t){t->s=t->l->s+t->r->s+1;t->a=max(max(t->l->a,t->r->a),z[t->v]);
}
void lturn(node*&t){node*s=t->r;t->r=s->l;update(s->l=t);update(t=s);
}
void rturn(node*&t){node*s=t->l;t->l=s->r;update(s->r=t);update(t=s);
}
void eq2(int&a,int b){a=a<b?b:a;
}
void devolve(node*s){eq2(s->l->i,s->i);eq2(s->l->j,s->j);eq2(s->r->i,s->i);eq2(s->r->j,s->j);eq2(l[s->v],s->i);eq2(r[s->v],s->j);s->i=s->j=0;
}
void insert(int v,node*&s){if(s==null)s=create(v);devolve(s);if(v<s->v){insert(v,s->l);if(s->l->q>s->q)rturn(s);}IF(s->v<v){insert(v,s->r);if(s->r->q>s->q)lturn(s);}update(s);
}
void erase(int v,node*&s){devolve(s);if(v<s->v)erase(v,s->l);IF(s->v<v)erase(v,s->r);IF(s->l==null){s=s->r;return;}IF(s->r==null){s=s->l;return;}IF(s->l->q>s->r->q){devolve(s->l);rturn(s);erase(v,s->r);}else{devolve(s->r);lturn(s);erase(v,s->l);}update(s);
}
void come(int v,node*&s){eq2(s->i,z[v]);eq2(s->j,s->s);eq2(l[v],s->a);eq2(r[v],s->s);insert(v,s);
}
void dfs(node*t){if(t!=null){devolve(t);dfs(t->l);dfs(t->r);}
}
int main(){srand(20000327);scanf("%d",&n);for(i=1;i<=n;++i){scanf("%d%d%d",z+i,&a[i].x,&a[i].y);s[i]=a[i];}scanf("%d",&m);for(i=n+1;i<=n+m;++i){scanf("%d%d%d",v+i,&a[i].x,&a[i].y);s[i]=a[i];}sort(s+1,s+n+m+1);for(i=1;i<=n+m;++i)t[i]=null;for(i=1;i<=n;++i)come(i,t[f[i]=lower_bound(s+1,s+n+m+1,a[i])-s]);for(i=n+1;i<=n+m;++i){erase(v[i],t[f[v[i]]]);come(v[i],t[f[v[i]]=lower_bound(s+1,s+n+m+1,a[i])-s]);}for(i=1;i<=n;++i){dfs(t[f[i]]);t[f[i]]=null;printf("%lld\n",1ll*l[i]*r[i]);}
}

转载于:https://www.cnblogs.com/f321dd/p/5724466.html

BZOJ2827: 千山鸟飞绝相关推荐

  1. 一个还在武汉的程序员 之 千山鸟飞绝,万径人踪灭

    2.4号 晚上 我突然开始呼吸困难,近乎到睡不着的地步了. 我开始大口呼吸.轻度咳嗽.心跳有时很快. 还有最后一瓶,藿香正气水 这是我最后的希望. 我终于喝了它.好受了一些.迷迷糊糊一直到3点才睡着. ...

  2. 2827: 千山鸟飞绝 splay打标记

    Description 话说有一天doyouloveme和vfleaking到山里玩.谁知doyouloveme刚刚进山,所有的鸟儿竟被他的神犇气场给惊得全部飞走了.vfleaking顿时膜拜不已. ...

  3. iOS实录15:浅谈iOS Crash

    导语:在当前的iOS开发中,虽然ARC为开发者解决了手动内存管理时代 的许多麻烦,但是内存方面的问题依然是产生iOS Crash的元凶之一,本文介绍内存方面,有关僵尸对象.野指针.内存泄漏.废弃内存这 ...

  4. [POI2008] Poc (原名 Trians) Treap+Hash

    这个题和千山鸟飞绝体现出了一种用平衡树解决动态集合问题,主要套路就是蜜汁标记. 这个题我一开始用替罪羊树搞了一下对了28个点,后来我换成了Treap一搞对了14个点,再后来发现被卡了Hash我竟然在自 ...

  5. OSChina 周四乱弹 —— 熊孩子毁灭世界

    2019独角兽企业重金招聘Python工程师标准>>> 小伙伴们赶快起床,开源中国要出大事啦~ 为方便大家搜索开源软件,开源中国决定整理 IT 公司开源软件.初步列表不一定完善,小伙 ...

  6. 三、Python-列表

    三.Python-列表 一.序列:是一块用于存放多个值的连续内存空间,并且按一定顺序排列,可以通过索引取值 索引:从左到右的索引从0开始依次增加的正整数:从右到左的索引为-1开始的复数 切片(分片): ...

  7. OSChina 周三乱弹——真相往往令人内牛满面

    2019独角兽企业重金招聘Python工程师标准>>> 工作累了,下班和基友一起喝点酒没啥,喝大了可就.... @李察德-泰森 刚才发生了什么 快,告诉你妈妈,因为头发没竖起来 @s ...

  8. 1024程序员节:心疼被段子手黑得最惨的你们

    今天是程序员们的节日,同样身穿着格子衫的小鱼儿也一起来凑热闹啦~ 你们有撞衫的嘛? 有一个人,姓程,名序员,今天对他来说是个伟大的日子,因为今天是10.24 问:1024是什么? 游戏?2的十次方?某 ...

  9. 小学三年级另类语文题难住大学副教授(图)

    看到这些题蔡先生也犯难 记者 阚旋 摄 小学三年级的语文卷,不仅有你想不到的,也还有你做不到的. 昨日,一套小学生三年级语文作业题,难住了长春某大学副教授蔡先生. 两天答完159个小题 "这 ...

  10. python怎么变成竖行_用python实现古诗词横板竖版显示 【二维列表的使用】

    案例展示用python实现古诗词横竖两种版本效果图 实现的代码如下: #古诗顺序倒叙读 str1="千山鸟飞绝" str2="万尽人踪灭" str3=" ...

最新文章

  1. Eclipse如何更改包名后,批量修改文件的包名
  2. 智能手机相机测试中的功能测试和性能测试
  3. 化腐朽为神奇:推荐一个让算法动起来更好理解的学习项目!
  4. 自然语言处理(四)统计机器翻译SMT
  5. 一维有限元法matlab,有限元matlab研究.ppt
  6. 【云计算平台】VMware搭建Centos 7虚拟机
  7. 深入浅出Java反射机制
  8. 关于网上商城开发的随笔记录1
  9. Android Fragment切换动画效果
  10. x200装linux驱动下载,佳能 ThinkPad X200 Tablet 驱动程序下载-更新佳能软件(平板电脑)...
  11. CSS font-family 各字体一览表
  12. 让你的FireFox支持迅雷精简版
  13. 合宙 Air 724UG模组(4G Cat.1通信模组)测试过程
  14. Zotero及部分常用插件安装和使用教程
  15. 美团java笔试题_美团笔试题目(Java后端5题2小时)
  16. mset redis_Redis MSET 命令
  17. 局域网联通公网小部分知识点
  18. Flask部署机器学习模型---基于线性回归模型的销售预测系统实现简易版代码
  19. 想拥有一个自由时间的职业_如何以自由职业者的身份管理时间
  20. android字体图形绘制,android paint api drawText 绘制字体字形

热门文章

  1. OSChina 周六乱弹 ——揭秘后羿怎么死的
  2. 路由navigate
  3. Unity 判断鼠标点击的是单击还是双击
  4. 【算法】【感悟】LCP 03. 机器人大冒险
  5. Zookeeper -选举流程
  6. mysql查看cpu使用高sql语句_MYSQL CPU 使用率高,怎么查,怎么破
  7. 支付宝转账提现相关问题
  8. 小偷-守卫博弈:“诡异”的纳什均衡
  9. android神器v2ex,这5个堪称神器的APP,用了让你爱不释手!
  10. 数据结构:选择类型排序的总结(考研)