
动规
_Yuh_
...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
K - Kongey Donk
好不容易在比赛中碰到比较简单的dp,结果因为越界问题没有处理好,没有做对????。好难受,我好菜啊 因为这个数据有点大,用数组肯定会越界,然后用vector做,但是我用vector写的时候出现了段错误,主要是使用的不熟练。后来查了查怎么用vector代替二维数组,改成那位大佬说的之后就a了。 #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include &l原创 2021-02-09 23:59:17 · 166 阅读 · 0 评论 -
AcWing 279. 自然数拆分
题目链接 因为至少拆分成2个数的和,所以就从1~n-1里面选若干个数,使其加和等于n。这个题就是典型的完全背包问题,可以将1 ~ n-1看成n-1个物品,每件物品可以选任意次,背包容量是n,求出加和等于n的方案数。 这里使用滚动数组 ,令 f [j] 表示加和等于j的方案数,那么 f [j] 就等于选第i个物品的方案数与不选第i个物品的方案数的和,就是 f[j] = f[j]+f[j-i](f[j]表示不选第i个物品的方案数,此时的f[j]是在上一层循环中求出的,也就是没有选第i件物品时加和等于j的方案原创 2021-01-28 15:19:42 · 151 阅读 · 0 评论 -
风王之瞳
动态规划 题目链接 当n=1时,正方形的个数一定是m,所以dp[1]=m. 当n<=m时,dp[i]=dp[i-1]+(m-i+1)*i. 当n>m时,i与i+1的差就不变了,dp[i]=dp[i-1]. (dp[]是n * i与n * (i-1) 相差的正方形个数) #include <bits/stdc++.h> using namespace std; #define ll long long const int MAX = 1e6+10; int main() {原创 2020-05-29 17:32:18 · 350 阅读 · 0 评论