题解
明确每个变量的意义
code
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a[200005];
int main()
{
ll t;
cin>>t;
while(t--)
{
map<ll,ll> b;
//b[x]代表数组b中x的使用情况,大于0代表还有剩余,等于0代表刚好借满了或者数组b里不含有他,小于0代表有人在排队等着借,借用的时候如果还有剩余,连接数加一,剩余数减一;如果没有剩余,剩余数减一,代表在排队;归还时剩余数加一,如果剩余数大于0,代表数组b中有数空了出来,连接数减一;若剩余数仍然小于等于0代表还有人排队在借
ll n,m,k;
cin>>n>>m>>k;
for(ll i=1;i<=n;i++) cin>>a[i];
for(ll j=1;j<=m;j++)
{
ll x;
cin>>x;
b[x]++;
}
ll cnt=0,ans=0;
for(ll i=1;i<=n;i++)
{
if(b.count(a[i]))
{
if(b[a[i]]>0) cnt++;
b[a[i]]--;
}
if(i>=m)
{
if(cnt>=k) ans++;
ll pre=a[i-m+1];
if(b.count(pre))
{
b[pre]++;
if(b[pre]>0) cnt--;
}
}
}
cout<<ans<<endl;
}
return 0;
}
标签:剩余,pre,Search,Inaccurate,++,ll,cnt,--,Subsequence
From: https://www.cnblogs.com/pure4knowledge/p/18124007