hdu 6333 莫队,组合数

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6333

 

找出组合数关系数然后用莫队

 

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
#define mod 1000000007
#define inf 0x3f3f3f3f
#define sqr(a) (a)*(a)
#define For(i,m,n) for(int i=m;i<=n;i++)
#define Dor(i,n,m) for(int i=n;i>=m;i--)
#define lan(a,b) memset(a,b,sizeof(a))
#define maxn 200010

using namespace std;

struct node
{
    int l,r;
    int id;
}a[maxn];
int t;
vector run[maxn];
int mx,chunk,cnt;

int fac[maxn], inv[maxn];
int be[maxn];
int ans[maxn];
int powi(int a, int b)
{
    int c = 1;
    for (; b; b >>= 1, a = 1ll * a * a % mod)
        if (b & 1) c = 1ll * c * a % mod;
    return c;
}

int C(int a, int b)
{
    return 1ll * fac[a] * inv[b] % mod * inv[a - b] % mod;
}

bool cmp(node a,node b)
{
    return a.rrun[i][j].l)sum=(sum + mod - C(r,l--))%mod;
                        ans[run[i][j].id]=sum;
                    }
                }

        For(i,1,t)
            printf("%d\n",ans[i]);
    return 0;
}

 

你可能感兴趣的:(组合数,莫队)