[USACO09MAR]牛飞盘队Cow Frisbee Team

传送门:https://www.luogu.org/problem/P2946

本题类似于01背包,定义  dp[i][j]  表示前  i  个牛,总和取模幸运值为  j  时的数量,a[i]为第j头牛的能力值,很明显dp[i][j]+=dp[i-1][j](不选择第i头牛)+dp[i-1][(j-a[i]+幸运值)%幸运值](选择第i头牛),这样就可以推出dp[n][0]第n头牛时余数为 0  的数量

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,luck;
 4 const int mod=(int)1e8;
 5 int a[2009];
 6 int dp[2009][1009];
 7 inline int read()
 8 {
 9     int x=0,f=1;char ch=getchar();
10     while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
11     while(ch>=‘0‘&&ch<=‘9‘){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
12     return x*f;
13 }
14 int main()
15 {
16     n=read(),luck=read();
17     for(int i=1;i<=n;i++)
18     {
19         a[i]=read();
20         a[i]%=luck;
21         dp[i][a[i]%luck]=1;
22     }
23     for(int i=1;i<=n;i++)
24     {
25         for(int j=0;j<luck;j++)
26         {
27             dp[i][j]=(dp[i-1][j]%mod+dp[i][j]%mod+dp[i-1][(j-a[i]+luck)%luck]%mod)%mod;
28         }
29     }
30     cout<<dp[n][0];
31 }

原文地址:https://www.cnblogs.com/1129-tangqiyuan/p/11600234.html

时间: 2024-08-01 20:05:49

[USACO09MAR]牛飞盘队Cow Frisbee Team的相关文章

P2946 [USACO09MAR]牛飞盘队Cow Frisbee Team

题目描述 After Farmer Don took up Frisbee, Farmer John wanted to join in the fun. He wants to form a Frisbee team from his N cows (1 <= N <= 2,000) conveniently numbered 1..N. The cows have been practicing flipping the discs around, and each cow i has a

牛飞盘队Cow Frisbee Team

老唐最近迷上了飞盘,约翰想和他一起玩,于是打算从他家的N头奶牛中选出一支队伍. 每只奶牛的能力为整数,第i头奶牛的能力为R i .飞盘队的队员数量不能少于 1.大于N. 一支队伍的总能力就是所有队员能力的总和. 约翰比较迷信,他的幸运数字是F,所以他要求队伍的总能力必须是F的倍数.请帮他 算一下,符合这个要求的队伍组合有多少?由于这个数字很大,只要输出答案除以 10^8的余 数就可以了. 输入格式 ?第一行:两个用空格分开的整数:N和F,1≤N≤2000,1≤F≤1000 ?第二行到N+1行:第

3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队

3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 129  Solved: 84[Submit][Status][Discuss] Description 农夫顿因开始玩飞盘之后,约翰也打算让奶牛们享受飞盘的乐趣.他要组建一只奶牛飞盘 队.他的N(1≤N≤2000)只奶牛,每只部有一个飞盘水准指数Ri(1≤Ri≤100000).约翰要选出1只或多于1只奶牛来参加他的

BZOJ3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队

3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 89  Solved: 60[Submit][Status] Description 农夫顿因开始玩飞盘之后,约翰也打算让奶牛们享受飞盘的乐趣.他要组建一只奶牛飞盘 队.他的N(1≤N≤2000)只奶牛,每只部有一个飞盘水准指数Ri(1≤Ri≤100000).约翰要选出1只或多于1只奶牛来参加他的飞盘队.由于约翰的幸

BZOJ(begin) 1375 [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队:dp【和为f的倍数】

题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1375 题意: 给你n个数,你可以从中选任意多个,但不能不选.问你所选数字之和为f的倍数的方案数. 题解: 表示状态: dp[i][j] = num of ways i:考虑到第i个数(还没选) j:之前所选数之和 MOD f == j 找出答案: ans = dp[n][0] - 1 不选也是一种方案,但题目种要求不能不选,所以-1. 如何转移: 选或不选第i个数. dp[i+1][

P3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队

太水了,背包DP. 1 const maxn=100000000; 2 var n,f,i,j,ans,t,tt:longint; 3 q:array[0..3000] of longint; 4 a:array[0..3000,0..2000] of longint; 5 begin 6 readln(n,f); 7 for i:=1 to n do 8 begin 9 readln(q[i]); 10 q[i]:=q[i] mod f; 11 end; 12 a[0,0]:=1; 13 fo

小结:动态规划

概要: 状态.转移:最优子结构.无后效性. 技巧及注意: dp就是纯经验+智商题 在dp方程写出来后,一定要考虑边界!不要以为转移对了就行了! 滚动数组的话一定要考虑好顺序! 下标有时候可以灵活使用!比如mod意义下的dp,倍数什么.可到达性等题目都可以这样做. 如果是线性序列的max{f[k]},k<i这种可以用线段树或bit维护成log 注意“前i”和“第i”的区别(特别对于答案更新),有时换一种就能解答出问题. 在状态加限制条件,如单调.地址等. 用下标来维护下标这个答案是否可达. 博弈论

POJ 1946 Cow Cycling

Cow Cycling Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 2516   Accepted: 1396 Description The cow bicycling team consists of N (1 <= N <= 20) cyclists. They wish to determine a race strategy which will get one of them across the fin

ACM学习历程——UVA540 Team Queue(队列,map:Hash)

Description Team Queue   Team Queue  Queues and Priority Queues are data structures which are known to most computer scientists. The Team Queue, however, is not so well known, though it occurs often in everyday life. At lunch time the queue in front