loj #6062. 「2017 山东一轮集训 Day2」Pair(线段树)
来源:互联网 发布:c语言标识符可分为 编辑:程序博客网 时间:2024/05/29 16:56
题目链接:https://loj.ac/problem/6062
留坑有空写
代码:
#include<bits/stdc++.h>using namespace std;const int MAXN=2e5+5;int a[MAXN],b[MAXN];int n,m,h;struct seg{#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1int mi[MAXN<<2],lazy[MAXN<<2];inline void push_up(int rt){mi[rt]=min(mi[rt<<1],mi[rt<<1|1]);}inline void push_down(int rt){if(lazy[rt]){mi[rt<<1]+=lazy[rt];mi[rt<<1|1]+=lazy[rt];lazy[rt<<1]+=lazy[rt];lazy[rt<<1|1]+=lazy[rt];lazy[rt]=0;}}void build(int l,int r,int rt){lazy[rt]=0;if(l==r){mi[rt]=-(m-l+1);//printf("%d\n",mi[rt]);return;}int mid=(l+r)>>1;build(lson);build(rson);push_up(rt);}void update(int L,int R,int val,int l,int r,int rt){if(L>R)return ;if(L<=l&&r<=R){lazy[rt]+=val;mi[rt]+=val;return ;}push_down(rt);int mid=(l+r)>>1;if(L<=mid)update(L,R,val,lson);if(mid<R)update(L,R,val,rson);push_up(rt);}}se;int getid(int x){int p=upper_bound(b+1,b+1+m,x)-b-1;return p;}int pos[MAXN];void solve(){for(int i=1;i<=m;i++){scanf("%d",&b[i]);b[i]=h-b[i];}se.build(1,m,1);sort(b+1,b+1+m);for(int i=1;i<=n;i++){scanf("%d",&a[i]);a[i]=getid(a[i]);//printf("a[%d]->%d\n",i,a[i]);}int r=1;for(int i=1;i<=n;i++){while(r<=n&&se.mi[1]<0)se.update(1,a[r++],1,1,m,1);pos[i]=(se.mi[1]>=0)?r-1:-1;se.update(1,a[i],-1,1,m,1);}int ans=0;for(int i=1;i<=n;i++){if(pos[i]-i+1==m)ans++;}printf("%d\n",ans);}int main(){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);while(~scanf("%d%d%d",&n,&m,&h)){solve();}return 0;}
阅读全文
0 0
- loj #6062. 「2017 山东一轮集训 Day2」Pair(线段树)
- [Hall定理 + 线段树] LibreOJ#6062. 「2017 山东一轮集训 Day2」Pair
- [线段树][二分图 霍尔定理]LOJ#6062 && 2017 山东一轮集训 Day2. Pair
- [霍尔定理]「2017 山东一轮集训 Day2」LOJ 6062——PAIR
- LOJ #6077. 「2017 山东一轮集训 Day7」逆序对
- LOJ #6077. 「2017 山东一轮集训 Day7」逆序对
- [倍增NTT][DP] LOJ#6059. 「2017 山东一轮集训 Day1」Sum
- [动态网络 网络流] LOJ#6068.「2017 山东一轮集训 Day4」棋盘
- [最短路 杂题] LOJ#6075. 「2017 山东一轮集训 Day6」重建
- [莫队维护DP] LOJ#6074. 「2017 山东一轮集训 Day6」子序列
- [费用流]LOJ#6079. 「2017 山东一轮集训 Day7」养猫
- [后缀自动机 DP] LOJ#6071. 「2017 山东一轮集训 Day5」字符串
- [分块 回文自动机] LOJ#6070. 「2017 山东一轮集训 Day4」基因
- [容斥 DP] LOJ#6077. 「2017 山东一轮集训 Day7」逆序对
- [LOJ#6060][线性基]2017 山东一轮集训 Day1. Set
- LOJ 6032 「雅礼集训 2017 Day2」水箱
- [树的同构][二分][可并堆维护哈希] LOJ#6066 || BZOJ4928 && 2017 山东一轮集训 Day3. 第二题
- [DP][倍增NTT]LOJ#6059. 2017 山东一轮集训 Day1. Sum
- Codeforces Round #438
- 天梯地图(30 分)
- leetcode problem solve 2——Add Two Numbers
- [JZOJ5454]仔细的检查
- Python高级编程-如何让字典保持有序?
- loj #6062. 「2017 山东一轮集训 Day2」Pair(线段树)
- android开发之路(1)
- python猜数字
- bfs:一维坐标的移动
- DirectX入门之添加移动摄像机
- 【爬虫学习】多进程,多线程处理
- lee720-Longest Word in Dictionary My SubmissionsBack to Contest
- 集合 --Collection 练习
- input中checkbox的checked选中状态-陈周