题解:CF1833F Ira and Flamenco

1|0思路

因为要一个长度为 m 的,且最大与最小的元素之差小于等于 m 所以序列应为 aiai+1,ai+2,ai+m1,所以满足要求的序列之需要连续 m 个就行了,这个最开始排序,去重后用 lower_bound 求一下小于 ai+m1 的数有没有 m 个就行了。

考虑满足要求序列的答案,每个值相同的数只选一次且必须选一次,我们设 mpai 为值为 ai 的数的个数,所以 ans=mpai×mpai+1×mpai+m1 这一坨要用线段树,双指针扫的话会超 long long(其实用前缀积,求的时候用逆元也可以),把每个答案贡献记在满足要求的序列中的最小的 ai 上就行了。

2|0代码

#include<bits/stdc++.h> #define int long long #define mid (tr[x].l+tr[x].r>>1) using namespace std; const int N = 2e5 + 5; const int mod = 1e9 + 7; int T,n,m,ans; map <int,int> mp; int a[N],b[N],sum,cnt[N]; struct node { int ad,l,r; } tr[N<<2]; void pushup(int x) { return void(tr[x].ad=(tr[x<<1].ad*tr[x<<1|1].ad)%mod); } void build(int x,int l,int r) { tr[x].l = l, tr[x].r = r; if(l==r) return void(tr[x].ad = cnt[l]); build(x<<1,l,mid),build(x<<1|1,mid+1,r); return void(pushup(x)); } int query(int x,int L,int R) { // cout<<tr[x].ad<<" "; if(tr[x].l>=L&&tr[x].r<=R) return tr[x].ad; int anss = 1; if(L<=mid) anss*=query(x<<1,L,R); anss%=mod; if(R>mid) anss*=query(x<<1|1,L,R); return anss%mod; } signed main() { // freopen("neat.in","r",stdin); // freopen("neat.out","w",stdout); ios::sync_with_stdio(0); cin.tie(0) , cout.tie(0); cin>>T; int p,k; while(T--) { cin>>n>>m; ans = 0; for(int i=1; i<=n; ++i) { cin>>a[i]; mp[a[i]]++; } sort(a+1,a+1+n); for(int i=1; i<=n; ++i) b[i] = a[i]; p = unique(b+1,b+1+n)-b-1; if(m>p) { cout<<"0\n"; for(int i=1; i<=n; ++i) mp[a[i]] = 0; continue; } for(int i=1; i<=p; ++i) cnt[i] = mp[b[i]]; build(1,1,p); for(int i=1; i<=p; ++i) { k = lower_bound(b+1,b+1+p,b[i]+m) - b - 1; if(k-i+1<m) continue; ans += query(1,i,k); ans%=mod; } for(int i=1; i<=n; ++i) mp[a[i]] = 0; cout<<ans<<'\n'; } return 0; }


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

__EOF__

本文作者虽不能至,心向往之
本文链接https://www.cnblogs.com/FChang/p/18303523.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   FChang  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
xxx2761天7小时6分54秒
点击右上角即可分享
微信分享提示