zoukankan      html  css  js  c++  java
  • 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 !!!!!!!!

  • 相关阅读:
    利用python在windows环境下爬取赶集网工作信息。
    扔骰子
    python 输入英语单词,查看汉语意思
    获取指定日期的上一个月日期
    爬取代理IP,并判断是否可用。
    递归实现 十进制转换其他进制(2-16)
    特殊回文数
    python 实现无序列表
    python 实现剪刀石头布(三局两胜)
    python 实现简单语音聊天机器人
  • 原文地址:https://www.cnblogs.com/lucky-light/p/11508902.html
Copyright © 2011-2022 走看看