链接:

https://www.acwing.com/problem/content/273/

题意:

杨老师希望给他的班级拍一张合照。

学生们将站成左端对齐的多排,靠后的排站的人数不能少于靠前的排。

例如,12名学生(从后向前)可以排列成每排5,3,3,1人,如下所示:

X X X X X

X X X

X X X

X

同时,杨老师希望同行学生身高从左到右依次降低,同列学生身高从后向前依次降低。

还以12名学生为例,给学生们编号(号码越小代表身高越高)后,按照此规则可进行如下两种安排:

1 2 3 4 5 1 5 8 11 12

6 7 8 2 6 9

9 10 11 3 7 10

12 4

杨老师希望知道给定每排的人数,在满足规则的情况下,一共能有多少种位置安排。

例如,规定一共三排,每排3,2,1人,则共有16种安排方法如下:

123 123 124 124 125 125 126 126 134 134 135 135 136 136 145 146

45 46 35 36 34 36 34 35 25 26 24 26 24 25 26 25

6 5 6 5 6 4 5 4 6 5 6 4 5 4 3 3

现在请你编写一个程序,确定在给定每排人数的情况下,不同安排的数量。

思路:

建立DP[i][j][k][l][m],表示每一行站了i,j,k,l,m个人时的排列种数.

可以有第一行开始往后推,当某行人数少一个时依然大于等于前一行就可以将少一个人的状态转移过来.

注意输入是从后往前输入的

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL; LL Dp[35][35][35][35][35];
int a[10];
int k; int main()
{
while (~scanf("%d", &k) && k)
{
memset(a, 0, sizeof(a));
memset(Dp, 0, sizeof(Dp));
for (int i = k;i >= 1;--i)
scanf("%d", &a[i]);
Dp[0][0][0][0][0] = 1;
for (int i = 0;i <= a[1];i++)
{
for (int j = 0;j <= a[2];j++)
for (int x = 0;x <= a[3];x++)
for (int y = 0;y <= a[4];y++)
for (int z = 0;z <= a[5];z++)
{
if (i-1 >= 0)
Dp[i][j][x][y][z] += Dp[i-1][j][x][y][z];
if (j-1 >= 0 && j-1 >= i)
Dp[i][j][x][y][z] += Dp[i][j-1][x][y][z];
if (x-1 >= 0 && x-1 >= j)
Dp[i][j][x][y][z] += Dp[i][j][x-1][y][z];
if (y-1 >= 0 && y-1 >= x)
Dp[i][j][x][y][z] += Dp[i][j][x][y-1][z];
if (z-1 >= 0 && z-1 >= y)
Dp[i][j][x][y][z] += Dp[i][j][x][y][z-1];
// cout << Dp[i][j][x][y][z] << endl;
}
}
printf("%lld\n", Dp[a[1]][a[2]][a[3]][a[4]][a[5]]);
} return 0;
}

Acwing-271-杨老师的照相排列(DP)的更多相关文章

  1. 271. 杨老师的照相排列【线性DP】

    杨老师希望给他的班级拍一张合照. 学生们将站成左端对齐的多排,靠后的排站的人数不能少于靠前的排. 例如,12名学生(从后向前)可以排列成每排5,3,3,1人,如下所示: X X X X X X X X ...

  2. 题解【AcWing271】杨老师的照相排列

    题面 经典的线性 \(\text{DP}\) . 设 \(dp_{a,b,c,d,e}\) 表示第 \(1\) 排有 \(a\) 个人,第 \(2\) 排有 \(b\) 个人, 第 \(3\) 排有 ...

  3. 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)C 勤奋的杨老师【DP/正反LIS/类似合唱队形】

    链接:https://www.nowcoder.com/acm/contest/116/C 来源:牛客网 题目描述 杨老师认为他的学习能力曲线是一个拱形.勤奋的他根据时间的先后顺序罗列了一个学习清单, ...

  4. 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)- 勤奋的杨老师(最长递增子序列)

    链接:https://www.nowcoder.com/acm/contest/116/C来源:牛客网 题目描述 杨老师认为他的学习能力曲线是一个拱形.勤奋的他根据时间的先后顺序罗列了一个学习清单,共 ...

  5. COJ 0500 杨老师的路径规划(MST)最小生成树

    杨老师的路径规划(MST) 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 为满足同学们需求,杨老师在实验楼4层新建了好多个计算 ...

  6. Final互评------《弹球学成语》---- 杨老师粉丝群

    一.基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题;  N(Need,需求):本产品面相青少年及小学生,基于这些用户数量再加上一些休闲玩家,需求量还是比较大的.   A ...

  7. Final版本互评——杨老师粉丝群《PinBall》

    基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 随着民族自信的觉醒,民主文化越来越受到重视,语文在高考中的比重也不断增加,在这种大环境下,成 ...

  8. 互评Beta版本——杨老师粉丝群——Pinball

    互评beta版本    杨老师粉丝群——<PinBall> 一.基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 随着年龄的增长, ...

  9. 互评Alpha版本——杨老师粉丝群——Pinball

    一.基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 成语学习对除汉语言专业外的大学生的需求并不是很高,初中生和高中生因为在升学时需要参加语文 ...

随机推荐

  1. DIN

    1. DIN(Deep Interest Network)优点 使用用户兴趣分布来表示用户多种多样的兴趣爱好. 使用Attention机制来实现Local Activation,局部激活相关的历史兴趣 ...

  2. 第五次java实验报告

    Java实验报告 班级 计科二班 学号 20188437 姓名 何磊 完成时间2019/10/10 评分等级 实验四 类的继承 实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法. 实 ...

  3. [爬虫] selenium介绍

    认识selenium 在爬取百度文库的过程中,我们需要使用到一个工具selenium(浏览器自动测试框架),selenium是一个用于web应用程序测试的工具,它可以测试直接运行在浏览器中,就像我们平 ...

  4. 小记---------spark架构原理&主要组件和进程

    spark的主要组件和进程       driver (进程):     我们编写的spark程序就在driver上,由driver进程执行       master(进程):     主要负责资源的 ...

  5. List是有序的Set是无序的吗? List和Set对比

    import java.util.*; /* * List和Set对比 * */ public class ListVSSet { public static void main(String[] a ...

  6. VMware Workstation改动存储位置之后,软件变成全英文,修改成中文的方法

    今天想改动一下VMware Workstation的位置  改动之后打开软件,本来的中文改成了英文,整了很长时候,最后发现是因为改动一下位置之后,虽然zh_CN语言包还在,但是Vmware找不到本来的 ...

  7. 部署master节点组件

    部署master节点组件 master节点的组件有:kube-apiserver,kube-scheduler,kube-controller-manager 大致安装步骤如下: # mkdir -p ...

  8. springboot(十九)-线程池的使用

    我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行. 话不多说,编码开始: 1.创建spri ...

  9. python cv2截取不规则区域图片

    知识掌握 cv2.threshold()函数: 设置固定级别的阈值应用于多通道矩阵,将灰度图像变换二值图像,或去除指定级别的噪声,或过滤掉过小或者过大的像素点. Python: cv2.thresho ...

  10. idea中 参数没有描述报错 @param XX tag description is missing错误,去除黄色警告

    最近在使用idea开发工具,在方法备注中参数没有描述报错就会报一些黄色警告: @param XX tag description is missing,下面展示去除黄色警告的方法 File--sett ...