随笔分类 -  dp

摘要:题意: 给一个序列a,对于每一位a[i],要求满足a[i]<=a[i1]或者a[i]<=a[i+1],如果a[i]=1,则表示该位未知,问最多有多少种序列可以满足条件。 思路: dp[i][j][k]表示第i位填充j的时候与前一位的关系是kk=0表示$ 阅读全文
posted @ 2020-04-17 12:49 Big-Kelly 阅读(110) 评论(0) 推荐(0) 编辑
摘要:题意: 给出一个序列a[n]和数字x,你可以选择任意一个区间把区间中的每个数乘上x。 问区间和的最大值是多少。 思路: dp[i][0]表示第i位在更新区间的前面,dp[i][1]表示在更新区间中,dp[i][2]表示在更新区间的后面。转移为: $dp[i][0]=max(0 阅读全文
posted @ 2020-04-13 20:15 Big-Kelly 阅读(140) 评论(0) 推荐(0) 编辑
摘要:题意: 给出一棵树,选一个节点作为根,使得所有子树的和最大,输出最大值。 思路: 换根DP。 代码: 1 //#include<bits/stdc++.h> 2 #include <set> 3 #include <map> 4 #include <stack> 5 #include <cmat 阅读全文
posted @ 2020-04-12 21:22 Big-Kelly 阅读(145) 评论(0) 推荐(0) 编辑
摘要:题意: 给一棵树,问有多少条边的长度大于K。 思路: 对于一个点x,处理出所有其他点到它的距离,n2找出经过它的所有长度加起来大于K的点对的数量。 但是找到的这些点对中存在不经过点x的点对,则减去这些点对的数量,若vx的子节点,wvx的距离,则减去距离 阅读全文
posted @ 2020-04-12 17:05 Big-Kelly 阅读(176) 评论(0) 推荐(0) 编辑
摘要:题意: 给一张有向图,可以把k条边的边权变成0,求点1n的最短路。 思路: dp+dijkstra思想。 dis[i][k]表示点1i实行了k次把边权变为0的操作之后的最短距离。转移为: $dis[v][k]=min(dis[v][k],dis[u][ 阅读全文
posted @ 2020-04-12 14:58 Big-Kelly 阅读(217) 评论(0) 推荐(0) 编辑
摘要:题意: 给定合法括号序列,可以给括号涂三种颜色:红色,蓝色,不上色。涂色需要满足以下两个要求: ①匹配括号必须一个上色一个不上色。 ②相邻括号不能上同一种颜色,但可以同时不上色。 求上色方案数。 思路: dp[i][j][k][l]表示区间(i,j)i上颜色kj上颜色l阅读全文
posted @ 2020-04-12 14:10 Big-Kelly 阅读(141) 评论(0) 推荐(0) 编辑
摘要:题意: n张卡片,每张卡片有4个属性w,x,isMagic,isSpellBoost分别表示花费,伤害,是否为魔法卡,是否为作用卡。如果使用一张魔法卡,可以使所有未使用的作用卡的费用减1,已知有W的钱,求造成的最大伤害。 思路: dp[i][j]表示使用了i张魔法卡,花费$j 阅读全文
posted @ 2020-03-30 11:10 Big-Kelly 阅读(140) 评论(0) 推荐(0) 编辑
摘要:题意: 给一个小写字母组成的串,问长度为K的不重复的子序列有多少个。 思路: dp[i][j]表示长度为i的最后一位为j的子序列的个数。 转移方程为:dp[i][j]=k=025dp[i1][k]。 特判K=0时个数为1。 代码: 1 #incl 阅读全文
posted @ 2020-03-30 10:54 Big-Kelly 阅读(170) 评论(0) 推荐(0) 编辑
摘要:题意: 给定整数c和数组abai表示通过爬楼梯的方法从第i层到i+1层需要的时间,bi表示通过坐电梯的方法从第i层到i+1层需要的时间,坐电梯前需要等c单位时间,求从第一层到各层的时间。 思路: $dp[i]=min\left\lbrace\ dp[j 阅读全文
posted @ 2020-03-30 10:37 Big-Kelly 阅读(114) 评论(0) 推荐(0) 编辑

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