题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3434

题意:

思路:

const int mod=10007;
const int N=100005;

int g[22][N];
int C[N][22],mou[N];
int h[22][N][13];

int prime[N],cnt;
int tag[N];

void init()
{
    int i,j;

    mou[1]=1;
    for(i=2;i<N;i++)
    {
        if(!tag[i])
        {
            prime[cnt++]=i;
            mou[i]=-1;
        }
        for(j=0;j<cnt;j++)
        {
            if(i*prime[j]>=N) break;
            tag[i*prime[j]]=1;
            if(i%prime[j]==0)
            {
                mou[i*prime[j]]=0;
                break;
            }
            else mou[i*prime[j]]=-mou[i];
        }
    }

    C[0][0]=1;
    for(i=1;i<N;i++)
    {
        C[i][0]=1;
        for(j=1;j<=i&&j<=20;j++)
        {
            C[i][j]=C[i-1][j-1]+C[i-1][j];
            if(C[i][j]>=mod) C[i][j]-=mod;
        }
    }
    int c;
    for(c=2;c<=20;c++)
    {
        for(i=1;i<N;i++) for(j=i;j<N;j+=i)
        {
            g[c][j]+=C[i-1][c-2]*mou[j/i];
            if(g[c][j]>=mod) g[c][j]-=mod;
            if(g[c][j]<0) g[c][j]+=mod;
        }
    }

    for(c=2;c<=20;c++)
    {
        for(i=1;i<N;i++)
        {
            int pre=1;
            int x=i;
            if(x>=mod) x%=mod;
            for(j=0;j<=11;j++)
            {
                h[c][i][j]=pre*g[c][i]%mod;
                h[c][i][j]+=h[c][i-1][j];
                if(h[c][i][j]>=mod) h[c][i][j]-=mod;
                pre=pre*x%mod;
            }
        }
    }
}

int n,cc,M[13];

struct node
{
    int a[15];

    int Max;

    void clear()
    {
        clr(a,0);
        Max=0;
    }

    void mul(int x1,int x0)
    {
        int i;
        int b[15];
        for(i=0;i<=Max;i++) b[i]=a[i]*x0%mod;
        b[Max+1]=0;

        for(i=0;i<=Max;i++)
        {
            b[i+1]=b[i+1]+a[i]*x1%mod;
            if(b[i+1]>=mod) b[i+1]-=mod;
        }

        for(i=0;i<=n;i++) a[i]=b[i];
        Max++;
    }

}A;

int cal(int d1,int d2)
{
    A.clear();
    A.a[0]=1;
    int i;
    for(i=1;i<=n;i++)
    {
        i64 tmp=M[i]/d1;
        int aa=-(i64)(tmp+1)*tmp/2%mod;
        int bb=M[i]%mod*tmp%mod;
        A.mul(aa,bb);
    }
    int ans=0;
    for(i=n;i>=0;i--)
    {
        ans+=A.a[i]*(h[cc][d2][i]-h[cc][d1-1][i])%mod;
        if(ans<0) ans+=mod;
        if(ans>=mod) ans-=mod;
    }
    return ans;
}

int main()
{
    init();

    int T=getInt();

    while(T--)
    {
        n=getInt();
        cc=getInt();
        int i;
        for(i=1;i<=n;i++) M[i]=getInt();
        sort(M+1,M+n+1);
        int ans=0;

        for(i=1;i<=M[1];)
        {
            int L=i;
            int R=M[1];

            int j;
            for(j=1;j<=n;j++)
            {
                R=min(R,M[j]/(M[j]/i));
            }

            ans+=cal(L,R);

            if(ans>=mod) ans-=mod;
            if(ans<0) ans+=mod;

            i=R+1;
        }
        printf("%d\n",ans);
    }
}

