你的组合数学学得怎样? 
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB
Total submit users: 151, Accepted users: 119
Problem 11547 : No special judgement
Problem description
  小明和小红总是喜欢在一起玩。一天。他们又在一起愉快的玩耍了一个下午。到了吃晚饭的时间,他们决定用抛硬币的方法来决定谁请吃晚餐。 

规则非常easy,他们抛一枚均匀的硬币N次。假设出现连续两次或很多其它正面朝上的情况。那么就是小红请,否则就是小明请。 

如今小明想知道。抛N次的全部情况下,会有多少次不出现连续两次正面或很多其它正面朝上的情况
Input
  有多组測试数据,请处理到文件结束。

每组測试数据仅包括一个数N(1 <= N <= 1000)。表示抛掷的次数。
Output
  每组数据输出一行,格式为Case #k: Ans, k从1開始, Ans表示答案.

因为答案可能会非常大,输出Ans % (10^9 + 7)就可以.
Sample Input
1
2
Sample Output
Case #1: 2
Case #2: 3
Problem Source
  HUNNU Contest 

解析:比較简单的DP。从左向右一个一个连续着放,dp[X][Y]表示到第X个硬币的时候Y状态的方案数,Y=0表示x左边那个不是正面的,Y=1表示x左边那个是正面

假设左边不是正面,那么当前放正面的就把方案数加到Y=1里面,放反面的就加到Y=0

假设是正面。那么当前放正面就不成立了,所以不用加。放反面就加到Y=0里面去

递推公式:

dp[i][0]= ( dp[i-1][0] + dp[i-1][1] )%mod;

dp[i][1]= dp[i-1][0] %mod;

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#define mod 1000000007
using namespace std;
int main()
{
    int n,i,j,k,l=1;
    int dp[1111][2];
    while(cin>>n)
    {
        memset(dp,0,sizeof(dp));
        dp[0][0]=1;
        for(i=1;i<=n;i++)//从1到n位置一个一个位置去考虑硬币的正反
        {
            dp[i][0]=(dp[i-1][0]+dp[i-1][1])%mod;
            dp[i][1]=dp[i-1][0]%mod;
        }
        cout<<"Case #"<<l++<<": "<<(dp[n][0]+dp[n][1])%mod<<endl;
    }
    return 0;
}

hunnu--11547--你的组合数学学得怎样?的更多相关文章

  1. hunnu---11547 你的组合数学学得如何?

    解析:比较简单的DP,从左向右一个一个连续着放,dp[X][Y]表示到第X个硬币的时候Y状态的方案数,Y=0表示x左边那个不是正面的,Y=1表示x左边那个是正面 如果左边不是正面,那么当前放正面的就把 ...

  2. LCM性质 + 组合数 - HDU 5407 CRB and Candies

    CRB and Candies Problem's Link Mean: 给定一个数n,求LCM(C(n,0),C(n,1),C(n,2)...C(n,n))的值,(n<=1e6). analy ...

  3. 计算一维组合数的java实现

    背景很简单,就是从给定的m个不同的元素中选出n个,输出所有的组合情况! 例如:从1到m的自然数中,选择n(n<=m)个数,有多少种选择的组合,将其输出! 本方案的代码实现逻辑是比较成熟的方案: ...

  4. Noip2016提高组 组合数问题problem

    Day2 T1 题目大意 告诉你组合数公式,其中n!=1*2*3*4*5*...*n:意思是从n个物体取出m个物体的方案数 现给定n.m.k,问在所有i(1<=i<=n),所有j(1< ...

  5. C++单元测试 之 gtest -- 组合数计算.

    本文将介绍如何使用gtest进行单元测试. gtest是google单元测试框架.使用非常方便. 首先,下载gtest (有些google项目包含gtest,如 protobuf),复制目录即可使用. ...

  6. NOIP2011多项式系数[快速幂|组合数|逆元]

    题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k , ...

  7. AC日记——组合数问题 落谷 P2822 noip2016day2T1

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  8. 【板子】gcd、exgcd、乘法逆元、快速幂、快速乘、筛素数、快速求逆元、组合数

    1.gcd int gcd(int a,int b){ return b?gcd(b,a%b):a; } 2.扩展gcd )extend great common divisor ll exgcd(l ...

  9. 【BZOJ-4591】超能粒子炮·改 数论 + 组合数 + Lucas定理

    4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 95  Solved: 33[Submit][Statu ...

随机推荐

  1. vnc viewer中开启剪切板复制内容到ubuntu系统中

    说明,本机是ubuntu16,安装的vnc server 是x11vnc,具体安装方法请看之前博文.ubuntu16.4中开启vncserver进行远程桌面 vncviewer on Windows ...

  2. Jeecg 如何执行批量insert或者update操作,高效率

    方法:org.jeecgframework.core.common.dao.jdbc.SimpleJdbcTemplate.batchUpdate     原理: 基于springjdbc封装,批量提 ...

  3. 帆软报表和jeecg的进一步整合--ajax给后台传递map类型的参数

    下面是页面代码: <%@ page language="java" contentType="text/html; charset=UTF-8" page ...

  4. Redis(五):几个常用概念

    1.Redis 默认有16384 solts(槽),每个槽可以存储多个hash值. 2.Redis 默认不需要密码: 2.1 注释去掉,设置自己的密码 3.设置密码后需要通过 3.1 -h 主机ip ...

  5. webservice快速入门-使用JAX-WS注解的方式快速搭建ws服务端和客户端(一)

    1.定义接口 package org.WebService.ws.annotation; import javax.jws.WebService; @WebService public interfa ...

  6. Qt 自学QGraphicsItem要点 积累

    1.在创建QGraphicsItem子类的时候,想要实现自己绘图,一般是重新实现boundingRect()和paint()函数,如果不重新实现shape(),基类的实现将会退而使用 bounding ...

  7. 黑马day16 jquery案例演示

    案例一: <html> <head> <meta http-equiv="Content-Type" content="text/html; ...

  8. intercepting IO request

    Introduction to File System Filters https://msdn.microsoft.com/en-us/library/windows/hardware/dn6416 ...

  9. python(25):Unicode 转成中文

    代码转换如下: if __name__ == "__main__": data = "\u5c71\u5cb3\u548c\u4e00\u5207\u4e18\u9675 ...

  10. MySQL PLSQL Demo - 001.创建、调用、删除过程

    drop procedure if exists p_hello_world; create procedure p_hello_world() begin select sysdate(); end ...