解析:比较简单的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;

你的组合数学学得如何? 

Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB
Total submit users: 152, Accepted users: 120
Problem 11547 : No special judgement
Problem description
  小明和小红总是喜欢在一起玩。一天,他们又在一起愉快的玩耍了一个下午,到了吃晚饭的时间,他们决定用抛硬币的方法来决定谁请吃晚餐。 
规则很简单,他们抛一枚均匀的硬币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 
#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[1005][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;
}

转载于:https://www.cnblogs.com/cancangood/p/4563944.html

hunnu---11547 你的组合数学学得如何?相关推荐

  1. 2017.9.12 claris的剑 失败总结

    今天的题怎么都这么难,不是搞常数就是劲逻辑 没想到组合数学学的这么差.连插板法都没有看出来.. 首先两个两个分组(分组的思想很重要) 然后本质不同就利用上了,即选的组数量不同 然后就是枚举所有m,然后 ...

  2. Codeforces Beta Round #95 (Div. 2) 部分解题报告 (dp,组合数,)

    做这样的比赛既考快速编码的能力,还有快速思维的能力.本人很弱,跌了rating..加油!!!.. 第一题上来就把题意理解错了..粗心啊..直接模拟着做就行:1:如果字符串全是大写字母就进行大小写转换: ...

  3. [CQOI2014]数三角形 组合数 + 容斥 + gcd

    推导过程 : 组合数+容斥原理+gcd 正确做法是暴力的一种优化,ans=所有情况 - 平行坐标轴的三点共线 - 斜线三点共线 如果快速求斜线三点共线: 首先要知道一个结论,对于点(a,b) (x,y ...

  4. 多重集表示合json数据_计数DP(划分数,多重集组合数)

    划分数:把n个无区别的物品划分成不超过m组. dp[i][j]=j的i划分的总数. dp[i[j]=dp[i][j-i]+dp[i-1][j] 即:将j个物品分成i份,有两种情况:每份划分都大于等于1 ...

  5. 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...

  6. 自建28核树莓派集群,顺便学学docker,这里有一个500美元的搭建方案

    机器之心编译 机器之心编辑部 撸代码.写博客.动手做点好玩的东西是一个码农常见的进阶方式.很多大牛都有写博客的习惯,动手能力更是不在话下.今天介绍的这位机器学习爱好者 WILL HO 也喜欢写博客,他 ...

  7. [Leetcode] Combinations 组合数

    Combinations Given two integers n and k, return all possible ombinations of k numbers out of 1 ... n ...

  8. 组合数函数-快速提取所有可能的组合数

    组合数:从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数. 代码: str_comb <- function(vector){n <- le ...

  9. 不使用递归求全排列和组合数

    同学遇到的面试问题,大意是M台机器放在N个房间,不使用递归求打印所有情况 解题思路:情况共计N**M种.开始想将所有情况放入数组,填充好数组再逐个打印.随后发现按照填充的思路,不使用大数组也可以实现. ...

最新文章

  1. 如何评价百度造车?字很少,事很大
  2. centos6.5安装mysql8_Centos6.5在线安装mysql 8.0详细教程
  3. java二维数奇数组金字塔_金字塔内发现一组神奇数字 至今无解(图)
  4. Class.getResource()、ClassLoader.getResource()和this.class.getClassLoader()解析
  5. 多个单例模式单例模式的应用
  6. 外国人最常说的100个“中国词”出炉,第一个你绝对想不到…
  7. linux下的一些常见命令学习,学习猿地-Linux下的常见命令总结
  8. c语言 error2050,c语言程序设计20509new.doc
  9. Linux 实用工具vi
  10. PDF转图片文字丢失问题解决
  11. libiconv android编译,NDK编译经常使用开源库-libiconv
  12. 【案例分享】网络环路检测基本功能配置
  13. OpenCv阈值化处理cv2.threshold()函数
  14. IPv6动态地址DNS解析
  15. 关于python的各个常用软件——python、pycharm、anaconda
  16. Chrome浏览器——开发者工具截屏干货
  17. 对猫眼T100进行简单数据分析
  18. 面试说了这几句话,offer铁定无望!
  19. Carrying Conundrum(思维)
  20. pc控制iphone的软件_评论:苹果M1芯片版MacBook和Mac Mini将颠覆整个PC行业?

热门文章

  1. 《MANAGING THE DEVELOPMENT OF LARGE SOFTWARE SYSTEMS》总结
  2. linux 路由 route命令
  3. lo ate my IP address问题解决
  4. LVS、Nginx 及 HAProxy 工作原理
  5. mysql 创建用户权限_10.创建 MySQL 用户及赋予用户权限
  6. 丹鸟快递承诺达到不了怎么办_谈谈2019年快递行业的竞争
  7. python key lambda_使用“key”和lambda表达式的python max函数
  8. AIoT原生技术带来更好的应用开发
  9. 0.3秒定位解剖位置、定位精度提升超2.3%!
  10. 直击阿里新一代数据库技术:如何实现极致弹性能力?