poj 2279 dp做法

【算法竞赛进阶指南】POJ 2279 - 杨老师的照相排列 - 线性dp计算方案数 题目描述 传送门:Acwing / POJ (注意在poj提交时换掉代码中的万能头) 有N个学生合影,站成左端对齐的k排,每排分别有N1,N2,…,Nk 个人。 (N1≥N2≥…≥Nk) 第1排站在最后边,第k排站在最前边。 学生的身高互不相同,把他们从高到底依次标记为1,2,…,N。 在合影时要求每一排从左到右身高递减,每一列从后到前身高也递减。 问一共有多少种安排... 阅读详情

这题用dp貌似会爆内存吧…数组有点大,反正dp做法只是参考
对于题目,我们将学生按高度从高到矮安排,那么这样的话其实在每一行的层面肯定是可以保证左边比右边高的,因为前面安排的都是更高的学生。
安排新的学生时,对于每一行有如下考虑:
1.该行未满
2.行号为1,或者该行的学生数比上一行少(这样的话,就能保证如果新插入学生,那么这个学生的高度也比上一行同一位置的学生高度低)

f[a1][a2][a3][a4][a5]表示每一行学生数
边界条件:f[0][0][0][0][0]=1;

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    long long f[31][31][31][31][31];
    int n, i, j, k;
    int lim[6];
    while (cin >> n && n) {
        memset(f, 0, sizeof(f)); memset(lim, 0, sizeof(lim));
        for (i = 1; i <= n; i++)
            cin >> lim[i];
        f[0][0][0][0][0] = 1;
        for (i = 0; i <= lim[1]; i++)
            for (j = 0; j <= lim[2]; j++) {
                //if (i <= j)continue;
                for (k = 0; k <= lim[3]; k++) {
                    //if (j <= k)continue;
                    for (int a = 0; a <= lim[4]; a++) {
                        //if (k <= a)continue;
                        for (int b = 0; b <= lim[5]; b++) {
                            //if (a <= b)continue;
                            if (i + 1 <= lim[1])f[i + 1][j][k][a][b] += f[i][j][k][a][b];
                            if (j + 1 <= lim[2] && j < i)f[i][j + 1][k][a][b] += f[i][j][k][a][b];
                            if (k + 1 <= lim[3] && k < j&&k < i)f[i][j][k + 1][a][b] += f[i][j][k][a][b];
                            if (a + 1 <= lim[4] && a < i&&a < j&&a < k)f[i][j][k][a + 1][b] += f[i][j][k][a][b];
                            if (b + 1 <= lim[5] && b < i&&b < j&&b < k&&b < a)f[i][j][k][a][b + 1] += f[i][j][k][a][b];
                        }
                    }
                }
            }
        cout << f[lim[1]][lim[2]][lim[3]][lim[4]][lim[5]] << endl;
    }

    return 0;
}

一定不能像注释里那样加判断条件,因为后面的行是可以跟上一行一样多人的,只要后面的行不加人的话.

Ubuntu 22.04远程桌面终极指南:从零配置RDP到解决黑屏问题 本文提供了一份Ubuntu 22.04远程桌面配置的终极指南,详细讲解了如何从零开始安装和配置RDP服务,并重点解决了连接后常见的黑屏问题。通过分析会话冲突、修复启动脚本及配置权限策略,帮助用户实现稳定、高效的远程桌面连接,优化分辨率、禁用锁屏,打造无缝的远程工作体验。 阅读详情

相关推荐

微信内置浏览器抓包全攻略:从ADB配置到Chrome调试(附常见问题解决)

本文提供了一套完整的微信内置浏览器抓包与调试解决方案。从ADB工具的深度配置与稳定性连接开始,详细讲解了如何开启X5内核调试开关,并利用Chrome DevTools建立远程连接。文章重点剖析了Network面板进行网络请求抓取、性能分析和问题定位的实战技巧,并附带了设备连接失败、无网络请求等常见问题的排查指南,帮助开发者高效解决微信H5页面调试难题。

gitlab7runner的博客 543

