题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1297

题目大意:

有n个同学, 站成一排, 要求 女生最少是两个站在一起, 问有多少种排列方式。

题目分析:

1.  假设第n个学生是个男生, 我们可以直接将他放在最后有 dp[n-1]种

即: ...............M   dp[n-1]

2.假设第n个放女生,要求两个女生在一起, 我们可以直接在最后放两个女生

即: .............FF    dp[n-2]

3.假设我们后面放两个女生, 但之前的序列最后两个是 一个男生+一个女生即: ...........MF 序列

明显是不合法的, 但是我们后面要是再加上两个 女生就能使这个原来不合法的序列变的合法

即 ................MF FF dp[n-4]

综上:我们的递推式子为:  dp[n]  = dp[n-1] + dp[n-2] + dp[n-4];

因为数据量为1000 所以我们用大数来进行运算

#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <stack>
#include <algorithm>
#include <vector>
#include <string>
#include <cmath>
using namespace std;
const long long maxn =;
const long long INF = 0xfffffff;
int dp[maxn][maxn];
void Slove()
{
dp[][] = ;
dp[][] = ;
dp[][] = ;
dp[][] = ;
for(int i=; i<maxn; i++)
{
for(int j=; j < maxn; j++)
{
dp[i][j] += dp[i-][j] + dp[i-][j] + dp[i-][j];
dp[i][j+] += dp[i][j]/;
dp[i][j] %= ;
}
}
} void Putt(int n)
{
int i;
for(i = maxn - ; i >= ; i--)
if(dp[n][i])
break; for(; i>; i--)
printf("%d",dp[n][i]);
printf("%d\n",dp[n][i]);
}
int main()
{
int n;
Slove();
while(cin >> n)
{
Putt(n);
}
return ;
}

Children’s Queue HDU 1297 递推+大数的更多相关文章

  1. Children’s Queue(hdu1297+递推)

    Children’s Queue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...

  2. Buy the Ticket HDU 1133 递推+大数

    题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=1133 题目大意: 有m+n个人去买电影票,每张电影票50元,  m个人是只有50元一张的,  n个人 ...

  3. hdu 1041(递推,大数)

    Computer Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/ ...

  4. HDOJ(HDU).2044-2049 递推专题

    HDOJ(HDU).2044-2049 递推专题 点我挑战题目 HDU.2044 题意分析 先考虑递推关系:从1到第n个格子的时候由多少种走法? 如图,当n为下方格子的时候,由于只能向右走,所以有2中 ...

  5. codeforces D. Queue 找规律+递推

    题目链接: http://codeforces.com/problemset/problem/353/D?mobile=true H. Queue time limit per test 1 seco ...

  6. "红色病毒"问题 HDU 2065 递推+找循环节

    题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=2065 递推类题目, 可以考虑用数学方法来做, 但是明显也可以有递推思维来理解. 递推的话基本就是状态 ...

  7. HDU 2842 (递推+矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...

  8. Tiling(递推+大数)

    Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles? Here is a sample tili ...

  9. HDU 3123-GCC(递推)

    GCC Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Subm ...

随机推荐

  1. rpc远程过程协议调用

    在linux 5.X以及下的版本你可以通过service portmap status命令查看rpc是否启动.如果提示running,表示正在运行:如果提示stop就是关闭了.如果没有安装,则通过安装 ...

  2. 细说Lucene源码(一):索引文件锁机制

    大家都知道,在多线程或多进程的环境中,对统一资源的访问需要特别小心,特别是在写资源时,如果不加锁,将会导致很多严重的后果,Lucene的索引也是如此,lucene对索引的读写分为IndexReader ...

  3. Android 开源项目android-open-project解析之(三) ScrollView,TimeView,TipView,FlipView

    九.ScrollView Discrollview 支持滚动时Item淡入淡出,平移,缩放效果的ScrollView 项目地址:https://github.com/flavienlaurent/di ...

  4. python运算符使用规律

    #conding=utf-8 #优先级使用规律#1.一般情况下是左右结合print 4+6+5*6+6 #2.出现赋值的时候一般是右结合a=8+91print a #优先级记忆口诀'''函数寻址下标1 ...

  5. ASP.NET数据报表之柱状图 ------工作日志

    #region 柱形色调 /// <summary> /// 柱形色调 /// </summary> private string[] myColor = new string ...

  6. 将从网上下载下来的javaweb项目继续配置

    1.将下载下来的项目,看有没有报错,这里推荐的是不变成web项目的方法,直接通过编译到服务器目录 2.报错的问题,一般是包,服务器的包,(tomcat-home)指向自己的bin目录 3.然后是添加s ...

  7. iOS开发之字典数据建立模型步骤

    1. 在控制器属性的(questions)set方法中完成字典转模型的操作 - (NSArray *)questions { if (nil == _questions) { //1.加载plist文 ...

  8. Java并发编程之CAS

    CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术.简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替 ...

  9. 【USACO 2.1.5】海明码

    [题目描述] 给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B <= 8),使得两两编码之间至少有 D 个 ...

  10. 【USACO 1.4.3】等差数列

    [题目描述] 一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列. 在这个问题中a是一个非负的整数,b是正整数.写一个程序来找出在双平方数集合 ...