![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
补题
xuanzo
这个作者很懒,什么都没留下…
展开
-
C-Cities(区间DP)
C-Cities(区间DP) 题意: 给n个数。每次操作可以将连续的一段相同(可以只有一个数)的数变为任意数。 求最少多少次操作可以使所有数都相同。 思路: 区间DP,直接区间DP会超时。 需要进行优化,对于区间[L,R],可以找到与a[r]相同的数,然后把区间分为两半。 如果a[l]==a[r],则dp[L][R]–; 代码: #include<bits/stdc++.h> using namespace std; int n,a[5005],pre[5005]; void solve(){原创 2021-04-27 20:33:14 · 199 阅读 · 0 评论 -
G-Human Pyramid(动态规划)
G-Human Pyramid(动态规划) 题意: 给一个h和s,h代表金字塔的高度(由h*(h+1)/2个人组成金字塔),s代表强壮的人的人数。强壮的人必须由在地面或者由强壮的人支撑。求有多少种安排? 思路: 如果一个位置是强壮的人,则其下方全是强壮的人。并且其右下方也为强壮的人。 dp[i][j][k]表示从右往左数第i列,总共使用了j个强壮的人,当前列使用k个强壮的人的方案数。 对于第p列使用j个强壮的人,则前一列至少使用j-1个人。 状态转移方程为: dp[i][j][k]=dp[i][j][k+1原创 2021-04-27 20:20:25 · 365 阅读 · 0 评论