zoukankan      html  css  js  c++  java
  • UVA 10616 Divisible Group Sums

    UVA_10616

        我们可以用f[i][j][k]表示选到第i个数时一共选了j个数且它们的和模D的值为k,由于第i个数可以选也可以不选,那么就有f[i][j][k]=f[i-1][j][k]+f[i-1][j-1][x],其中x满足0<=x<D且(x+a[i]%D)%D=k,边界为f[0][0][0]=1。

    #include<stdio.h>
    #include<string.h>
    #define MAXN 210
    #define MAXD 30
    #define MAXM 15
    int N, Q, M, D;
    long long int a[MAXN], f[MAXN][MAXM][MAXD];
    void solve()
    {
    int i, j, k, t;
    memset(f, 0, sizeof(0));
    f[0][0][0] = 1;
    for(i = 1; i <= N; i ++)
    for(j = 0; j <= M; j ++)
    for(k = 0; k < D; k ++)
    {
    f[i][j][k] = f[i - 1][j][k];
    if(j)
    {
    t = (D + k - a[i] % D) % D;
    f[i][j][k] += f[i - 1][j - 1][t];
    }
    }
    printf("%lld\n", f[N][M][0]);
    }
    int main()
    {
    int i, j, t = 0;
    for(;;)
    {
    scanf("%d%d", &N, &Q);
    if(!N && !Q)
    break;
    for(i = 1; i <= N; i ++)
    scanf("%lld", &a[i]);
    printf("SET %d:\n", ++ t);
    for(i = 1; i <= Q; i ++)
    {
    scanf("%d%d", &D, &M);
    printf("QUERY %d: ", i);
    solve();
    }
    }
    return 0;
    }


  • 相关阅读:
    Model, View(Camera), Perspective (1)
    流状态和c++的异常处理
    VAO VBO EBO(3)
    VAO VBO EBO(2)
    VAO VBO EBO(1)
    函数指针(2)
    函数指针
    内联函数和宏函数的一些区别
    关于宏的一些知识
    关于未来方向
  • 原文地址:https://www.cnblogs.com/staginner/p/2291386.html
Copyright © 2011-2022 走看看