随笔分类 - DP,动态规划
摘要:普通多重背包 外层枚举哪个包,中层枚举容量,内存枚举数量 for(i=1; i<=n; ++i) for(j=m; j>=0; --j) for(k=1; k*w[i]<=j && j<=s[i]; ++k) f[j]=max(f[j], f[j-k*w[i]]+k*v[i]); 二进制优化 相当于
阅读全文
摘要:题目链接 题目 有一个长度为 \(n\) 的数组 \(a\) 和一个长度为 \(n−1\) 的数组 \(b\),初始位置为 \(pos=1\),每一天可以选择得到 $a_{pos}$元钱,或者花费 $b_{pos}$元钱(钱数不能为负)使得 \(pos\leftarrow pos+1\) 现在希望买
阅读全文
摘要:题目链接 题目 We saw the little game Marmot made for Mole's lunch. Now it's Marmot's dinner time and, as we all know, Marmot eats flowers. At every dinner h
阅读全文
摘要:题目链接 题目 Quite recently a creative student Lesha had a lecture on trees. After the lecture Lesha was inspired and came up with the tree of his own whic
阅读全文
摘要:题目链接 题目 Alex doesn't like boredom. That's why whenever he gets bored, he comes up with games. One long winter evening he came up with a game and decid
阅读全文
摘要:Part A 单调队列 何为单调队列? 单调队列(Monotone queue )即单调递减或单调递增的队列。 例:滑动窗口 T1 题目 对于一个长为 \(N\) 的序列,求所有从左到右长为 \(K\) 的区间最大值和最小值。 \(N,K\leqslant 10^6\) 思路 以最大值为例,维护一个
阅读全文
摘要:题目链接 题目 最近 \(\text{lxhgww}\) 又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律。 通过一段时间的观察,\(\text{lxhgww}\) 预测到了未来 \(T\) 天内某只股票的走势,第 \(i\) 天的股票买入价为每股 \(AP_i\),第 \(
阅读全文
摘要:题目链接 题目 原题来自:POI 2005 Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有 \(n\) 种面值的硬币,面值分别为 \(b_1, b_2,\cdots , b_n\) 。但是每种硬币有数量限制,现在我们想要凑出面值 \(k\),求最少要用多少个
阅读全文
摘要:题目链接 题目 高二数学《绿色通道》总共有 \(n\) 道题目要抄,编号 \(1\ldots n\),抄第 \(i\) 题要花 \(a_i\) 分钟。小 Y 决定只用不超过 \(t\) 分钟抄这个,因此必然有空着的题。每道题要么不写,要么抄完,不能写一半。下标连续的一些空题称为一个空题段,它的长度就
阅读全文
摘要:状压dp的引入 状压DP,是用二进制的性质来描述状态的一种DP。 对于状压dp,我们要先了解一下位运算。 位运算 x&y 与运算,101&110=100 x|y 或运算,100|101=101 x^y 异或运算,101^100=001 x<<1 左移运算 x>>1 右移运算 状压dp 先看一道题:
阅读全文
摘要:数位dp的引入 首先假设有一天,我们遇见一道题: 求在 \([a,b]\) 的区间里,满足条件的数有多少个。 如果我们没学过数位dp,我们会打出这样一个暴力: for(i=a; i<=b; ++i) if(check(i)) ++ans; 这样的时间复杂度是 \(O(n\times \text{ch
阅读全文
摘要:题目 在 \(n×n\) 的棋盘上放 \(k\) 个国王,国王可攻击相邻的 \(8\) 个格子,求使它们无法互相攻击的方案总数。 对于全部数据,\(1≤n≤10,0≤k≤n^2\) 思路 方法一:爆搜 方法二:状压dp 每行很大,不可能开个十几维数组,怎么办? 把每行压成一个二进制! 设 \(dp(
阅读全文
摘要:题目链接 题目 设一个 \(n\) 个节点的二叉树 \(\text{tree}\) 的中序遍历为$(1,2,3,\ldots,n)$,其中数字 \(1,2,3,\ldots,n\) 为节点编号。每个节点都有一个分数(均为正整数),记第 \(i\) 个节点的分数为 \(d_i\),\(\text{tr
阅读全文
摘要:题目链接 题目 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习。现在有 \(N\) 门功课,每门课有个学分,每门课有一门或没有直接先修课(若课程 a 是课程 b 的先修课即只有学完了课程 a,才能学习
阅读全文
摘要:题目链接 题目 有一棵苹果树,如果树枝有分叉,一定是分二叉(就是说没有只有一个儿子的结点) 这棵树共有 \(N\) 个结点(叶子点或者树枝分叉点),编号为 \(1 \sim N\),树根编号一定是 \(1\)。 我们用一根树枝两端连接的结点的编号来描述一根树枝的位置。下面是一颗有 \(4\) 个树枝
阅读全文
摘要:题目链接 题目 原题来自:ZJOI 2010 给定两个正整数 \(a\) 和 \(b\),求在 [\(a,b\)] 中的所有整数中,每个数码 (\(digit\)) 各出现了多少次。 思路 首先在数位dp中,对于当前枚举的数,乘上后面的方案数。 那么后面的数如何多次计算呢? 我们发现这些数具有传递性
阅读全文
摘要:题目链接 题目 单身! 依然单身! 吉哥依然单身! DS 级码农吉哥依然单身! 所以,他平生最恨情人节,不管是 \(214\) 还是 \(77\),他都讨厌! 吉哥观察了 \(214\) 和 \(77\) 这两个数,发现: \(2+1+4=7\) \(7+7=7×2\) \(77=7 × 11\)
阅读全文
摘要:题目链接 题目 由于科协里最近真的很流行数字游戏,某人又命名了一种取模数,这种数字必须满足各位数字之和 \(\bmod N\) 为 \(0\)。现在大家又要玩游戏了,指定一个整数闭区间 [\(a,b\)],问这个区间内有多少个取模数。 思路 数位dp。 三个转态:当前第几位?现在这一位是否有上限?当
阅读全文
摘要:题目链接 题目 不含前导零且相邻两个数字之差至少为 \(2\) 的正整数被称为 windy 数。windy 想知道,在 \(a\) 和 \(b\) 之间,包括 \(a\) 和 \(b\) ,总共有多少个 windy 数? 思路 数位dp,用 \(b\) 以内的减去 \(a-1\) 以内的就是答案。
阅读全文
摘要:题目链接 题目 科协里最近很流行数字游戏。某人命名了一种不降数,这种数字必须满足从左到右各位数字成小于等于的关系,如 \(123\),\(446\)。现在大家决定玩一个游戏,指定一个整数闭区间 [\(a,b\)],问这个区间内有多少个不降数。 思路 数位dp,用 \(b\) 以内的减去 \(a-1\
阅读全文