BZOJ 1630/2023 Ant Counting 数蚂蚁

时间:2023-03-18 17:21:56

DP.

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100050
#define mod 1000000
using namespace std;
int n,m,l,r,sum[][maxn],cnt[maxn],x;
int main()
{
scanf("%d%d%d%d",&n,&m,&l,&r);
for (int i=;i<=m;i++)
{
scanf("%d",&x);
cnt[x]++;
}
for (int i=;i<=m;i++) sum[][i]=;
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
{
int ret;
if (j>=cnt[i]+) ret=(sum[i&^][j]-sum[i&^][j-cnt[i]-]+mod)%mod;
else ret=sum[i&^][j];
sum[i&][j]=(sum[i&][j-]+ret)%mod;
}
printf("%d\n",(sum[n&][r]-sum[n&][l-]+mod)%mod);
return ;
}