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. 图片缩放PhoneView

    第一步:导包 implementation 'com.github.chrisbanes:PhotoView:2.0.0' 第二步:加bmob仓库地址 在build.gradle(project)中的 ...

  2. 安卓界面之Toolbar+tablayout+viewpager仿WhatsApp界面样式

    实现界面: 布局代码: <?xml version="1.0" encoding="utf-8"?> <android.support.con ...

  3. QQ浏览器兼容模式问题

    今天客户反馈有个问题,他说用360浏览器的兼容模式无法登陆系统,我试了可以,接着试了IE11,也可以,然后跟经理汇报,他说他用qq浏览器兼容模式就不可以,于是我试了,果然不可以... 问题是酱紫的:输 ...

  4. Linux Mint Mate 常用

    Linux Mint基于Ubuntu  Mate 桌面版据说资源占用较少 http://mirrors.tuna.tsinghua.edu.cn/linuxmint-cd/stable/17.3/li ...

  5. JS列表

    promise 引用类型/值类型 ----- 对比python可变对象/不可变对象 原型继承

  6. 03-13_WLST导航和定位MBean

    本文重点:WLST导航和定位MBean     MBean切换图 如上:红色的字体表示切换的命令.ls和cd是在当前树下切换,其他命令是在不同树之间切换. 其中: DomainMBeanServer有 ...

  7. sql语句进阶教程

    转载自:http://blog.csdn.net/u011001084/article/details/51318434 最近从图书馆借了本介绍SQL的书,打算复习一下基本语法,记录一下笔记,整理一下 ...

  8. sql server2014企业版无人值守批处理脚本自动化安装

    ▲版权声明:本文为博主原创文章,未经博主允许不得转载. SQL Server系列软件是Microsoft 公司推出的关系型数据库管理系统.2014年4月16日于旧金山召开的一场发布会上,微软CEO萨蒂 ...

  9. 反射型XSS+文件上传+CSRF—DVWA

    在学习的过程中,想到将几种漏洞进行组合练习,记录下学习过程.大佬请绕过!谢谢!! 测试环境:DVWA,安装方法参考上一篇:https://www.cnblogs.com/aq-ry/p/9220584 ...

  10. log4j2 yml

    1.log4j2默认加载文件为log4j2.xml 2.要使用yml加载需添加依赖 <!-- https://mvnrepository.com/artifact/com.fasterxml.j ...