bzoj 2827: 千山鸟飞绝
2827: 千山鸟飞绝
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 802 Solved: 228
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 1 1
3 1 2
4 4 4
2 0 1
2 2 3
5
1 1 2
2 4 4
2 4 3
3 0 1
5 0 1
Sample Output
4
6
8
8
HINT
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define N 100010 #define M 500010 using namespace std; int ch[M][2]; int rnd[M],key[M],sz[M],cnt[M],d1[M],d2[M],tot; int z[N],rt[M],sum; int mx[N],tog[N],w[N]; struct query{int x,y,id;void input(){scanf("%d%d%d",&id,&x,&y);} }q[M]; struct point{int x,y;point(int x=0,int y=0):x(x),y(y){}bool operator < (const point &b)const{return x<b.x||x==b.x&&y<b.y;}bool operator == (const point &b)const{return x==b.x&&y==b.y;} }p[N],san[M]; int cmp(int x,int val){if(w[key[x]]==w[val])return key[x]<val;return w[key[x]]<w[val]; } int cmp2(int x,int val){if(key[x]==val)return -1;return w[key[x]]<=w[val]; } void mark_down(int x,int u,int v){d1[x]=max(d1[x],u);d2[x]=max(d2[x],v);mx[key[x]]=max(mx[key[x]],u);tog[key[x]]=max(tog[key[x]],v); } void push_up(int x){sz[x]=cnt[x]+sz[ch[x][1]]+sz[ch[x][0]]; } void push_down(int x){if(!d1[x]&&!d2[x]||!x)return;if(ch[x][0])mark_down(ch[x][0],d1[x],d2[x]);if(ch[x][1])mark_down(ch[x][1],d1[x],d2[x]);d1[x]=d2[x]=0; } void rot(int &x,int d){int k=ch[x][d^1];ch[x][d^1]=ch[k][d];ch[k][d]=x;push_up(x);push_up(k);x=k; } void insert(int &x,int val){if(x==0){tot++;ch[tot][0]=ch[tot][1]=0;key[tot]=val;rnd[tot]=rand();sz[tot]=cnt[tot]=1;x=tot;return;}push_down(x);int d=cmp(x,val);insert(ch[x][d],val);if(rnd[ch[x][d]]>rnd[x])rot(x,d^1);push_up(x); } int get_max(int x){if(!x)return -1;push_down(x);if(ch[x][1])return get_max(ch[x][1]);return w[key[x]]; } void gao(int id,int i){//位置,编号 if(rt[id]){mx[i]=max(get_max(rt[id]),mx[i]);mark_down(rt[id],w[i],0);}insert(rt[id],i);mark_down(rt[id],0,sz[rt[id]]-1); } int haxi(point v){return lower_bound(san+1,san+1+sum,v)-san; } void del(int &x,int val){if(x==0)return;push_down(x);int d=cmp(x,val);if(key[x]==val)d=-1; if(d==-1){if(ch[x][0]*ch[x][1]==0)x=ch[x][0]+ch[x][1];else{int d2=rnd[ch[x][0]]>rnd[ch[x][1]];push_down(ch[x][d2^1]);rot(x,d2);del(ch[x][d2],val);}}else del(ch[x][d],val);if(x)push_up(x); } int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d%d",&w[i],&p[i].x,&p[i].y);san[++sum]=p[i];}int t;scanf("%d",&t);for(int i=0;i<t;i++){q[i].input();san[++sum]=point(q[i].x,q[i].y);}sort(san+1,san+sum+1);sum=unique(san+1,san+sum+1)-san-1;for(int i=1;i<=n;i++){//枚举每只鸟 z[i]=haxi(p[i]);//z[i]是初始时的位置 gao(z[i],i);}for(int i=0;i<t;i++){int u=q[i].id,xx=q[i].x,yy=q[i].y;del(rt[z[u]],u);z[u]=haxi(point(xx,yy));gao(z[u],u);}for(int i=1;i<=n;i++)del(rt[z[i]],i);for(int i=1;i<=n;i++)printf("%lld\n",1LL*mx[i]*tog[i]);return 0; }
转载于:https://www.cnblogs.com/thmyl/p/8278008.html
bzoj 2827: 千山鸟飞绝相关推荐
- 2827: 千山鸟飞绝 splay打标记
Description 话说有一天doyouloveme和vfleaking到山里玩.谁知doyouloveme刚刚进山,所有的鸟儿竟被他的神犇气场给惊得全部飞走了.vfleaking顿时膜拜不已. ...
- BZOJ.1558.[JSOI2009]等差数列(线段树 差分)
BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...
- S-T平面图中利用最短路求最小割(BZOJ 1001)
BZOJ 1001: [BeiJing2006]狼抓兔子 最小割 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢 ...
- BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)
题意 有 \(n\) 个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪. 因此,对于不同的开枪顺序,最后死的人也不同. 问最 ...
- BZOJ 2957楼房重建
传送门 线段树 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include< ...
- BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)
BZOJ LOJ 洛谷 \(d_i\)不同就不用说了,建出树来\(DFS\)一遍. 对于\(d_i\)不同的情况: Solution 1: xxy tql! 考虑如何把这些数依次填到树里. 首先对于已 ...
- bzoj 4871: [Shoi2017]摧毁“树状图”
4871: [Shoi2017]摧毁"树状图" Time Limit: 25 Sec Memory Limit: 512 MB Submit: 53 Solved: 9 [Su ...
- BZOJ 1592. Making the Grade(思维,数据结构优化DP,以及三个拓展问题)[Usaco2008 Feb]【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x 目录 BZOJ 1592. Making the Grade 拓展问题一 拓展问 ...
- BZOJ 1590.Secret Message 秘密信息(Trie树) [Usaco2008 Dec]【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x Weblink https://hydro.ac/d/bzoj/p/1590 P ...
- BZOJ 1589 Trick or Treat on the Farm (tarjan缩点,记忆化搜索)[Usaco 2008 Dec Gold]【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://hydro.ac/d/bzoj/p/1589 Problem 每年万圣 ...
最新文章
- 包子和饺子之扫地机器人_扫地机器人和体重秤在一起,能生出什么宝宝? | 爆笑囧图...
- Linux C编程--网络编程2--面向连接的网络编程
- 【剑指offer】题目二
- C# 功能完整的单表增删改查程序
- 【技术综述】视频分类/行为识别研究综述,从数据集到方法
- 【co】ES6-20/21 iterator与generator
- C++之文件操作探究(一):写文件——文本文件
- 图片底下配的文字叫什么_PPT排版狂想篇 | 如何用一张图片搞定30种排版
- Vijos 1303
- codeforces 463A Caisa and Sugar 解题报告
- 为什么勒索软件的预防如此重要?
- 深入浅出Python机器学习3——K最近邻算法
- 无线路由器的DNS服务器怎么设置,无线路由器DNS的设置方法
- 后盾网php 百度盘,后盾网PHP操作exce视频教程
- 真正免费的证件照小程序,在线一键生成标准免冠证件照,证件照底色更换,证件照尺寸修改
- [BZOJ4340][BJOI2015]隐身术(后缀数组)
- 如何用最少的老鼠试出有毒的牛奶?
- ZOHO 免费小型企业邮箱和个人邮箱
- android_Android游戏开发–基本游戏架构
- c++头文件中的防卫式声明