POJ 2279【杨氏矩阵+钩长公式】

题目链接:http://poj.org/problem?id=22793 题意:给出n行,每行有人数限制a[i],并且a[i]&gt;=a[i+1],总人数暂且称为tot=∑a[i],把 1~tot 这些数字填入矩阵,使得矩阵满足每行单调递增,每列单调递增,求满足要求的矩阵数目。 杨氏矩阵又叫杨氏图表,它是这样一个矩阵,满足条件: (1)如果格子(i,j)没有元素,则它右边和上边的相邻格子也...

小康的博客 971

A股历史数据免费下载终极指南:4000+个股数据一键打包获取

本文提供了获取A股历史数据的完整免费方案,重点介绍了Tushare Pro、AkShare等开源金融数据API的使用方法。通过详细的Python脚本示例,指导读者如何自动化批量抓取、清洗、存储4000多只个股的历史行情数据,并分享数据质量校验与性能优化技巧,助力量化研究与市场分析。

ooo22的博客 2226

POJ2279 五维线性dp

POJ2279 五维线性dp(动态规划入门) 题面 POJ2279题面 思路 从头开始系统的学dp,做题目一定要理清dp的五大因素 状态表示 用dp[a1,a2,a3,a4,a5a_1,a_2,a_3,a_4,a_5a1​,a2​,a3​,a4​,a5​]表示第i行上已经插入了aia_iai​个人的排队方法数 阶段划分 已经在各排分配了制定人数的方法数(对应一个五元组) 转移方...

Time Limit Exceeded on test 99 555

PHP实战:5分钟搞定SM4国密加密算法集成(附完整代码)

本文提供了一份可直接用于生产环境的PHP SM4国密加密算法集成实战指南。文章详细解析了SM4算法核心,对比了ECB与CBC工作模式,并给出了包含完整代码、密钥管理、数据填充及性能优化的解决方案,帮助开发者快速、安全地在PHP项目中集成国密加密算法。

2a4s6d8f0g的博客 339

从标记基因到功能分析:手把手教你人工注释单细胞亚群的完整流程

本文详细介绍了人工注释单细胞亚群的完整流程,从标记基因筛选到功能分析验证,特别针对肿瘤微环境、发育轨迹等复杂场景提供解决方案。通过差异表达分析、多维数据整合和实验验证,帮助研究者准确识别细胞类型,提升单细胞转录组研究的生物学解读深度。

jenkins8butler的博客 244

poj 2279 dp(防MLE) 或 数论(杨氏矩阵+勾长公式)

题目链接:poj 2279 这个题目 有两种做法 dp 或者是 杨氏矩阵+勾长公式 首先是dp做法(参考lyd的书) 这有个小技巧 就是 31的5次方会爆内存 所以我们得开个可变的数组 就是 先把那5维的大小输入 在创建数组 这样可以节省很多空间 另外像这种可变数组是不能全局声明的 #include<cstdio> #include<cstring> ...

weixin_43824564的博客 412

什么是DHCP Snooping?如何配置DHCP Snooping?

功能描述防护类型防御伪造 DHCP 服务器、避免地址冲突、增强网络安全性使用场景企业园区网、校园网、大型局域网配合机制IP Source Guard、DAI、防止 ARP 欺骗部署难度⭐⭐(简单)“DHCP Snooping,是内网 DHCP 安全防护的第一道门神。” 🛡️。

网络技术联盟站 1267

poj 2279(线性 dp)

内存爆了 将所有新生从高到底排序, 在第i行插入新生时: 人数<=该行人数 如果在第一行就直接插,不在则 需要满足 ** 该行人数 <= 上一行人数** f[0][0][0][0][0] = 1 应该为0,为了不写+1则初始化为1; #include <iostream> #include <string.h> using namespace st...

_llc的博客 382

基于SAGE算法的宽带信道参数估计算法的MATLAB仿真

