【CodeForces】484E Sign on Fence
来源:互联网 发布:深圳市市政院 知乎 编辑:程序博客网 时间:2024/06/05 21:08
因为一个区间内的广告高度受限于最高的篱笆的高度,所以可以将所有的篱笆从高到低插入,成为一棵可持久化线段树。
维护区间内最长连续篱笆的长度
对每个询问,二分答案然后检查是否存在长度超过w的篱笆段
#include<bits/stdc++.h>using namespace std;#define N 100005#define cint const int &int tot,n,m,L,R,aim,w,root[N],l,r;struct que{int h,i;friend bool operator < (que a,que b){return b.h<a.h;}}p[N];struct node{int mx,l,r,lson,rson;bool tag;}t[N*25],ans;inline void merge(node &a,node b,const node &c){ a.tag=(b.tag&&c.tag); if (b.tag) a.l=b.l+c.l;else a.l=b.l; if (c.tag) a.r=b.r+c.r;else a.r=c.r; a.mx=max(max(max(b.mx,c.mx),max(a.l,a.r)),max(b.r+c.l,a.mx));}void insert(int &k,cint lk,cint l,cint r){ if (!k) k=++tot; if (l==r){t[k].mx=t[k].l=t[k].r=t[k].tag=1;return;} int mid=l+r>>1; if (aim<=mid){insert(t[k].lson,t[lk].lson,l,mid);t[k].rson=t[lk].rson;} else {insert(t[k].rson,t[lk].rson,mid+1,r);t[k].lson=t[lk].lson;} merge(t[k],t[t[k].lson],t[t[k].rson]);}#define Lson t[k].lson,l,mid#define Rson t[k].rson,mid+1,rvoid build(int &k,cint l,cint r){ k=++tot; if (l==r) return; int mid=l+r>>1; build(Lson);build(Rson);}void find(cint k,cint l,cint r){ if (L<=l && r<=R) return merge(ans,ans,t[k]); int mid=l+r>>1; if (L<=mid) find(Lson); if (mid<R) find(Rson);}inline bool judge(cint k){ ans=(node){0,0,0,0,0,0}; find(root[k],1,n); return w<=ans.mx;}int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&p[i].h),p[i].i=i; sort(p+1,p+n+1); build(root[0],1,n); for (int i=1;i<=n;i++) aim=p[i].i,insert(root[i],root[i-1],1,n); scanf("%d",&m); while (m--) { scanf("%d%d%d",&L,&R,&w); l=1,r=n; for (int mid=l+r>>1;l<r;mid=l+r>>1) if (judge(mid)) r=mid;else l=mid+1; printf("%d\n",p[l].h); }}
0 0
- Codeforces 484E Sign on Fence
- CodeForces 484E Sign on Fence
- codeforces 484E Sign on Fence
- 【CodeForces】484E Sign on Fence
- CF 484E Sign on Fence
- Codeforces 484E Sign on Fence(可持久化线段树+二分)
- 【codeforces】484E. Sign on Fence 可持久化线段树
- Codeforces 484E. Sign on Fence 可持久化线段树
- codeforces 484E Sign on Fence 可持久化线段树+二分查找
- [Codeforces276E]Sign on Fence CDQ分治
- CodeForces 182E Wooden Fence
- Codeforces 101484 E Double Fence
- 可持久化线段树 CF484E-Sign on Fence
- codeforces 182E Wooden Fence 动态规划
- codeforces Round #117 Div.2 182E. Wooden Fence
- Codeforces Round #117 (Div. 2) E. Wooden Fence
- Codeforces Round #117 (Div. 2)E---Wooden Fence(dp)
- codeforces 182E Wooden Fence(方案数DP)【模板】
- Python轻松入门-33 字典计算
- SSM框架——实现分页和搜索分页
- [BZOJ3235][Ahoi2013]好方的蛇(单调栈+容斥原理)
- SSM框架——以注解形式实现事务管理
- Qt/QML 窗口阴影边框实现
- 【CodeForces】484E Sign on Fence
- Oil Deposits HDU
- 再写dll 关于declspec(dllexport)和declspec(dllimport)
- c语言中的main函数讨论
- local response normalization/batch normalization
- 输入一个数对应二进制下遇到的问题归纳
- Oracle 常用性能监控SQL语句
- 洛谷 P1177 【模板】快速排序
- A. Year of University Entrance