随笔分类 -  dynamic programming

摘要:题意 n个数,皆不大于m,(1 /leq n, m \leq 10^6),求能构成的顺子和刻子的数目和的最大值。 题解 先考虑简化版,每个数只出现一遍,那明显是个水题。 然后考虑能不能限制每个数出现的次数来简化问题。全部设置不大于3次其实是不行的,毕竟优先考虑构成顺子或刻子是不行的。 例如数据1,2 阅读全文
posted @ 2019-07-13 20:11 xFANx 阅读(238) 评论(0) 推荐(0)
摘要:有N颗树,第i颗树上有$c_i$只鸟,召唤师每召唤一只该树上的鸟,法力上限增加B(常数),消耗法力$cost_i$ 召唤师从第1颗树到第N颗,每到一棵树回复法力值X,求最多召唤多少只鸟 input: $n, W, B, X(1 \leq n \leq 10^3, 0 \leq W, B, X, \l 阅读全文
posted @ 2018-08-28 21:36 xFANx 阅读(241) 评论(0) 推荐(0)
摘要:传送门 N个数,为1或2.由一次操作,对一段区间进行反转,然后求最长不下降子序列长度 emmm想的是如果反转区间可以使答案较原本序列更大,那么区间内对答案的贡献必然是一个1与2组成的序列。总共反转的区间有n^2个,那么如果我们对于每个反转序列,能够O(1)得求出贡献即可得到答案,因为区间前1的数目与 阅读全文
posted @ 2018-02-14 23:21 xFANx 阅读(282) 评论(0) 推荐(0)
摘要:传送门 N个数,允许将前连续任意个数变化为其相反数,也允许把后连续任意个数变为相反数,求最大和 令dp[i][0]前i个数操作后能得到的最大值,dp[i][1]出去前i-1个数操作后能得到的最大值 注意初始化,不然对于答案为无需操作的情况会出错 阅读全文
posted @ 2018-02-14 13:00 xFANx 阅读(195) 评论(0) 推荐(0)
摘要:传送门 把n1个步兵和n2个骑兵派成一列,已知连续的步兵不超过k1个,连续的骑兵不超过k2个,求总可能排列情况数 定义dp[i][j][2],指使用i个步兵,j个骑兵的排列。0代表排头为步兵,1代表排头为骑兵 阅读全文
posted @ 2018-02-09 19:14 xFANx 阅读(254) 评论(0) 推荐(0)
摘要:传送门 一个小写字母组成的字符串和允许更改次数k,n组序偶的价值,求能获得的最大价值 定义dp[k][l][i]位更改第k次时长度为l的串末尾为i时的最大收益。分原本字符串末尾就是i和不是两种去递推。 注意初始化问题。 1 #include <cstdio> 2 #include <cstring> 阅读全文
posted @ 2018-02-09 15:39 xFANx 阅读(204) 评论(0) 推荐(0)
摘要:传送门 N个数,每次操作可以将一个数增加(减小1),问使序列称为非升序列需要的最少操作数 首先明确操作后,序列中出现的数必然为原有序列中出现的数。那么我门复制一遍序列,然后排序,定义dp[i][j]为原序列前i个数不大于排序后序列第j位的最小花费。显然循环应是外层i,内层j,这样我们可以使用一维数组 阅读全文
posted @ 2018-02-07 23:27 xFANx 阅读(440) 评论(0) 推荐(0)
摘要:链接 求最长公共上升子序列并打印 不过这题1 ≤ n ≤ 500,也可以用O(n3)的算法吧 阅读全文
posted @ 2018-02-07 20:05 xFANx 阅读(83) 评论(0) 推荐(0)
摘要:传送门 T组数组,求对于每个数,有多少种表示成不同斐波那契数的和的方法。 e.g. 13=13=5+8=2+3+8 首先,每个数是肯定可以表示成斐波那契数类的和的,我们将数用01串表示,1代表取第i位斐波那契数。例如13表示成100000,4表示成101. 同时13也可以表示成11000。即一个1可 阅读全文
posted @ 2018-02-06 00:38 xFANx 阅读(257) 评论(0) 推荐(0)
摘要:传送门 在不大于100*100的地图上有星星,每个星星的亮度随时间变化,它们初始亮度不同,但能达到的最高亮度相同,为C。初始亮度为p,t时刻亮度为(p+t)%(C+1) 输入 n q c(为别代表星星数目,查询次数,最高亮度) n行 x y s(星星的横纵坐标和初始亮度) q行 t x1 y1 x2 阅读全文
posted @ 2018-02-04 00:25 xFANx 阅读(222) 评论(0) 推荐(0)
摘要:传送门 有n个点,要求从寻找一条从点1到点n,再从n到1的路径,要求这路径经过每个点且没有重复的点,并使得路径总长度最小。输入的是点的坐标<x,y>,保证x值严格递增。点的距离是欧几里得距离。 将问题转化为求解两条互不重叠的从1到n的路径。此时显然从每次走向横坐标更大的值是一个更优的解。我们定义dp 阅读全文
posted @ 2017-08-21 16:18 xFANx 阅读(101) 评论(0) 推荐(0)
摘要:传送门 题意:在一维的维度上,有一个间谍要从第1站到第n站。已知有从第1站到第n站的车与第n站开向第1站的车。间谍乘车到一个站时可以下车,若此时有车经过该站,他可以立即乘上该车。求保证间谍在T时刻可以到达第n站的前提下,不在车上(即在车站上等待)的最短时间。 输入:多组数据 第一行为n,第二行为T, 阅读全文
posted @ 2017-08-21 14:35 xFANx 阅读(145) 评论(0) 推荐(0)
摘要:传送门 给你串A和串B,|B| <= |A| 已知串B有两种可能含义,求串A的总可能含义数 dp[i]表示串A的从头开始长度为i的串的可能意义的数目 若该长度为i的串的后缀与模式串B匹配,则该后缀可以选择替换或者不替换 dp[i] = dp[i - 1] + dp[i - Bl] 否则dp[i] = 阅读全文
posted @ 2017-08-03 15:46 xFANx 阅读(115) 评论(0) 推荐(0)
摘要:记忆化搜索啊 或者直接对高度排序啊,这样就会先更新步数少的,后更新步数多的了,就可以直接利用先前已经得到的值了 阅读全文
posted @ 2017-07-30 20:48 xFANx 阅读(147) 评论(0) 推荐(0)
摘要:中文题 我是传送门 我们定义dp[i][j][k]为利用前i张牌使两个人的分数分别为j和k的方案数 需要注意的就是数组的大小而已。一开始没有想清楚,看到牌的大小不超过100,以为得分也不会超过一百...其实异或后可能出现得分二进制表示为1111111的情况 别忘了初始化。双方都不拿也是一种情况,dp 阅读全文
posted @ 2017-07-30 18:52 xFANx 阅读(226) 评论(0) 推荐(0)
摘要:传送门 Vasya有n天假期,每天可以去健身房或者撸代码。她不想连续两天做同种运动(脑力也是运动),但她可以每天当一条咸鱼,给出事件,求解最小的休息天数。 事件 健身房 机房 0 关 关 1 关 开 2 开 关 3 开 开 很明显的计数和状态转移,用dp解。dp[i][j]代表第i天做j事总计的休息 阅读全文
posted @ 2017-07-30 16:55 xFANx 阅读(146) 评论(0) 推荐(0)