本文将介绍如何使用MATLAB进行SAGE算法的仿真,以便更好地理解和应用该算法。SAGE算法是一种基于最大期望(Expectation-Maximization)方法的迭代估计算法,用于估计未知的参数。在宽带信道参数估计中,SAGE算法通过迭代优化来估计信道的传输函数。总结起来,本文介绍了如何使用MATLAB进行基于SAGE算法的宽带信道参数提取算法的仿真。通过以上步骤,我们可以得到估计的信道响应,并与真实信道响应进行比较。此外,SAGE算法还可以与其他信道估计算法相结合,以提高估计的准确性和性能。

CodeRoarX的博客 1075

Linux内核vmlinuz文件:了解和编程

vmlinuz文件是Linux操作系统中的内核镜像文件。它包含了Linux内核的压缩版本,用于引导和启动操作系统。vmlinuz文件通常是一个zImage格式的压缩内核镜像,其中包含了操作系统所需的核心功能和驱动程序。vmlinuz文件的名称可能会因Linux发行版和版本而有所不同,但它们的作用是相同的。在某些发行版中,vmlinuz文件可能被重命名为vmlinux或bzImage。

PixelDyno的博客 1350

POJ - 2279 Mr.Young's Picture Permutations(dp做法)

题目来源:http://poj.org/problem?id=2279 由于总排数不超过5,且每一排的人数最多为30,可以考虑令f[a1][a2][a3][a4][a5]表示第i排站ai个人的方案数。 边界条件是f[0][0][0][0][0] = 1。 分别考虑依照身高从大到小的顺序向每一排安放,这样每次只能安放在某一排的最后一个位置,而且这一排的人数要少于之前一排的人数。 因此,对于状...

No cost too great! 306

RK3588开发笔记-MIPI-CSI接口视频解码芯片XS9922B调试

Rockchip RK3588 是一款高性能的处理器,支持多种摄像头接口,包括 MIPI(Mobile Industry Processor Interface)接口。MIPI是一种用于移动设备和嵌入式系统中的摄像头、显示器和其他传感器设备的串行接口标准。MIPI是MIPI联盟发起的为移动应用处理器制定的开放标准。CSI-2(Camera Serial Interface 2)是MIPI 联盟定义的另一种高速接口,主要用于摄像模组和处理器之间的连接。

flypig has a dream! 6860

POJ2279 Mr. Young's Picture Permutations

POJ2279 Mr. Young’s Picture Permutations 题解 题目请戳这里: Mr. Young’s Picture Permutations 这道题有两种解法。 解法1:动态规划 这道题即满足最优子结构,又满足无后效性,显然可以用动态规划求解。 我们可以考虑,因为这里的矩阵最多只有五行,我们可以用 N1⋯N5N_1 \cdots N_5N1​⋯N5​ 来表示每行的人数,...

Believe_R_的博客 376

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

POJ2279 线性dp

http://poj.org/problem?id=2279 学习思路,直接开空间会爆内存,开个动态的可还行。可是怎么开动态多维数组需要学习 #include<cstdio> #include<iostream> #include<cstring> using namespace std; long long f[31][31][31][31][31]; in...

Vicente的博客 256

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【题解】POJ2279 Mr.Young′s Picture Permutations dp

【题解】POJ2279 Mr.Young′s Picture Permutations dp 钦定从小往大放,然后直接dp。 \(dp(t1,t2,t3,t4,t5)\)代表每一行多少人,判断边界就能dp。 然后你发现\(30^5\)开不下,但是你仔细观察由于它保证\(\sum < 30\)所以你只用开\(30^5 \div 5!\)就好了。 具体为什么我相信你会 //@winlere #i...

weixin_30265171的博客 198

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

POJ2279 Mr. Young's Picture Permutations 线性DP

题目链接 http://poj.org/problem?id=2279 分析 kkk 的范围很小,设状态为 f[a][b][c][d][e]f[a][b][c][d][e]f[a][b][c][d][e],考虑可以从哪些状态转移得来; 显然是那些合法的,且人数比该状态恰好少 111 的; 我们假定从 111 到 nnn 依次安排,则合法状态要求 a≥b≥c≥d≥ea \geq b \geq c \...

Kevin的博客 349

