BZOJ 1630/2023 Ant Counting 数蚂蚁

DP.

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100050
#define mod 1000000
using namespace std;
int n,m,l,r,sum[2][maxn],cnt[maxn],x;
int main()
{
    scanf("%d%d%d%d",&n,&m,&l,&r);
    for (int i=1;i<=m;i++)
    {
        scanf("%d",&x);
        cnt[x]++;
    }
    for (int i=0;i<=m;i++) sum[0][i]=1;
    for (int i=1;i<=n;i++)
        for (int j=0;j<=m;j++)
        {
            int ret;
            if (j>=cnt[i]+1) ret=(sum[i&1^1][j]-sum[i&1^1][j-cnt[i]-1]+mod)%mod;
            else ret=sum[i&1^1][j];
            sum[i&1][j]=(sum[i&1][j-1]+ret)%mod;
        }
    printf("%d
",(sum[n&1][r]-sum[n&1][l-1]+mod)%mod);
    return 0;
}
原文地址:https://www.cnblogs.com/ziliuziliu/p/6071434.html