首页 > 其他分享 >飞盘队/糖果

飞盘队/糖果

时间:2023-11-25 09:44:17浏览次数:34  
标签:飞盘 int 能力 队伍 2005 奶牛 糖果

SFZOJ 1008

老唐最近迷上了飞盘,约翰想和他一起玩,于是打算从他家的 N 头奶牛中选出一支队伍。

每只奶牛的能力为整数,第 i 头奶牛的能力为Ri 。飞盘队的队员数量不能少于 1、大于N。一支队伍的总能力就是所有队员能力的总和。

约翰比较迷信,他的幸运数字是 F,所以他要求队伍的总能力必须是 F的倍数。请帮他

算一下,符合这个要求的队伍组合有多少?由于这个数字很大,只要输出答案对 10^8取模的值。

刷表法

#include <bits/stdc++.h>
#define MOD 100000000
using namespace std;
int n, a[2005], k, f[2005][1000];
int main() {
    scanf("%d%d", &n, &k);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);

    f[0][0] = 1;
    for (int i = 0; i <= n; i++) {
        for (int j = 0; j < k; j++) {
            f[i + 1][(j + a[i + 1]) % k] += f[i][j];
            f[i + 1][(j + a[i + 1]) % k] %= MOD;
            f[i + 1][j] += f[i][j];
            f[i + 1][j] %= MOD;
        }
    }

    printf("%d\n", f[n][0] - 1);
    return 0;
}
/*
f[][2 + 3] (2+3)%3 = 2
f[][5 + 3] (5+3)%3 = 2

4 5
1 2 8 2
   0  1  2  3  4  5  6  7  8  9  10
0  1
1  1  1
2  1     1  1
3  1
4  1

*/

填表法

#include <bits/stdc++.h>
#define MOD 100000000
using namespace std;
int n, a[2005], k, f[2005][1000];
int main() {
    scanf("%d%d", &n, &k);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);

    f[0][0] = 1;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < k; j++) {
            (f[i + 1][(j + a[i + 1]) % k] += f[i][j]) %= MOD;
            (f[i + 1][j] += f[i][j]) %= MOD;
        }
    }

    printf("%d\n", f[n][0] - 1);
    return 0;
}
/*
f[][2 + 3] (2+3)%3 = 2
f[][5 + 3] (5+3)%3 = 2

4 5
1 2 8 2
   0  1  2  3  4  5  6  7  8  9  10
0  1
1  1  1
2  1     1  1
3  1
4  1

*/

 

标签:飞盘,int,能力,队伍,2005,奶牛,糖果
From: https://www.cnblogs.com/caterpillor/p/17855207.html

相关文章

  • 【算法基础】贪心算法 LeetCode 135. 分发糖果
    分发糖果题目介绍n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。测试用......
  • 代码随想训练营第三十四天(Python)| 1005.K次取反后最大化的数组和、134. 加油站、135.
    1005.K次取反后最大化的数组和classSolution:deflargestSumAfterKNegations(self,nums:List[int],k:int)->int:nums.sort(key=lambdax:abs(x),reverse=True)foriinrange(len(nums)):ifnums[i]<0andk>0:......
  • 分糖果
    题目:小明从糖果盒中随意抓一把糖果;每次小明会取出一半的糖果分给同学们。当糖果不能平均分配时;小明可以选择从糖果盒中,假设盒中糖果足够;取出一个糖果或放回一个糖果。小明最少需要多少次;取出、放回和平均分配均记一次;能将手中糖果分至只剩一颗。输入15,输出5,过程:(1)15+1=16(2......
  • Luogu P8518 [IOI2021] 分糖果
    题目链接 做这道题本意是为了补CCPC秦皇岛热身赛C,也就是2022CCPC华为云计算挑战赛 机器人那题先考虑一个盒子怎么做,并且不考虑限制那样的话可以得到时刻和盒子内球的数量的图像,考虑由这个不加限制的图像推出加上限制的实际答案完整的图像一定是极大值极小值交错,考虑两个相......
  • Steam糖果派对新作《鼠托邦》BBGAMES建设老鼠王国的战略模拟电子游戏
    游戏《鼠托邦Ratopia》由独.立游戏开发团队CasselGames精心打造,将在11月6日起BBIN游戏抢先体验测试。在这款游戏中,您将化身为糖果派对游戏中的老鼠女王,领您的老鼠民众建设城市、勘探地.下领域以扩展生存空间。同时,您有机会根据不同老鼠市民的性格和技能,智慧地分配工作,依靠整......
  • 分发糖果
    题目n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到1个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的最少糖果数目示例1:输入:ratings=......
  • 公平的糖果交换
    爱丽丝和鲍勃拥有不同总数量的糖果。给你两个数组 aliceSizes 和 bobSizes ,aliceSizes[i] 是爱丽丝拥有的第 i 盒糖果中的糖果数量,bobSizes[j] 是鲍勃拥有的第 j 盒糖果中的糖果数量。两人想要互相交换一盒糖果,这样在交换之后,他们就可以拥有相同总数量的糖果。一个人拥......
  • 2023牛客OI赛前集训营-提高组(第三场)C.分糖果
    2023牛客OI赛前集训营-提高组(第三场)C.分糖果目录2023牛客OI赛前集训营-提高组(第三场)C.分糖果题目大意做法对于\(30pts\)对于\(20pts\)对于\(100pts\)C-分糖果_2023牛客OI赛前集训营-提高组(第三场)(nowcoder.com)题目大意求前\(i(i\in[1,n])\)个数分成\(k\)个连续的区......
  • 糖果传递
    P2512[HAOI2008]糖果传递#include<cstdio>#include<algorithm>#include<cmath>usingnamespacestd;#defineEdfor(inti=h[x];~i;i=ne[i])#defineLs(i,l,r)for(inti=l;i<r;++i)#defineRs(i,l,r)for(inti=l;i>r;--i)#defineLe(i,l,r)......
  • leet code 888.公平的糖果交换
    888.公平糖果交换题目解析题目中给定了两个数组,而并没有明确给定数组是否已经排序,所以需要先对目标数组进行排序然后需要计算两个数组的差值,从而确定哪一方交换出更多的糖果,即爱丽丝或鲍勃那一方付出更多的糖果假设其中一方需要付出较多的糖果数量记为另一方需要付出较少的糖......