随笔分类 -  dp

摘要:####题目 https://ac.nowcoder.com/acm/contest/60063/D 题意是说,给你一张 nm(n,m103) 大小的01地图,当前点下一步只能走到相邻的点上,如果这两个点值相同,则代价为2,否则代价为1,问从(1,1)走到(n,m)最少代价是 阅读全文
posted @ 2023-07-01 12:34 starlightlmy 阅读(19) 评论(0) 推荐(0) 编辑
摘要:https://www.luogu.com.cn/problem/P1026 这题的idea首先是直接暴力枚举k,发现会t,遂想到dp 用 dp[i][k] 表示 前 i 个数形成了 k 段数字的最大答案 注意一个比较坑的点是可能同一个位置会有多个单词开始,但是只计数一个 eg: 1 2 阅读全文
posted @ 2023-03-28 20:19 starlightlmy 阅读(72) 评论(0) 推荐(0) 编辑
摘要:https://codeforces.com/gym/102428 首先,令 dp[i][j] 表示 最下层的有 i 块, 包括最下层总共还有 j 块的方案数 容易想到状态方程:$dp[i][j] = \sum_{k = 1} ^ i dp[k][j - i] * (i + 1 - k) 阅读全文
posted @ 2022-10-17 16:24 starlightlmy 阅读(49) 评论(0) 推荐(0) 编辑
摘要:https://codeforces.com/gym/103389/problem/C 虽然 n 范围很小 (n <= 36), 但是直接枚举也会tle 可以想到,如果某家公司只有一家子公司,那么如果经过这家公司直接加上红包数额就好了 否则,某家公司有大于一家子公司,然而这样的公司的数量最多为 n 阅读全文
posted @ 2022-10-03 16:55 starlightlmy 阅读(98) 评论(0) 推荐(0) 编辑
摘要:首先来看一道经典例题吧(导弹拦截) ###题意 n 个导弹依次飞来,每次拦截的导弹都不能高于前一发的高度,求一次最多可以拦截多少导弹 题目数据范围:n105 ###求LIS的长度 O(n2) 做法 用 dp[i] 表示拦截第 i 枚导弹的情况下,最多拦截导弹的个数 阅读全文
posted @ 2022-10-01 21:04 starlightlmy 阅读(48) 评论(0) 推荐(0) 编辑
摘要:###动态规划的适用条件 满足 最优子结构(后面的状态可以由之前的最优子状态转移而来) 无后效性(当前的决策对之后没有影响) 子问题重叠(这样可以优化求解时间复杂度) ###动态规划实现方法 递推 直接写几重 for 循环转移状态 记忆化 dfs 逻辑上更直接更好理解,和递推的时间复杂度本质 阅读全文
posted @ 2022-08-27 13:53 starlightlmy 阅读(62) 评论(0) 推荐(0) 编辑
摘要:树形dp,即在树上进行dp。 需要对树这一数据结构有清晰的了解,还需要学会树的遍历。 难点常常在于状态方程的书写。 ####例题 例题都来自https://www.luogu.com.cn/training/214#problems 一、没有上司的舞会 题意 树上每个结点有权值,要求在树上选一些点, 阅读全文
posted @ 2022-08-20 02:02 starlightlmy 阅读(67) 评论(0) 推荐(0) 编辑
摘要:https://ac.nowcoder.com/acm/contest/33186/I ####题意 日本麻将有34种牌,每种4张。给你13张牌,其中每种牌最多两张,最少0张。 一轮操作定义如下: 1.从剩余牌堆中任意抽取一张,现在共14张 2.如果刚好凑成7对牌,则结束游戏 3.从手牌中丢弃一张牌 阅读全文
posted @ 2022-07-21 10:49 starlightlmy 阅读(65) 评论(0) 推荐(0) 编辑
摘要:####参考: https://blog.csdn.net/snowy_smile/article/details/79120063 ####1.bitset有什么用? 优化代码运行的时间和空间 具体地,空间为 S/8 , 时间为 T/w (w通常为32,与计算机的机器字长有关) ####2.bit 阅读全文
posted @ 2022-07-16 22:31 starlightlmy 阅读(361) 评论(0) 推荐(0) 编辑
摘要:####题目 给你一块nxm的菜地,菜地的内容只由0和1组成 求最大的一块全为1的矩形子菜地 n,m<=1000 ####思路 首先可以预处理出每一行/每一块矩阵内1的个数 暴力枚举每一个矩阵的左上角、右下角 时间复杂度O(n2m2) 枚举矩阵的起始两列位置,再用类似求最大子段和的思想dp in 阅读全文
posted @ 2022-05-22 00:49 starlightlmy 阅读(22) 评论(0) 推荐(0) 编辑
摘要:http://acm.zstu.edu.cn/problem.php?id=4664 读完题就能发现这是一道概率dp题,那么转移方程要怎么写呢? 我首先想到了用f[i]表示还剩下i个人时游戏的期望次数,然而这个状态因为不唯一,可能在转移的过程中重复计算(例如n=3,000->001->011, 00 阅读全文
posted @ 2022-04-01 20:46 starlightlmy 阅读(101) 评论(0) 推荐(0) 编辑
摘要:有n件物品,背包总重量为V,其中物品被分成了k组,同一组中的物品最多只能选一件。 选出一些物品使得背包中物品总价值最大。 核心代码: for(int k=1;k<=1000;k++){ //k组 for(int j=V;j>=0;j--){ //求出在相同重量下 考虑第k组后最大的价值 for(in 阅读全文
posted @ 2021-09-19 09:35 starlightlmy 阅读(59) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示