全WA求调

B3624 猫粮规划

xishengming @ 2024-03-01 21:41:55

#include<bits/stdc++.h>
using namespace std;
int n,l,r,a[1000005],vis[1000005],ans;
int total(int x,int y)
{
    int rt=0;
    for(int i=x;i<=y;i++)
    rt+=a[i];
    return rt;
}//计算后面的数的和
void dfs(int sum,int step)
{
    if(sum>=l){
        if(sum<=r)ans++;
        return;
    }
    for(int i=step;i<=n;i++)
    {
        if(!vis[i])
        {
            if(total(i,n)+sum<l)break;//如果加起来都不够就直接跳过
            vis[i]=1;
            dfs(sum+a[i],i+1);
            vis[i]=0;
        }
    }
}
int main()
{
    cin>>n>>l>>r;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    dfs(0,1);
    cout<<ans;
    return 0;
}

|