链接:

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. 机器学习实战笔记——KNN约会网站

    ''' 机器学习实战——KNN约会网站优化 ''' import operator import numpy as np from numpy import * from matplotlib.fon ...

  2. rpm操作

    --查找某个软件:abc rpm -qa |grep abc --删除某个软件:abc rpm -e --noscripts  abc

  3. mint ui解决Navbar和Infinite scroll共存时的bug

    Navbar和Infinite scroll共同使用时会出现无限加载的问题,滑动也会出现乱加载. 只需要判断一下就可以了,代码: html: <mt-navbar v-model="s ...

  4. C++中map和unordered_map的用法

    1. 简介 map和unordered_map都是c++中可以充当字典(key-value)来用的数据类型,但是其基本实现是不一样的. 2. map 对于map的底层原理,是通过红黑树(一种非严格意义 ...

  5. C#DataGridView格式化显示单元格的内容

    今天又发现了一个很有用的东西,DataGridView的CellFormating事件 经常从数据库查到的原始数据需要经过转换之后显示在客户端,比如性别,“1”显示“男”,“0”显示“女”,为此经常将 ...

  6. Redundant Connection

    In this problem, a tree is an undirected graph that is connected and has no cycles. The given input ...

  7. 自然语言处理工具hanlp 1.7.3版本更新内容一览

    HanLP 1.7.3 发布了.HanLP 是由一系列模型与算法组成的 Java 工具包,目标是普及自然语言处理在生产环境中的应用.HanLP 具备功能完善.性能高效.架构清晰.语料时新.可自定义的特 ...

  8. 从入门到自闭之Python时间模块

    time模块:import time time.time():时间戳,是一个浮点数,按秒来计算 time.sleep():睡眠,程序暂停多少秒执行 python中时间日期格式化符号: 必背 %y 两位 ...

  9. 使用Keras基于RCNN类模型的卫星/遥感地图图像语义分割

    遥感数据集 1. UC Merced Land-Use Data Set 图像像素大小为256*256,总包含21类场景图像,每一类有100张,共2100张. http://weegee.vision ...

  10. NODE代理,yang

    const express = require('express'); const proxy = require('http-proxy-middleware');//引入代理中间件 const a ...