• POJ3046ANT_COUNTING


    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <cctype>
    #include <algorithm>
    #include <string>
    #include <vector>
    #include <queue>
    #include <list>
    #include <set>
    #include <stack>
    #include <map>
    
    using namespace std;
    const int MAX_A = 100002;
    const int MAX_T = 1002;
    int T, A, S, B;
    int a[MAX_T];
    int dp[2][MAX_A];
    const int MOD = 1e6;
    
    int main(void)
    {
        cin>>T>>A>>S>>B;
        //输入组别的数量、蚂蚁的数量、起始的地方、终止的地方
        int x;
        for(int i = 0; i < A; i++){
            scanf("%d", &x);     //组的编号其实是 0 到 T - 1
            a[x-1]++;
        }
        //UNIT OPTION
        memset(dp, 0, sizeof(dp));
        for(int i = 0; i <= a[0]; i++)  dp[0][i] = 1;
        // END OF INIT
        for(int i = 1; i < T; i++){
            if(i & 1){
                memset(dp[1], 0, sizeof(dp[1]));
                for(int j = 0; j <= B; j++){
                    for(int k = 0; k <= a[i] && k <= j; k++){
                        dp[1][j] += dp[0][j-k], dp[1][j] %= MOD;
                    }
                }
            }
            else{
                memset(dp[0], 0, sizeof(dp[0]));
                for(int j = 0; j <= B; j++){
                    for(int k = 0; k <= a[i] && k <= j; k++){
                        dp[0][j] += dp[1][j-k], dp[0][j] %= MOD;
                    }
                }
            }
        }
        int res = 0;
      //  printf("SHOW THE TMEP
    ");
        if((T - 1) & 1){
         //   for(int i = 0; i < S; i++)  printf(" i  %d : %d
    ", i, dp[1][i]);
            for(int i = S; i <= B; i++){
         //       printf(" i  %d : %d
    ", i, dp[1][i]);
                res += dp[1][i];
                res %= MOD;
            }
        }
        else{
          //  for(int i = 0; i < S; i++)  printf(" i  %d : %d
    ", i, dp[0][i]);
            for(int i = S; i <= B; i++){
         //       printf(" i  %d : %d
    ", i, dp[0][i]);
                res += dp[0][i];
                res %= MOD;
            }
        }
     //   printf("THE RESULT :   ");
        printf("%d
    ", res);
        return 0;
    }

    注意  剩余 后 6 位; 然后你需要 MOD 1E6; 并不是 1E7 !!!!!!!!

  • 相关阅读:
    JVM(5)之 GC之标记
    JVM(4)之 使用MAT排查堆溢出
    JVM(3) 之 内存分配与回收策略
    JVM(2)之 JAVA堆
    JVM(1)之 JAVA栈
    MySQL查询时报错Illegal mix of collations
    struts2 基础学习
    python3.4 + pycharm安装与使用
    Pycharm激活
    IntelliJ IDEA 2018.2激活
  • 原文地址:https://www.cnblogs.com/lucky-light/p/11508902.html
Copyright © 2020-2023  润新知