https://loj.ac/problem/6062

直接套用霍尔定理。

由于A有多个选择,考虑维护B是否合法。

首先B数组的顺序显然是没有用的,可以直接排序。

然后每个A就都变成了向一个后缀连边。

对于B,原本需要check每一个集合是否满足|u|<=|v|

但实际上,只需要考虑最可能导致不合法的条件,也就是让等式右边保持不变的情况下,左边尽可能的大,如果还合法,就可以判定合法。

对于B,显然对于i<j,一定有F【i】<F【j】,F数组是B在A能匹配到的个数。

因此,需要check的只是B的一些前缀。

因此,我们只需要是每一个位置都满足i<=F【i】即可。

移项一下,F【i】- i >=0 因此,只需要维护F【i】- 的最小值即可。

由于A在不断变化,每次变化是对F数组的一个区间修改,线段树维护即可。

#include<bits/stdc++.h>
#define N 220000
#define eps 1e-7
#define inf 1e9+7
#define db double
#define ll long long
#define ldb long double
using namespace std;
inline ll read()
{
char ch=0;
ll x=0,flag=1;
while(!isdigit(ch)){ch=getchar();if(ch=='-')flag=-1;}
while(isdigit(ch)){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
return x*flag;
}
struct Segment_Tree
{
#define lson o<<1
#define rson o<<1|1
#define mid ((l+r)>>1)
ll minv[N*4],addv[N*4];
inline void pushup(ll o){minv[o]=min(minv[lson],minv[rson]);}
inline void pushdown(ll o)
{
addv[lson]+=addv[o];minv[lson]+=addv[o];
addv[rson]+=addv[o];minv[rson]+=addv[o];
addv[o]=0;
}
void build(ll o,ll l,ll r)
{
addv[o]=0;if(l==r){minv[o]=-l;return;}
build(lson,l,mid);build(rson,mid+1,r);pushup(o);
}
void optset(ll o,ll l,ll r,ll ql,ll qr,ll k)
{
if(ql>qr)return;
if(ql<=l&&r<=qr){addv[o]+=k,minv[o]+=k;return;}
pushdown(o);
if(ql<=mid)optset(lson,l,mid,ql,qr,k);
if(qr>mid)optset(rson,mid+1,r,ql,qr,k);
pushup(o);
}
ll query(){return minv[1];}
#undef lson
#undef rson
#undef mid
}T;
ll n,m,k,ans,a[N],b[N];
void update(ll x,ll flag)
{
ll l=1,r=m+1,mid;
while(l<r){mid=(l+r)>>1;if(x+b[mid]<k)l=mid+1;else r=mid;}
T.optset(1,1,m,l,m,flag);
}
int main()
{
n=read();m=read();k=read();ans=0;
for(ll i=1;i<=m;i++)b[i]=read();for(ll i=1;i<=n;i++)a[i]=read();
sort(b+1,b+m+1);T.build(1,1,m);for(ll i=1;i<m;i++)update(a[i],+1);
for(ll i=1;i<=n-m+1;i++)update(a[i+m-1],+1),ans+=(T.query()>=0),update(a[i],-1);
printf("%lld\n",ans);
return 0;
}

loj6062 pair的更多相关文章

  1. 【LOJ6062】「2017 山东一轮集训 Day2」Pair(线段树套路题)

    点此看题面 大致题意: 给出一个长度为\(n\)的数列\(a\)和一个长度为\(m\)的数列\(b\),求\(a\)有多少个长度为\(m\)的子串与\(b\)匹配.数列匹配指存在一种方案使两个数列中的 ...

  2. LOJ6062「2017 山东一轮集训 Day2」Pair(Hall定理,线段树)

    题面 给出一个长度为 n n n 的数列 { a i } \{a_i\} {ai​} 和一个长度为 m m m 的数列 { b i } \{b_i\} {bi​},求 { a i } \{a_i\} ...

  3. c++ pair 使用

    1. 包含头文件: #include <utility> 2. pair 的操作: pair<T1,T2> p; pair<T1,T2> p(v1,v2); pai ...

  4. 论Pair的重要性

    这些天我在用React和D3做图表,从已经实现的图表里复制了一些坐标轴的代码,发现坐标轴上的n个点里,只有第一个点下面能渲染出文字提示,其余点下面都无法渲染出文字. 和组里的FL一起百思不得其解好几天 ...

  5. 2016 ACM/ICPC Asia Regional Dalian Online 1010 Weak Pair dfs序+分块

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...

  6. pair的使用

    #include<iostream> #include<cmath> #include<cstdio> #include<algorithm> #inc ...

  7. 【C++】pair

    STL的pair,有两个值,可以是不同的类型. template <class T1, class T2> struct pair; 注意,pair在头文件utility中,不要inclu ...

  8. hackerrank Similar Pair

    传送门 Problem Statement You are given a tree where each node is labeled from 1 to n. How many similar ...

  9. uva12546. LCM Pair Sum

    uva12546. LCM Pair Sum One of your friends desperately needs your help. He is working with a secret ...

随机推荐

  1. JavaScript非数字(中文)排序

    直接上代码: var arr=[ {name:"张散步",age:"23",sports:"篮球",number:"231123& ...

  2. python进程间通信--信号Signal

    信号signal 是python进程间通信多种机制中的其中一种机制.可以对操作系统进程的控制,当进程中发生某种原因而中断时,可以异步处理这个异常. 信号通过注册的方式‘挂’在一个进程中,并且不会阻塞该 ...

  3. pycharm运行Django发生AppRegistryNotReady: Apps aren't loaded yet.

    pycharm中运行django默认情况下并不是执行项目的,所以如果在非manage.py,会发生异常. raise AppRegistryNotReady("Apps aren't loa ...

  4. Yarn 安装 on centos7

    本文演示如何在CentOS7上安装Yarn.注意这个Yarn是Js包管理器,不是Hadoop的资源调度器. 1 准备工作 1.1 浏览器访问安装包下载地址: https://github.com/ya ...

  5. Pinyin4j实战

    package com.haiyisoft.innovationcenter.pinyin; import org.junit.Test; import net.sourceforge.pinyin4 ...

  6. tkinter中button按钮控件(三)

    button控件 简单的实现: import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry(" ...

  7. 洗礼灵魂,修炼python(50)--爬虫篇—基础认识

    爬虫 1.什么是爬虫 爬虫就是昆虫一类的其中一个爬行物种,擅长爬行. 哈哈,开玩笑,在编程里,爬虫其实全名叫网络爬虫,网络爬虫,又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者 ...

  8. SQL Server 2000详细安装过程及配置

    说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,虽然现如今SQL Server 2000软件早已经过时了,但仍然有一部分人在使用它,尤 ...

  9. Unity Chan 2D Asset

    Unity Chan 2D Asset 4月份時,UNITY CHAN 官方網站推出了3D大島こはく,之後也有更新1.11版,而在六月12日時,則釋出了2D版本素材,一樣可以在UNITY CHAN 官 ...

  10. Android实践--apk反编译

    版权声明:本文为博主原创文章.转载请注明出处. https://blog.csdn.net/ysjian_pingcx/article/details/25468867 Android apk反编译一 ...