2015-10-06 19:31:05


n个有标号的球围成一个圈。每个球有两种颜色可以选择黑或白染色。问有多少种方案使得没有出现连续白球7个或连续黑球7个。

每组包含n,表示球的个数。(1 <= n <= 100000)

dp[i][0][x] 表示在第i为填黑色且加上第i位连续的前面有x个黑色的球,dp[i][1][x]表示在第i为填白色且加上第i位连续的前面有x个白色的球

我们只算第一个球为白色,那么最后计算出的个数会等于第一个球去黑色的个数,这个很好理解,只要把他们的颜色相对应的反转一下就好了。然后剩下的好了,

最后的答案 是 dp[n][0-1][1-6] 再减去一些首位连接会超过7个的方案就好了,枚举前几位分别放什么相同的颜色,然后后面减去就好了

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstdio>
  4. #include <string.h>
  5. using namespace std;
  6. const int maxn=;
  7. const int mod=;
  8. int dp[maxn][][];
  9. int solve(int n){
  10. int ans=;
  11. for(int i=;i<(<<n); i++)
  12. {
  13. int hei=,bai=;
  14. int bo=;
  15. for(int j=; j<n; j++){
  16. hei=;bai=;
  17. for(int k=; k<;k++)
  18. if( ( <<((j+k)%n) ) & i )bai++;
  19. else hei++;
  20. if(hei>=||bai>=){
  21. bo=;break;
  22. }
  23. }
  24. if(bo)ans++;
  25. }
  26. return ans%mod;
  27. }
  28. int solve2(int n)
  29. {
  30. int ans=;
  31. for(int i=; i>=; i--)
  32. {
  33. ans=(ans+dp[n][][i]+dp[n][][i])%mod;
  34. }
  35. ans=(ans*)%mod;
  36. for(int i=; i<; i++)
  37. {
  38. for(int j=-i; j<=; j++)
  39. {
  40. ans=(ans-(dp[n-i][][j]+dp[n-i][][j])%mod+mod)%mod;
  41. }
  42. }
  43. return ans;
  44. }
  45. int main()
  46. {
  47. memset(dp,,sizeof(dp));
  48. dp[][][]=;
  49. for(int i=; i<=; i++)
  50. {
  51. for(int j=;j<=;j++)
  52. dp[i][][]=(dp[i-][][j]+dp[i][][])%mod;
  53. for(int k=; k<=; k++)
  54. dp[i][][k]=dp[i-][][k-];
  55. for(int j=; j<=;j++)
  56. dp[i][][]=(dp[i-][][j]+dp[i][][])%mod;
  57. for(int k=; k<=; k++)
  58. dp[i][][k]=dp[i-][][k-];
  59. }
  60. int n;
  61. int cas;
  62. scanf("%d",&cas);
  63. for(int cc=; cc<=cas; cc++)
  64. {
  65. scanf("%d",&n);
  66. if(n<)
  67. {
  68. printf("Case #%d: %d\n",cc,<<n);
  69. }
  70. else if(n<=){
  71. int ans=solve(n);
  72. printf("Case #%d: %d\n",cc,ans);
  73. }else{int d=solve2(n);
  74. printf("Case #%d: %d\n",cc,d);
  75. }
  76. }
  77. return ;
  78. }

fzu2204 dp的更多相关文章

  1. BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 4142  Solved: 1964[Submit][Statu ...

  2. 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...

  3. AEAI DP V3.7.0 发布,开源综合应用开发平台

    1  升级说明 AEAI DP 3.7版本是AEAI DP一个里程碑版本,基于JDK1.7开发,在本版本中新增支持Rest服务开发机制(默认支持WebService服务开发机制),且支持WS服务.RS ...

  4. AEAI DP V3.6.0 升级说明,开源综合应用开发平台

    AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...

  5. BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4026  Solved: 1473[Submit] ...

  6. [斜率优化DP]【学习笔记】【更新中】

    参考资料: 1.元旦集训的课件已经很好了 http://files.cnblogs.com/files/candy99/dp.pdf 2.http://www.cnblogs.com/MashiroS ...

  7. BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9812  Solved: 3978[Submit][St ...

  8. px、dp和sp,这些单位有什么区别?

    DP 这个是最常用但也最难理解的尺寸单位.它与“像素密度”密切相关,所以 首先我们解释一下什么是像素密度.假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则我们可以计算 ...

  9. android px转换为dip/dp

    /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public int dipTopx(Context context, float dpValue) { final floa ...

随机推荐

  1. 查找->静态查找表->分块查找(索引顺序表)

    文字描述 分块查找又称为索引顺序查找,是顺序查找的一种改进方法.在此查找算法中,除表本身外, 还需要建立一个”索引表”.索引表中包括两项内容:关键字项(其值为该字表内的最大关键字)和指针项(指示该子表 ...

  2. Oracle使用par文件进行全库导入导出

    expdp \"/ as sysdba\" PARFILE=/oracle/expdp/AINEWAWARD_20181005.par directory=dumpdir dump ...

  3. Appium入门(7)__Appium Desired Capabilities

    Desired Capabilities 是由多个键值对组成,代表移动设备相关信息.由Appium Client向Appium Server发送. 但无论Appium Client使用何种语言,最终是 ...

  4. ATL Thunk机制深入分析

    如果你有SDK的编程经验,就一定应该知道在创建窗口时需要指定窗口类,窗口类中的一种重要的参数就是窗口过程.任何窗口接收到的消息,都是由该窗口过程来处理. 在面向对象编程中,如果还需要开发人员来使用原始 ...

  5. 配置svn用户及权限

    权限使用的用户名,必须在passwd文件里面存在,权限配置文件的修改立即生效,不必重启SVN: 例如创建一个运维组 用户组格式: [groups] yunwei = ligang,liming 其中, ...

  6. 注意:WordPress栏目别名slug不要设为p

    这几天ytkah接了一个WordPress项目,没用多少时间就搞定了,交付给甲方使用,刚开始还算顺利,突然有一天其中一个栏目及栏目下是文章都无法访问了,出现404页面,其他页面都可以.询问他们最近改动 ...

  7. 利用Linux的硬连接删除MySQL大文件

    利用Linux的硬连接删除MySQL大文件 http://blog.csdn.net/wxliu1989/article/details/22895201 原理:硬链接基础当多个文件共同指向同一ino ...

  8. 用xtrabackup2.4备份mysql5.6.30一直显示log scanned up to

    用xtrabackup2.4备份mysql5.6.30一直显示log scanned up to 一直处于log scanned up to,只能ctrl+c强制终止备份 没有大事务 停止xtraba ...

  9. ionic3 读写权限申请

    This plugin is designed to support Android new permissions checking mechanism. 1.安装插件 $ ionic cordov ...

  10. [py]字符串转换为列表

    字符串转换为列表 "[1,2,3]" ==> [1,2,3]