题目链接: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][j] += dp[i][j] (不选)

    dp[i+1][(j+r[i])%f] += dp[i][j] (选)

  边界条件:

    dp[0][0] = 1 (什么都不选也是一种方案)

    others = 0

AC Code:

  1. // state expression:
  2. // dp[i][j] = num of ways
  3. // i: considering ith cow
  4. // j: sum MOD f == j
  5. //
  6. // find the answer:
  7. // dp[n][0]
  8. //
  9. // transferring:
  10. // now: dp[i][j]
  11. // dp[i+1][j] += dp[i][j]
  12. // dp[i+1][(j+r[i])%f] += dp[i][j]
  13. //
  14. // boundary:
  15. // dp[0][0] = 1
  16. // others = 0
  17. #include <iostream>
  18. #include <stdio.h>
  19. #include <string.h>
  20. #define MAX_N 2005
  21. #define MAX_F 1005
  22. #define MOD 100000000
  23.  
  24. using namespace std;
  25.  
  26. int n,f;
  27. int r[MAX_N];
  28. int dp[MAX_N][MAX_F];
  29.  
  30. void read()
  31. {
  32. cin>>n>>f;
  33. for(int i=;i<n;i++)
  34. {
  35. cin>>r[i];
  36. }
  37. }
  38.  
  39. void solve()
  40. {
  41. memset(dp,,sizeof(dp));
  42. dp[][]=;
  43. for(int i=;i<n;i++)
  44. {
  45. for(int j=;j<f;j++)
  46. {
  47. dp[i+][j]=(dp[i+][j]+dp[i][j])%MOD;
  48. dp[i+][(j+r[i])%f]=(dp[i+][(j+r[i])%f]+dp[i][j])%MOD;
  49. }
  50. }
  51. }
  52.  
  53. void print()
  54. {
  55. cout<<((dp[n][]-)%MOD+MOD)%MOD<<endl;
  56. }
  57.  
  58. int main()
  59. {
  60. read();
  61. solve();
  62. print();
  63. }

BZOJ 3400 [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队:dp【和为f的倍数】的更多相关文章

  1. BZOJ 3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 动态规划

    3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=34 ...

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

    Description     农夫顿因开始玩飞盘之后,约翰也打算让奶牛们享受飞盘的乐趣.他要组建一只奶牛飞盘 队.他的N(1≤N≤2000)只奶牛,每只部有一个飞盘水准指数Ri(1≤Ri≤10000 ...

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

    3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 129  Solv ...

  4. 【BZOJ】3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3400 既然是倍数我们转换成mod.. 设状态f[i][j]表示前i头牛modj的方案 那么答案显然是 ...

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

    3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 89  Solve ...

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

    太水了,背包DP. (转载请注明出处:http://www.cnblogs.com/Kalenda/) ; var n,f,i,j,ans,t,tt:longint; q:array[..] of l ...

  7. USACO Cow Frisbee Team

    洛谷 P2946 [USACO09MAR]牛飞盘队Cow Frisbee Team 洛谷传送门 JDOJ 2632: USACO 2009 Mar Silver 2.Cow Frisbee Team ...

  8. DP经典 BZOJ 1584: [Usaco2009 Mar]Cleaning Up 打扫卫生

    BZOJ 1584: [Usaco2009 Mar]Cleaning Up 打扫卫生 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 419  Solve ...

  9. Bzoj 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 动态规划

    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1006  Solved: ...

随机推荐

  1. Android 百度地图开发(二)

    这一篇文章主要解说的是百度地图的定位功能,然后还有MyLocationOverlay和PopupOverlay两个地图覆盖物的使用.Overlay是"图层"或"覆盖物&q ...

  2. Archlinux 下的 VMWare Workstation 维护笔记

    印象中 Archlinux 下的 VMWare Workstation 总是出问题, 因此写这个帖子, 记录出问题时间/原因/解决方案. PS: 每次更新内核后可能需要重新编译 vmware 的内核模 ...

  3. 【Excle数据透透视表】如何删除数据透视表

    选中区域A4:C17,在键盘上按DELETE键删除,结果提示: 那么如何删除呢? 解决方案 选中整个数透视表,再删除 具体操作: 选中整个数据透视表→DELETE 注意:删除之后,源数据不会受到影响

  4. 【DB2】DB2使用IMPORT命令导入含有自增长列的表报错处理

    1.启动数据库:db2start 2.创建数据库:create db TestDB using codeset gbk territory CN  collate using identity 3.连 ...

  5. 【阿里云】Windows2008 FTP配置指南

    云服务器默认使用Windws 2008 IIS 中自带的FTP服务器.    1.添加FTP帐号    A. 选择[服务管理器]--[配置]--[本地用户和组]--[用户]:在空白处右键选择[新用户] ...

  6. Minify把CSS和JS压缩和削减

    Minify把CSS和JS压缩和削减(Minify:去掉空格回车符等),以及把多个CSS,JS文件整合到一个文件里.不要以为你的大带宽没有必要进行这类优化.使用它的理由更重要的是文件合并,而不是压缩, ...

  7. mysql中把空值放在最后,有值的数据放在前面

    order by column is null,column; 如果:order by column,则column中空值的数据放在最前面,有数据的放在后面

  8. gitlab多人协同工作

    gitlab多人协同工作 本文为亨利向<Git权威指南>的作者蒋鑫老师的答疑邮件写成. 这里特别感谢蒋鑫老师对我询问gitlab的协同工作流程问题的详细解答. 蒋鑫老师的细致专业的解答让我 ...

  9. 将web工程部署到tomcat

    http://blog.csdn.net/lucklq/article/details/7621807 http://jingyan.baidu.com/article/466506582f2f4af ...

  10. JAVA中两个Set比较找出交集、差集、并集

    当做到某些功能的时候,使用Set能够快速方便地将需要的类型以集合类型保存在一个变量中,Set是最简单的一种集合,集合中的对象不按特定的方式排序,并且没有重复对象. //两个Set比较找出交集.差集.并 ...