
动态规划
文章平均质量分 56
洋芋洋芋洋芋
这个作者很懒,什么都没留下…
展开
-
解题记录 合唱队形 双向求最长上升序列
第一个问题,如何求最长上升序列 题意: n 位同学站成一排,音乐老师要请其中的 n−kn-kn−k 位同学出列,使得剩下的 kkk 位同学排成合唱队形。 合唱队形是指这样的一种队形:设 k 位同学从左到右依次编号为 1,2 … ,k,他们的身高分别为 t1,t2…,tk,则他们的身高满足中间最高两边递减 你的任务是,已知所有 n 位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形 如果我们用常规dp做法的话,时间复杂度为n^2. for(int i = 1;i <= n; i++原创 2021-11-29 17:04:56 · 181 阅读 · 0 评论 -
动态规划 背包模型
01背包 例题引入: 有N件物品和一个容量为V的背包。第 i 件物品的费用是w[i],价值是v[i],求将哪些物品装入背包可使价值总和最大。 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][j]表示前 i 件物品恰放入一个容量为 j 的背包可以获得的最大价值。则其状态转移方程便是: f[i][j] = max( f[i - 1][j], f[i - 1][j - w[i]] + v[i] ) “将前 i 件物品放入容量为 j 的背包中”这个子问题,若只考原创 2021-11-28 12:25:25 · 280 阅读 · 0 评论 -
dp + 容斥 硬币购物
题目链接: https://www.luogu.com.cn/problem/P1450 题意: 共有 4 种硬币。面值分别为 c1,c2,c3,c4 某人去商店买东西,去了 n 次,对于每次购买,他带了 di 枚 i 种硬币,想购买 s 的价值的东西。请问每次有多少种付款方法。 输入格式 输入的第一行是五个整数,分别代表 c1,c2,c3,c4,n 范围: M = 1e5 接下来 n (n <= 1000) 行,每行有五个整数,描述一次购买,分别代表 d1,d2,d3,d4,s 解题思路: 首先,原创 2021-11-17 19:16:27 · 385 阅读 · 0 评论