acm第七周总结

本周我们学习了比赛问题,摆渡车问题等,以及学习了区间dp的一些题目,虽然和线性dp不完全相同,但其中也有相同的思路可以去求解。对于比赛问题,我们应该设dp[i][j]为将i场比赛分配给j个人,因此三种情况,第一种为当j=1时,此时只有一个人参赛,只有一种方案,因此dp[i][j]=1,第二种为当j=i时,由于每个比赛只能由一个人参加,所以dp[i][j]=i!,第三种是介于两者之间,当1<j<i时,dp[i][j]=jdp[i-1][j-1]+jdp[i-1][j]。对于摆渡车问题,我们设前i个同学等j分钟车后可发车,又可以分三种情况,第一种时i和i+1乘坐同一辆车,第二种时前i个人已经走了,i+1等车回来后发车,第三种时i+1等车回来后车又出发然后又回来发车。字母写名问题时我们构造出姓后,名有多少种构造方法是固定的,所以我们只要确定姓就可以了,我们用dp[i][j]表示姓中钱i个用j个字母是构造,相当于是涂色问题,因此设dp[i][j]=dp[i-1][j]j+dp[i-1][j-1](m-(j-1)),第一种是第i个字符使用了前面的字母,所以有j中情况,第二种是第i个字符使用了新的字母,所以有(m-(j-1))种情况。对于收集魔液问题,只要有f[i][j][p][0/1]表示,其中i和j代表格子,p代表差值,0/1代表a和b两个人。计数dp问题,我们用dp[i][j]表示前i个字符结尾为j,如果为递增,就取比j小的,如果递减,就取比j大的即可。创意吃鱼法问题,我们应该先找一个点,这个点应该是1,然后向右和向上寻找,如果都是0的话且对角线是1,我们就拓展,这题主要思路是先构造正方形,然后再找到最大的那个。离散化问题,我们用dp[i][j]表示B的前i个元素用了j个数,用dp[i-1][k]来算代价,j用原始数列里的数,使前i个数不下降,第i个用a[j]凑出最小花费。然后学习了区间dp问题,区间问题主要分为三种,第一种主要是石子合并问题,对于相邻两堆合并,我们用dp[i][j]从i到j最小消耗,dp[i][j]=min(dp[i][k],dp[k+1][j]+sum[j]-sum[i-1])。第二种类型使括号匹配问题,如果不含嵌套的话,可和第一种一样,如果含嵌套,就设dp[i][j]为第i个到第j的最大匹配度,先检测a[i]和a[j]是否匹配。本周我们主要学习到了线性dp中我们可以尽量使用离散化来解决问题,离散化可以使循环变小,因此更容易实现,对于区间dp问题,我们可以看好具体使哪种类型的,然后套用模板去解题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值