
DP与贪心
文章平均质量分 81
DP and Dreed
Tan_Yuu
TA其实没那么懒,但确实没有添加简介
展开
-
Serval and Rooted Tree(CF1153D)-DP
对于一个有 k 个叶子的max min操作树,在 k 个叶子中填入1~k,求树根的最大值;由于题目中不要求输出填充结果,我们可以使用“第几大”来标记大小:对于max节点,其节点值为子节点的最小值,对于min节点,其节点值为子节点的和;在这个过程中,我们压缩掉了很多无用的信息,简化了问题;定义状态表示:f[i]f[i]f[i] 为在以 i 为根节点的子树中,i 的值为子树中的第几大;定义初值:对于叶子节点 i ,f[i]=1f[i]=1f[i]=1 ;定义状态转移方程:对于max节点,f[...原创 2022-06-11 09:14:36 · 251 阅读 · 0 评论 -
Two Merged Sequences(CF 1144 G)(将序列拆分成升序序列和降序序列两部分)-DP
构建状态表示:dp[i][1]dp[i][1]dp[i][1] 代表在前 i 位中,若第 i 位为升序序列结尾,此时降序序列结尾的最大值;op[i][1]op[i][1]op[i][1] 代表若第 i 位为升序序列结尾,dp[i][1]dp[i][1]dp[i][1]取当前值时,第 i-1 位在升序序列 / 降序序列(1升0降);dp[i][0]dp[i][0]dp[i][0] 代表在前 i 位中,若第 i 位为降序序列结尾,此时升序序列结尾的最小值;...原创 2022-06-07 10:54:11 · 503 阅读 · 0 评论 -
种树-优先队列
洛谷 P1792 种树思路我们考虑单个树坑,若此树坑被选择,则两侧树坑都不可选;会存在某种情况,选择两侧的树坑带来的总收益大于此树坑,我们就可以在选择此树坑时向优先队列中加入“后悔项”,权重是其左右两侧的树坑之和减去该树坑(v[i−1]+v[i+1]−v[i]v[i-1]+v[i+1]-v[i]v[i−1]+v[i+1]−v[i]);普适来说,我们构造一种“评价块”,其满足以下性质:其长度为奇数;其左右端点树坑均认为被种植,并以此隔一种一;其权值为区间内所有被种植-未种植,即(∑i被种植vi原创 2022-03-17 17:12:44 · 694 阅读 · 0 评论 -
鱼塘钓鱼-贪心
题目来源:Acwing 1262. 鱼塘钓鱼&洛谷 P1717 钓鱼&NEFU OJ-364 鱼塘钓鱼(题目描述来自Acwing,代码为其AC代码,后附三者代码区别)题目描述有 N 个鱼塘排成一排,每个鱼塘中有一定数量的鱼,例如:N=5 时,如下表:鱼塘编号 1 2 3 4 5第1分钟能钓到的鱼的数量(1…1000) 10 14 20 16 9每钓鱼1分钟钓鱼数的减少量(1…100) 2 4 6 5 3当前鱼塘到下一个相邻鱼塘需要的时间(单位:分钟) 3 5 4 4 即:原创 2021-02-08 14:09:45 · 1055 阅读 · 0 评论 -
关押罪犯-并查集、贪心
题目来源:Acwing 257.关押罪犯&洛谷 P1525 [NOIP2010 提高组] 关押罪犯思路来源:这里题目描述S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为 c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为 c 的冲突事件。每年年原创 2021-02-07 20:21:17 · 685 阅读 · 0 评论 -
关于 压缩编码 一题的思路+解法(区间DP)
题目来源:Acwing.3240 压缩编码题目描述给定一段文字,已知单词 a1,a2,…,an 出现的频率分别 t1,t2,…,tn。可以用 01 串给这些单词编码,即将每个单词与一个 01 串对应,使得任何一个单词的编码(对应的 01 串)不是另一个单词编码的前缀,这种编码称为前缀码。使用前缀码编码一段文字是指将这段文字中的每个单词依次对应到其编码。一段文字经过前缀编码后的长度为:L=a1 的编码长度 ×t1+a2 的编码长度 ×t2+…+an 的编码长度 ×tn。定义一个前缀编码为字典原创 2021-04-07 07:18:58 · 330 阅读 · 0 评论 -
关于 网络延时 一题的思路+代码(树的后序遍历&DP)
题目来源:Acwing-3215.网络延时题目描述给定一个公司的网络,由 n 台交换机和 m 台终端电脑组成,交换机与交换机、交换机与电脑之间使用网络连接。交换机按层级设置,编号为 1 的交换机为根交换机,层级为 1。其他的交换机都连接到一台比自己上一层的交换机上,其层级为对应交换机的层级加 1。所有的终端电脑都直接连接到交换机上。当信息在电脑、交换机之间传递时,每一步只能通过自己传递到自己所连接的另一台电脑或交换机。请问,电脑与电脑之间传递消息、或者电脑与交换机之间传递消息、或者交换机与原创 2021-02-19 13:00:37 · 294 阅读 · 0 评论 -
序列合并-优先队列
题目来源:洛谷 P1631 序列合并&&NEFU OJ-??? 序列合并(后者链接将于赛后补上,接下来题目描述来自后者,代码符合后者要求)题目描述给出两个长度为 n 的有序表 A 和 B,在 A 和 B 中各任取一个元素,可以得到 n^ 2 个和,求这些和中最小的 n 个。输入描述第 1 行包含 1 个整数 n(1≤n≤400000)。第 2 行与第 3 行分别有 n 个整数,各代表有序表 A 和 B。一行中的每两个整数之间用一个空格隔开,大小在长整型范围内,数据保证有原创 2021-02-02 22:53:37 · 496 阅读 · 0 评论 -
关于 硬币数目 的思路+代码
题目来源:NEFU OJ-971 硬币数目OPDP感谢sl大佬的讲解思路面对这个数据量,dfs肯定会爆TLE,所以打算用DP。对于一般情况,状态转移也不复杂:在求最小硬币数时,对于第 i 枚硬币,面值为 v [ i ] ,金额为 j 时,f [ i , j ]=min( f [ i - 1 , j ] , f [ i , j - v [ i ] + 1 )最大硬币数则为 f [ i , j ]=max( f [ i - 1 , j ] , f [ i , j - v [ i ] + 1 )原创 2021-01-23 23:53:48 · 302 阅读 · 0 评论 -
关于 硬币购物 一题的思路+难点分析+代码 (DP + 容斥)
题目来源:/*这个题好经典的,哪里都有*/ NEFU OJ-1793 硬币购物题目描述硬币购物一共有4种硬币。面值分别为c1,c2,c3,c4。某人去商店买东西,去了tot次。每次带di枚ci硬币,买si的价值的东西。请问每次有多少种付款方法。输入描述第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s输出描述每次的方法数输入样例1 2 5 10 23 2 3 1 101000 2 2 2 900输出样例427提示数据规模原创 2021-01-27 23:13:24 · 375 阅读 · 2 评论 -
关于 阿华分硬币 一题的思路+注意点+代码(数组分成差最小的两部分)
题目来源:NEFU OJ-1367 硬币数目OPDP思路首先这个数据量,穷举遍历是行不通的,所以计划用dp,类似于0-1背包问题对于这个题我们可以如下构造:b[i][j]为在有前 i 枚硬币时,选出不超过 j 的最大金额值。(不需要担心大于or小于总金额一半到问题,因为若能组成大于总金额一半且差值最小的组合,则另一半即为小于总金额一半且差值最小的组合)接下来的a[i]代表第i枚硬币的面值那么状态转换就是 b[i][j] = max ( b[i-1][j] , b[i-1][j-a[i]] +原创 2021-01-26 21:30:26 · 294 阅读 · 0 评论 -
加分二叉树-DP
题目来源:Acwing 479-加分二叉树&NEFU OJ-353 加分二叉树NEFU OJ题源为多组输入,代码为此oj ac代码题目描述设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下: subtree的左子树的加分 × subtree的右子树的加分 + sub原创 2021-01-29 21:54:35 · 312 阅读 · 0 评论