Acwing-271-杨老师的照相排列(DP)
链接:
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)的更多相关文章
- 271. 杨老师的照相排列【线性DP】
杨老师希望给他的班级拍一张合照. 学生们将站成左端对齐的多排,靠后的排站的人数不能少于靠前的排. 例如,12名学生(从后向前)可以排列成每排5,3,3,1人,如下所示: X X X X X X X X ...
- 题解【AcWing271】杨老师的照相排列
题面 经典的线性 \(\text{DP}\) . 设 \(dp_{a,b,c,d,e}\) 表示第 \(1\) 排有 \(a\) 个人,第 \(2\) 排有 \(b\) 个人, 第 \(3\) 排有 ...
- 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)C 勤奋的杨老师【DP/正反LIS/类似合唱队形】
链接:https://www.nowcoder.com/acm/contest/116/C 来源:牛客网 题目描述 杨老师认为他的学习能力曲线是一个拱形.勤奋的他根据时间的先后顺序罗列了一个学习清单, ...
- 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)- 勤奋的杨老师(最长递增子序列)
链接:https://www.nowcoder.com/acm/contest/116/C来源:牛客网 题目描述 杨老师认为他的学习能力曲线是一个拱形.勤奋的他根据时间的先后顺序罗列了一个学习清单,共 ...
- COJ 0500 杨老师的路径规划(MST)最小生成树
杨老师的路径规划(MST) 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 为满足同学们需求,杨老师在实验楼4层新建了好多个计算 ...
- Final互评------《弹球学成语》---- 杨老师粉丝群
一.基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题; N(Need,需求):本产品面相青少年及小学生,基于这些用户数量再加上一些休闲玩家,需求量还是比较大的. A ...
- Final版本互评——杨老师粉丝群《PinBall》
基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 随着民族自信的觉醒,民主文化越来越受到重视,语文在高考中的比重也不断增加,在这种大环境下,成 ...
- 互评Beta版本——杨老师粉丝群——Pinball
互评beta版本 杨老师粉丝群——<PinBall> 一.基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 随着年龄的增长, ...
- 互评Alpha版本——杨老师粉丝群——Pinball
一.基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 成语学习对除汉语言专业外的大学生的需求并不是很高,初中生和高中生因为在升学时需要参加语文 ...
随机推荐
- Leetcode之动态规划(DP)专题-712. 两个字符串的最小ASCII删除和(Minimum ASCII Delete Sum for Two Strings)
Leetcode之动态规划(DP)专题-712. 两个字符串的最小ASCII删除和(Minimum ASCII Delete Sum for Two Strings) 给定两个字符串s1, s2,找到 ...
- iOS 12.4 越狱已经发布
昨天 unc0ver 3.5.0 发布,支持 iOS 12.4 越狱.12.4 目前为最新版的系统. 下载地址:https://github.com/pwn20wndstuff/Undecimus/r ...
- flask类装饰器
from flask import Flask,request,views from functools import wraps app = Flask(__name__) #自定义登录装饰器 de ...
- C++面试题整理(持续更新中)
一. 内联函数和宏定义的区别 1.内联函数在运行时可调试,而宏定义不可以: 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通类型),而宏定义不会: 3.内联函数可以访问类的成员变量,而 ...
- reduce的使用
reduce的使用:https://blog.csdn.net/xiasohuai/article/details/82152432
- Postman之前言
Postman是一款流行的接口api调试/测试工具.几乎可以发送大多数的HTTP请求. 1.依据开发提供的接口文档,对接口进行测试. 2.如果是自己学习,可以网上找一些免费的接口进行学习,或者抓包 - ...
- luogu题解 UVA1615 【Highway】
题目链接: https://www.luogu.org/problemnew/show/UVA1615 分析: 首先这里的距离是欧几里得距离而不是曼哈顿距离. 然后我们对于每个点,求出在公路上保持D范 ...
- js获取7天之前的日期或者7天之后的日期
js获取7天之前的日期或者7天之后的日期(网上摘取的,记录自己使用) function fun_date(num) { var date1 = new Date(); //今天时间 var time1 ...
- 解决 webpack 打包文件体积过大
webpack 把我们所有的文件都打包成一个 JS 文件,这样即使你是小项目,打包后的文件也会非常大.下面就来讲下如何从多个方面进行优化. 去除不必要的插件 刚开始用 webpack 的时候,开发环境 ...
- angular使用@angular/material 出现"export 'ɵɵinject' was not found in '@angular/core'
WARNING in ./node_modules/@angular/cdk/esm5/a11y.es5.js 2324:206-214 "export 'ɵɵinject' was not ...