题目大意:

给定N个学生,k排,每排分别有N1,N2,N3……Nk
合影时要求每一排从左到右身高递减,每一列从后到前身高也递减,问一共有多少种安排合影位置的方案

解题思路:

五维dp
f[a1,a2,a3,a4,a5]表示各排从左端起分别占了a1,a2,a3,a4,a5个人时合影方案数量
然后我们枚举a1,a2,a3,a4,a5从0开始到N1,N2……N5
若a1 < N1
若a2 < N2&a1 > a2
若a3 < N3&a2 > a3
……(以此类推)
额,这题还可以用一种我不会的数学解法:
“杨氏矩阵”+“勾长公式”
百度一下这个题目似乎用数学解法的人还挺多的

Accepted code:

#include<cstdio>
#include<algorithm>
#include<cctype>
#include<cstring>
#include<iostream>
#define r(i,a,b) for(int i=a;i<=b;i++)
#define N 31
using namespace std;
int t,n[6];
inline void read(int &f) {f=0; char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) f=(f<<3)+(f<<1)+c-48,c=getchar();return;
}inline bool init(){read(t); if (t==0) return 0;r(i,1,t)read(n[i]);r(i,t+1,5) n[i]=0; return 1;
}inline unsigned int dp() {unsigned int f[n[1]+1][n[2]+1][n[3]+1][n[4]+1][n[5]+1];memset(f,0,sizeof(f));f[0][0][0][0][0]=1;r(i1,0,n[1])r(i2,0,n[2])r(i3,0,n[3])r(i4,0,n[4])r(i5,0,n[5]) {if (i1<n[1])f[i1+1][i2][i3][i4][i5]+=f[i1][i2][i3][i4][i5];if (i2<n[2]&&i1>i2)f[i1][i2+1][i3][i4][i5]+=f[i1][i2][i3][i4][i5];if (i3<n[3]&&i2>i3)f[i1][i2][i3+1][i4][i5]+=f[i1][i2][i3][i4][i5];if (i4<n[4]&&i3>i4)f[i1][i2][i3][i4+1][i5]+=f[i1][i2][i3][i4][i5];if (i5<n[5]&&i4>i5)f[i1][i2][i3][i4][i5+1]+=f[i1][i2][i3][i4][i5];}return f[n[1]][n[2]][n[3]][n[4]][n[5]];
}int main() {while(init())cout<<dp()<<endl;
}

转载于:https://www.cnblogs.com/Juruo-HJQ/p/9821874.html

Mr. Young's Picture Permutations相关推荐

  1. POJ2279-Mr. Young's Picture Permutations【线性dp】

    正题 题目链接:http://poj.org/problem?id=2279 题目大意 有k列,每列人数不同,要求从左到右和从前到后身高都单调递减,学生高度是1∼N1∼N1\sim N(人数总和) 解 ...

  2. 【转】别人整理的DP大全

    为什么80%的码农都做不了架构师?>>>    动态规划 动态规划 容易: 1018 , 1050 , 1083 , 1088 , 1125 , 1143 , 1157 , 1163 ...

  3. linux内核调度,Linux内核的三种调度策略

    一 Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务.一旦占用cpu则一直运行.一直运行直到有更高优先级任务到达或自己放弃 ...

  4. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  5. poj动态规划经典题目

    列表一:经典题目题号: 容易: 1018, 1050, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 1322, 1 ...

  6. POJ 动态规划题目列表

    1.这份列表当然不是我原创的,从文库里下载了一份,放到这里便于自己浏览和查找题目. ※最近更新:Poj斜率优化题目 1180,2018,3709 列表一:经典题目题号: 容易:  1018, 1050 ...

  7. POJ 超详细分类

    POJ 各题算法 1000    A+B Problem            送分题     49%    2005-5-7 1001    Exponentiation         高精度   ...

  8. OI每周刷题记录——lrllrl

    看这标题就知道我是模仿的hzwer大佬,远程%%% 大佬的OI经历让蒟蒻我深受感触,为了晚一些AFO本蒟蒻也得加油了 从高二上期第一周开始计数,每个星期天更一次,一直更到我AFO 如果这是我此生最后一 ...

  9. 俄罗斯方块游戏shell编程代码

    #!/bin/bash# Tetris Game # mr.Young#位置和大小 iLeft=3 iTop=2 ((iTrayLeft = iLeft + 2)) ((iTrayTop = iTop ...

最新文章

  1. 时间序列的建模新思路:清华、李飞飞团队等提出强记忆力E3D-LSTM网络
  2. maile:教你程序员怎么发邮件
  3. Android开发:关于Android Settings中的八个问题
  4. iOS开发之本地通知UILocalNotification
  5. #python#练习
  6. CCF201503-1 图像旋转(100分)
  7. ubuntu18.10安装octave
  8. AUTOSAR从入门到精通100讲(125)-详解车载网络 OTA系统的开发
  9. 自从有了mybatis-plus代码生成器,写代码效率高了一大截
  10. keepalived+lvs搭建高可用负载均衡集群
  11. Node.js之HTTP模块学习
  12. vue实例方法之set方法的实现原理
  13. plsql developer无法识别32位oracle问题如何解决?
  14. 智能客服FAQ问答任务的技术选型探讨
  15. 全网推广有哪些推广方式?
  16. SpringBoot基础
  17. New Year Garland
  18. python小游戏——魂斗罗这是你的童年吗?
  19. 父母不会用智能机?这几个功能可要教会他们
  20. postgresql-9.5.5数据库安装教程

热门文章

  1. SppNet详述 附代码
  2. php 2 520.00,[转账]向你转账520.00
  3. EasyNVR内网摄像机接入网关+EasyNVS云端管理平台,组件起一套轻量级类似于企业级萤石云的解决方案
  4. Python 通过浏览器 打开指定网址
  5. 1、下列时间序列模型中,哪一个模型可以较好地拟合波动性的分析和预测。
  6. 利用linux的/dev/urandom文件产生较好的随机数
  7. 2T以上硬盘分区的问题
  8. juicer模板返回html,juicer模板的使用
  9. 【MATLAB统计分析与应用100例】案例013:matlab读取Excel数据,调用nlinfit函数作一元非线性回归
  10. xrdp完美实现Windows远程访问Ubuntu 16.04【包括多人桌面与原生桌面】