轮廓线DP:poj 2279 Mr. Young's Picture Permutations

poj 2279 Mr. Young's Picture Permutations \(solution:\) 首先摘取一些关键词:(每行不超过它后面的行)(每排学生安排高度从左到右减少)(学生的高度应该从后面到前面减少)。这个已经很提示我们轮廓线DP了。而且这一题的数据范围也十分的小:行数不超过五行,人数不多于三十人。这么小的数据范围基本上可以断定是DP了。 然后这种带限制条件的我们可...

weixin_30474613的博客 102

POJ2279 Mr Young's Picture Permutations

POJ2279 Mr Young's Picture Permutations 描述: 有N个学生合影,站成左对齐的k排,每行分别有N1,N2…NK个人,第一排站最后,第k排站之前。学生身高依次是1…N。在合影时候要求每一排从左到右递减,每一列从后面到前也递减,一共有多少总方案输入每组测试数据包含两行。第一行给出行数k。 第二行包含从后到前(n1,n2,…,nk)的行的长度,作为由单...

weixin_33958366的博客 137

POJ 2279 动态规划,进阶指南

算法竞赛进阶指南, 265 页 题目意思: 杨先生要给他的学生们拍照片。首先,站队状况是确定的,若第i行站了r[i]个人,则有r[1] ≥ r[2] ≥ … ≥ r[n], 所有的行都是靠左对齐的。并且,在同一行和同一列里面,从左到右或者从上到下身高都是递减的。 现在所有学生的身高都不相同,学生数不超过30个,行数不超过5。你需要求出所有可能的排队方法的总数。 本题要点: 1、 最多只有5 排,不够 5排凑够5排。 r[i] 表示第i排最多站几人 2、 dp[i1][i2][i3][i4][i5] 表示 第

qq_38232157的博客 256

POJ 2279

线性DP 本题的正解是杨氏矩阵与钩子定理 但是这道题用DP的思想非常好 但是这样会MLE... #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; ...

430

算法竞赛进阶指南 线性dp

1.poj2279 思路:线性dp,但过不了poj上的样例,会爆内存,,实验只能去Acwing上实验。最后一个last元素可以尝试每一排,但是有个界限状态的要点我觉得应该把初始状态设为dp[1][0][0][0][0]=1应该比dp00000更好理解个人认为。。要开Long Long #include<bits/stdc++.h> using namespace std; type...

weixin_43818893的博客 382

POJ2279杨氏矩阵+钩子定理

题目:http://poj.org/problem?id=2279 有dp做法,但会MLE。   dp的思想很好,是通过 “按身高由小到大往进放” 把 “身高小于” 的条件转化成 “放进去的先后” ,于是又变成 “当前位置的上边和左边是否已放” 。   “左边” 通过对每一行长度的记录;“上边” 通过与上一行长度的比较,就可以状态转移了。 正解是用公式。杨氏矩阵(虽然没用上)+钩子公式。 ...

weixin_30586257的博客 78

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

正题 题目链接:http://poj.org/problem?id=2279 题目大意 有k列,每列人数不同,要求从左到右和从前到后身高都单调递减,学生高度是1∼N1∼N1\sim N(人数总和) 解题思路 我们开一个五维数组,然后每次在人少那列填充,按照这总方法,我们进行dp(公式较长,暂不解释)。 code #include&lt;cstdio&gt; #incl...

QuantAsk 910

POJ 2279 dp

Mr. Young's Picture Permutations Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1826   Accepted: 773 Description Mr. Young wishes to take a picture of his class. The st...

我是谁 --- 卡比兽 350

POJ - 2279 Mr. Young‘s Picture Permutations(线性DP)

POJ - 2279 Mr. Young’s Picture Permutations #include<iostream> #include<cstring> using namespace std; typedef long long LL; int s[6]; int n; int main() { while(cin>>n&&n) { memset(s,0,sizeof s); for(int i=0;i<n;i++) c

00后的博客 270
上一篇: 归并排序模板
下一篇: 并查集模板
HumveeA6
博客等级 码龄17年 12粉丝 175原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值