随笔分类 -  DP

摘要:题目描述 简要描述:给定一个长度为 $N$ 的数组,求数组的子数组满足最大值为 $X$ 且最小值为 $Y$ 的子区间的个数。 做法 1. ST表 + 二分 时间复杂度: $O(n \log n)$ 对于每个位置,二分出以它为左端点最大值为 $X$ 的最远和最近的位置,以及以它为左端点最小值为 $Y$ 阅读全文
posted @ 2022-10-27 22:50 ccz9729 阅读(68) 评论(0) 推荐(0)
摘要:UVA1650 数字串 Number String题意翻译: 对于任意一个长度为 $n$ 的排列 $P$,比较数字串中所有相邻数字的大小,后者大于前者的用 $I$ 表示,否则用 $D$ 表示。例如数字串 ${3,1,2,7,4,6,5}$ 表示为 $DIIDID$, $?$ 表示两个相邻的数字的关系未知。 现给出数字串的关系,求出所有合法的数字串的 阅读全文
posted @ 2022-09-28 23:00 ccz9729 阅读(48) 评论(0) 推荐(0)
摘要:Sorting Pancakes 题面翻译 题意简述 有 $n$ 个箱子和 $m$ 个小球,初始时第 $i$ 个箱子有 $a_i$ 个小球。每次操作可以将一个小球移到相邻的箱子里。求要使得最终数组 $a_i\ge a_{i+1}$ 的最小操作次数。 输入格式 第一行两个正整数 $n,m$。 第二行 阅读全文
posted @ 2022-09-12 14:30 ccz9729 阅读(59) 评论(0) 推荐(0)
摘要:Freezing 牛客小白月赛53F 首先有一个朴素的 $DP$ , dp[i][j] 表示前 $i$ 个人中,且最后一个人的状态是 $j$ 的方案数,然后暴力转移即可,复杂度 $O(n \times 2^m)$ 无法通过本题。 有一个不能通过本题的优化是,我们可以通过枚举 ~j 的子集,来进行状态 阅读全文
posted @ 2022-09-08 17:16 ccz9729 阅读(171) 评论(0) 推荐(0)
摘要:小沙的签到题 题目link 题目描述 给定一段长度为 $n(n \le 2 \times 10 ^ 5)$ 的序列 $a(a_i \le 999999)$,求序列中有多少对数相加不会产生 10 进制的进位。 第一种做法是六维前缀和,考虑 s[bit1][bit2][bit3][bit4][bit5] 阅读全文
posted @ 2022-09-08 16:46 ccz9729 阅读(36) 评论(0) 推荐(0)
摘要:SOLUTION 暴力做的话有一个 $n \times k$ 的 $DP$,dp[i][j] 表示只在前 $i$ 个数字中删除, 删除了 $j$ 个数字的最大 $cnt$,当前面删除了 $k$ 个之后,后面的数字是固定的,需要统计一下再 $i$ 后面有多少个位置符合 i - k == a[i] ,此 阅读全文
posted @ 2022-09-05 21:39 ccz9729 阅读(30) 评论(0) 推荐(0)
摘要:找爸爸 题目描述 小A最近一直在找自己的爸爸,用什么办法呢,就是DNA比对。 小A有一套自己的DNA序列比较方法,其最终目标是最大化两个DNA序列的相似程度,具体步骤如下: 给出两个DNA序列,第一个长度为$n$,第二个长度为$m$。 在两个序列的任意位置插入任意多的空格,使得两个字符串长度相同 逐 阅读全文
posted @ 2022-06-25 17:26 ccz9729 阅读(43) 评论(0) 推荐(0)
摘要:一个很容易看出的 \(DP\),不过需要优化一下状态转移过程 前缀和优化 复杂度 \(O(n \; m)\) // Problem: E - Distance Sequence // Contest: AtCoder - NOMURA Programming Contest 2022(AtCoder 阅读全文
posted @ 2022-06-10 17:14 ccz9729 阅读(99) 评论(0) 推荐(0)
摘要:传送门 题意简述: 你可以佩戴 \(n\) 个武器 以及 最多 \(1\) 个饰品, 你拥有 \(m\) 个武器进行选择, 每个武器有三个属性,重量、伤害以及武器的蓄力时间。你只能进行一次攻击,求出你可以杀死 一个 \(100\) 血量 的 \(boss\) 的最小花费时间,如果无论如何也杀不死,输 阅读全文
posted @ 2022-06-09 23:12 ccz9729 阅读(74) 评论(0) 推荐(0)
摘要:原题链接 思路 由于 \(k\) 的范围只有 \(8\), 很容易想到这题要用一个暴力的方法,我们可以用 状压dp 来解决这个问题。 令 \(f[i][j]\) 为 当前车票的可选即可为 \(i\) ,并且 当前的位置是 \(j\) 的最小花费,然后进行状态转移即可 SOLUTION #includ 阅读全文
posted @ 2022-05-03 15:04 ccz9729 阅读(38) 评论(0) 推荐(1)
摘要:题目链接 \(-\) 题目-最长等差数列 (51nod.com) 本题 很容易 得出一个 \(n^2 \log n\) 的解法,令 \(dp[i][j]\) 表示以 \(i\) 结尾,公差为 \(j\) 的最长等差数列的长度,由于公差太大,因此我们需要用到 \(map\) ,即 用 \(map<in 阅读全文
posted @ 2022-04-29 14:45 ccz9729 阅读(255) 评论(0) 推荐(1)
摘要:传送门 题目描述 把一个长度为 \(N\) 的数组 \(A\), 分为几个连续的子序列 \(B_1, B_2, ... , B_k\),有 \(2^{N-1}\) 种划分方式 先给出数组 \(A\) 求出所有划分方式的价值之和,并对 \(998244353\) 取模. 对于一种划分方式 \(B_1, 阅读全文
posted @ 2022-03-16 19:43 ccz9729 阅读(75) 评论(0) 推荐(1)
摘要:题目链接 F.Group Projects 题意 把 \(n\) 个物品分成若干组,每个组的代价为组内价值的极差,求所有组的代价之和不超过 \(k\) 的方案数。 考虑 DP, \(f[i][j][k]\) 表示考虑到第 \(i\) 个物品的时候,还有 \(j\) 组尚未分配完毕,当前状态总代价为 阅读全文
posted @ 2022-03-01 20:46 ccz9729 阅读(71) 评论(0) 推荐(0)
摘要:跳转链接 题目大意 题目中要求的是从1号点到n号点所需要的最短时间, 一秒可以走 \(2^k\) 个距离 给定的有向图的边边权都是1. 问题分析 由于一秒可以走 \(2^k\) 个距离,因此题目转化为寻找两个点之间的距离为$2k$的点对,并把边权(代表时间)赋值为1, 由于给定边权(指路径长度)都是 阅读全文
posted @ 2021-09-18 10:57 ccz9729 阅读(33) 评论(0) 推荐(2)