BZOJ 3434 时空穿梭的更多相关文章

  1. 【BZOJ3434】[Wc2014]时空穿梭 莫比乌斯反演

    [BZOJ3434][Wc2014]时空穿梭 Description Input 第一行包含一个正整数T,表示有T组数据求解每组数据包含两行,第一行包含两个正整数N,C(c>=2),分别表示空间 ...

  2. Vue2 实现时空穿梭框功能模块

    前言 这篇文章主要是分享一个时空穿梭框功能,也就是我们平时用的选择功能.勾选了的项就会进入到另一个框中. 时空穿梭框之旅 示例演示: 这个时空穿梭框实现了: 1.可以全选.反选 2.没有选中时,不可以 ...

  3. 【BZOJ】3434: [Wc2014]时空穿梭

    http://www.lydsy.com/JudgeOnline/problem.php?id=3434 题意:n维坐标中要找c个点使得c个点在一条线上且每一维的坐标单调递增且不能超过每一维限定的值m ...

  4. BZOJ 3434 [WC2014]时空穿梭 (莫比乌斯反演)

    题面:BZOJ传送门 洛谷传送门 好难啊..反演的终极题目 首先,本题的突破口在于直线的性质.不论是几维的空间,两点一定能确定一条直线 选取两个点作为最左下和最右上的点! 假设现在是二维空间,选取了$ ...

  5. UOJ#54 BZOJ3434 [WC2014]时空穿梭

    题目描述 小 X 驾驶着他的飞船准备穿梭过一个 \(n\) 维空间,这个空间里每个点的坐标可以用 \(n\) 个实数表示,即 \((x_1,x_2,\dots,x_n)\). 为了穿过这个空间,小 X ...

  6. BZOJ3434 [Wc2014]时空穿梭

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  7. BZOJ3434 WC2014时空穿梭(莫比乌斯反演)

    考虑枚举相邻点距离差的比例.显然应使比例值gcd为1以保证不重复统计.确定比例之后,各维坐标的方案数就可以分开考虑.设比例之和为k,则若坐标上限为m,该维坐标取值方案数即为Σm-ki (i=1~⌊m/ ...

  8. [WC2014]时空穿梭(莫比乌斯反演)

    https://www.cnblogs.com/CQzhangyu/p/7891363.html 不难推到$\sum\limits_{D=1}^{m_1}\sum\limits_{d|D}C_{d-1 ...

  9. UOJ 54 【WC2014】时空穿梭——莫比乌斯反演

    题目:http://uoj.ac/problem/54 想写20分. Subtask 2 就是枚举4个维度的值的比例,可算对于一个比例有多少个值可以选,然后就是组合数.结果好像不对. 因为模数太小,组 ...

随机推荐

  1. sql 索引创建

    --格式 --CREATE [索引类型] INDEX 索引名称--ON 表名(列名)--WITH FILLFACTOR = 填充因子值0~100--GO ----------------------- ...

  2. AR 应收 表

    AR 应收 应收事务处理相关表 SELECT * FROM ar.ar_batches_all;                  --事务处理批 SELECT * FROM ar.ra_custom ...

  3. bootstrap, boosting, bagging 几种方法的联系

    http://blog.csdn.net/jlei_apple/article/details/8168856 这两天在看关于boosting算法时,看到一篇不错的文章讲bootstrap, jack ...

  4. PAT乙级 1010. 一元多项式求导 (25)

    1010. 一元多项式求导 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 设计函数求一元多项式的导数.(注:xn(n为整数)的一 ...

  5. JSP-04- 实现数据的保存

    .1  Session 一段时间内,单个客户与Web服务器的一连串相关的交换过程. Ø  4.1.1  应用的场景: 用户登录后保存用户状态 确定用户的唯一   Sessin.getId(); Ø  ...

  6. 0-9、a-z、A-Z 随机数

    MXS&Vincene  ─╄OvЁ  &0000006 ─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...

  7. viewpager+fragment+HorizontalScrollView详细版

    XML布局 <HorizontalScrollView            android:id="@+id/hsv"            android:layout_ ...

  8. :root

    概述 选择该文档的根元素. 在HTML中,文档的根元素,和$(":root")选择的元素一样, 永远是<html>元素. 示例 设置<html>背景颜色为黄 ...

  9. top.location.href和localtion.href有什么不同

    top.location.href=”url”          在顶层页面打开url(跳出框架) self.location.href=”url”         仅在本页面打开url地址 pare ...

  10. Http的常见问题

    A: HTTP(超文本传输协议)是一个基于请求与响应模式的.无状态的.应用层的协议. B: 文件传输协议FTP.电子邮件传输协议SMTP.域名系统服务DNS.HTTP协议等都同是应用层协议. C:HT ...