随笔分类 -  DP

摘要:题意: 给你n个物品,给出$a_i$,$b_i$,分表代表选择第i个物品前必须先选择第$a_i$个物品和选择第i个物品后获得的收益,你可以选择m个物品,求收益最大值。 题解: 首先这题很像一个背包,即有依赖关系的背包。 对于这个问题我们可以用树形dp来做。 转化模型:将所有物品与其父亲连边,代表选择 阅读全文
posted @ 2017-11-10 11:01 HLX_Y 阅读(188) 评论(0) 推荐(0)
摘要:题意: 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律。 通过一段时间的观察,lxhgww预测到了未来T天内某只股票的走势,第i天的股票买入价为每股APi,第i天的股票卖出价为每股BPi(数据保证对于每个i,都有APi =BPi),但是每天不能无限制地交易, 阅读全文
posted @ 2017-11-10 09:29 HLX_Y 阅读(224) 评论(0) 推荐(0)
摘要:题意: "传送门" 题解: spfa+dp 判下环即可 include include include include include include include define ll long long define N 300 using namespace std; int d,m,n,f, 阅读全文
posted @ 2017-10-23 23:06 HLX_Y 阅读(185) 评论(0) 推荐(0)
摘要:题意: 在坐标系上给出n个草堆和一个拖拉机,农夫约翰要把拖拉机开到(0,0),他不能走到有草堆的点,但他可以把草堆移开后再走,求他到终点最少需要移开多少个草堆。 题解: spfa+dp dp[x][y]表示到(x,y)最少需要多少个草堆,直接spfa即可; 总结: 1、spfa日常做dp; 2、点格 阅读全文
posted @ 2017-10-23 23:04 HLX_Y 阅读(212) 评论(0) 推荐(0)
摘要:题意: 给你m个机器,n个数,每个机器可以给n个数的某一段排序,求最少使用几个机器,保证可以把这个n个数排好序 题解: dp+线段树 挑战2上的原题,就不多说啦~ include include include include include include define ls x'9')) ch= 阅读全文
posted @ 2017-10-20 17:34 HLX_Y 阅读(304) 评论(0) 推荐(0)
摘要:题意: 给出一个n×m的玉米地,即一个01矩阵,1上的格子可以种地,0不可以,两个相邻的格子不能同时种地,求种地的方案数。 题解: 状压dp; 由于每一行的状态受到上一行的限制,所以肯定要考虑枚举这一行的状态和上一行的状态; 而当前这一行的状态又会受到一些限制,所以考虑如何防止不合法的状态被转移到; 阅读全文
posted @ 2017-10-20 17:25 HLX_Y 阅读(198) 评论(0) 推荐(0)
摘要:题意: n头公牛,m个仓库,每个公牛有一些自己喜欢的仓库,求每个公牛单独住进仓库的方案数。 题解: 状压dp,滚一维,两种写法,实测第一种写法要快些...... 滚掉第一维 include include include include include include define ll long 阅读全文
posted @ 2017-10-18 17:18 HLX_Y 阅读(149) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2017-10-16 22:58 HLX_Y 阅读(1) 评论(0) 推荐(0)
摘要:题意: 有N根木棍等待处理。机器在处理第一根木棍时需要准备1分钟,此后遇到长宽都不大于前一根木棍的木棍就不需要时间准备,反之则需要1分钟重新准备。 题解: dp 题目要求的就是将木棍分成x组,每组木棍的$l_i$和$r_i$都是不降的。 要求x最小,则x=将木棍按$l_i$从小到大排序后,$w_i$ 阅读全文
posted @ 2017-10-15 23:47 HLX_Y 阅读(165) 评论(0) 推荐(0)
摘要:题意: "传送门" 题解: 多重背包 转01背包,二进制分下组,压压常,轻松水过...... 阅读全文
posted @ 2017-10-15 23:39 HLX_Y 阅读(206) 评论(0) 推荐(0)
摘要:题意: "传送门" 题解: dp+线段树 O(nlogn)最长上升子序列 include include include include include include define ll long long define ls x'9')) ch=getchar(); if(ch==' ') o= 阅读全文
posted @ 2017-10-15 23:33 HLX_Y 阅读(113) 评论(0) 推荐(0)
摘要:题意: "传送门" 题解: 由于最多只有两件物品,所以转移主件的时候暴力转移附件即可 阅读全文
posted @ 2017-10-15 10:14 HLX_Y 阅读(118) 评论(0) 推荐(0)
摘要:题意: "传送门" 题解: dp 可以看做是从起点出发走两条不同的路径到终点,设dp[i][j][k][l],注意两个点(即前两维和后两维)要同时转移才能保证不走重复路径 include include include include include include define ll long l 阅读全文
posted @ 2017-10-15 10:10 HLX_Y 阅读(152) 评论(0) 推荐(0)
摘要:题意: "传送门" 题解: 区间dp 断环为链,由于是环,要枚举从哪个数开始合并。 2,3,5,10可以看做是2,3,5,10,2这段区间的合并,然后直接最简单的区间dp即可 注意:i要逆序枚举 include include define N 500 using namespace std; in 阅读全文
posted @ 2017-10-15 10:05 HLX_Y 阅读(130) 评论(0) 推荐(0)
摘要:题意: 有一个 1 维的扫雷游戏,每个格子用 表示有雷,用 0/1/2 表示无雷并且相邻格子中有 0/1/2 个雷。给定一个仅包含?、 、0、1、2 的字符串 s,问有多少种方法将所有的?改为 /0/1/2 使其合法。 题解: dp 这题告诉我,设计好一个状态是多么重要 考场上设dp[i][4],转 阅读全文
posted @ 2017-10-10 22:45 HLX_Y 阅读(241) 评论(0) 推荐(0)
摘要:题意:有编号为1 n的n个人,要为他们安排座位,他们从1 n依次入座,设第i个人的位置为$a_i$,如果$a_i$有人入座,那么就尝试$a_i+1$,如果一直有人入座,就一直尝试下去,直到第n个位置都有人就不合法,现有m个人钦定了自己的座位,你需要安排其他人的位置,求方案数 题解: dp+组合数学 阅读全文
posted @ 2017-10-08 11:54 HLX_Y 阅读(102) 评论(0) 推荐(0)
摘要:题意:给你一个网格图,再给你n个点,每个点有一个传送门,可以传送到别的点,传送门有三种,横向,纵向,九宫格,你一开始可以任选一个点为起点,问你最多能经过多少个点。 题解: tarjan+拓扑排序+dag上的dp 首先这题数据比较水,行和列都是$10^5$级别的 将能互相到达的点连边,tarjan缩点 阅读全文
posted @ 2017-10-07 22:53 HLX_Y 阅读(184) 评论(0) 推荐(0)
摘要:题意:给你一个n×m的矩阵(n,m include include include include include define ll long long define N 20 using namespace std; int n,m,r,c,ans=1'9')) ch=getchar(); if 阅读全文
posted @ 2017-10-05 23:40 HLX_Y 阅读(303) 评论(0) 推荐(0)
摘要:题意:给出n个物品,你有一个兴奋值,拿走一个物品需要花费$hrad_i$的代价($hrad_i$递增),拿完之后你的兴奋值可以增加$s_i$,你可以拿走所有$hard_i$小于兴奋值的物品,问拿完所有物品后的最大兴奋值 题解: dp+单调队列优化 include include include in 阅读全文
posted @ 2017-10-04 08:36 HLX_Y 阅读(82) 评论(0) 推荐(0)
摘要:题意:给你一副扑克中的几张牌,要你将这些牌进行排列,并且相邻的牌数字不能相同 题解: dp(组合数) dp[i][j]表示放到第i种数字,有j个数字相同且相邻的方案数 1、对于同一种数字,可以将其划分为k组,有C(cnt[i]-1,k-1)种分法 2、考虑将这k组中的l组放到数字相同的中间,其余放置 阅读全文
posted @ 2017-09-25 20:24 HLX_Y 阅读(247) 评论(0) 推荐(0)