随笔分类 -  动态规划--普通dp 记搜

摘要:题目 分析 很难想到方向,但有方向了就很easy了。 我们如何减少不必要的计算? 如果我们知道了$ 100111 $的相容的数,$ 100101 $的相容数和他是完全一样的。 我们就靠着这个思想写一下就行了。 注意位运算优先级。 代码 1 #include <bits/stdc++.h> 2 usi 阅读全文
posted @ 2018-08-23 23:55 noble_(noblex) 阅读(329) 评论(0) 推荐(0) 编辑
摘要:题目 分析 这种题不会做 吃枣药丸。。。。。 想到状压已经经过的点。 然后更新时枚举两个点加进去。 复杂度$ {O(2^n \times n^2)}$。 凉凉。 真正的做法是每一个状态只要找到一组解就break。这样可以省掉一层n。 大致上就像lrj紫书的dp例题一样,反正这个点都要选,那就先选了他 阅读全文
posted @ 2018-08-23 23:50 noble_(noblex) 阅读(307) 评论(0) 推荐(1) 编辑
摘要:题目 分析 用$ dp[i][j] $表示用i个节点,有多少深度小于等于j的二叉树。 答案是$ dp[n][n] - dp[n][h-1] $ 转移时枚举左子树的节点数量,就可以知道右子树的节点数量。不断相乘加到$ dp[i][j] $上。 代码 1 #include <bits/stdc++.h> 阅读全文
posted @ 2018-08-23 23:41 noble_(noblex) 阅读(279) 评论(0) 推荐(1) 编辑
摘要:题目 分析 洛谷题解里有一位大佬讲的很好。 就是先用栈预处理出可以匹配的左右括号在数组中设为1 其他为0 最后求一下最长连续1的数量。 代码 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e6+10; 4 ch 阅读全文
posted @ 2018-08-23 23:34 noble_(noblex) 阅读(181) 评论(0) 推荐(1) 编辑
摘要:题目 分析 求结尾0的数量QwQ。 10只能是$ 2 \times 5 $,我们预处理出每个数因子中2和5的数量。 我们接着dp出从左上到右下的经过的最少的2的数量和最少的5的数量。两者取min后就是答案。 特判数据中有0的情况,把他当做10处理。如果此时答案大于1,那么把答案更新成1。因为0只有1 阅读全文
posted @ 2018-08-23 23:31 noble_(noblex) 阅读(234) 评论(0) 推荐(0) 编辑
摘要:题目 分析 dp基础题。 $ dp[i][j] $表示前i个数分成j组的最大和。 转移显然。 吐槽:做cf题全靠洛谷翻译苟活。 代码 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const i 阅读全文
posted @ 2018-08-23 23:18 noble_(noblex) 阅读(149) 评论(0) 推荐(0) 编辑
摘要:题目 分析 算是概率dp不错的题。 $ dp[i][j] $表示有i个人时,这i个人中的第j个获胜的概率。 我们把i从1推到n,那么答案就是$ dp[n][i] $ 然后我们规定,第一个人就是庄。 然后我们枚举每个卡片tmp。 $ dp[i][j]=dp[i][j] + dp[i-1][j-tmp] 阅读全文
posted @ 2018-08-05 18:51 noble_(noblex) 阅读(260) 评论(0) 推荐(0) 编辑
摘要:题目 分析 发现我们关心的不是棋子的位置,我们只关心棋子数量就ok。 首先每行每列最多两个棋子。这是显然的。 然后我觉得本题最难的部分就是对行进行讨论,蒟蒻我一直被限制在了对格点讨论。。。。 $dp[i][j][k] $放了前$i$行,有$j$列有1个棋子,有$k$列有2个棋子。转移就很显然了。 代 阅读全文
posted @ 2018-08-05 00:51 noble_(noblex) 阅读(165) 评论(0) 推荐(0) 编辑
摘要:题目 分析 数学期望 用$ dp[i][j] $表示发现了在$ j $个子系统里面发现了$ i $个bug到$ s $个子系统里面发现了$ n $个bug需要的期望天数。 $ dp[0][0] $就是答案。 然后分类一下,可以转移到$ dp[i][j] $无非就是$ dp[i+1][j+1] $ $ 阅读全文
posted @ 2018-08-02 13:14 noble_(noblex) 阅读(190) 评论(0) 推荐(0) 编辑
摘要:题目 A:Codehorses T-shirts 题意: 给定一些字符串表示去年和今年的衣服型号大小( XL XXL M...... ),要求用最少的次数把去年的衣服大小改成今年需要的。每次改动只能更改字符,不能增添字符。 分析: 把今年和去年的型号字典序排一下。然后用挨个对上(因为题目保证合法,所 阅读全文
posted @ 2018-07-03 00:49 noble_(noblex) 阅读(168) 评论(0) 推荐(0) 编辑
摘要:题目 分析 题意:给个数列,求有多少五元上升组 考虑简化一下问题:如果题目求二元上升组怎么做。 仿照一下逆序对,用树状数组维护一下就ok了。 三元怎么做呢? 把二元的拓展一位就可以了,即把第三个也扔进树状数组 所以这题就渐渐明朗了: 用$ dp[i][x] $表示以$ A[x] $结尾的$ x $元 阅读全文
posted @ 2018-06-26 15:03 noble_(noblex) 阅读(240) 评论(0) 推荐(0) 编辑
摘要:题目 分析 水题。$ O(nlogn) $的LCS 代码 #include <bits/stdc++.h> using namespace std; const int maxn=255*260, INF=1e9; int S[maxn], g[maxn], d[maxn]; int num[max 阅读全文
posted @ 2018-06-25 23:56 noble_(noblex) 阅读(126) 评论(0) 推荐(0) 编辑
摘要:题目 传送到洛谷QWQ 分析 我一开始也不会做这题的,后来看了很多网上的题解,终于AC了。(我好菜啊) 主要参考:传送门QWQ 直接搞非常麻烦,反正我是不会做。于是考虑求反,即求有多少不包含任何单词的数量。最后再用$ {26}^m $减去就ok了。 于是在$ AC $自动机上搞$ dp $。 用 $ 阅读全文
posted @ 2018-02-06 23:43 noble_(noblex) 阅读(337) 评论(0) 推荐(1) 编辑
摘要:Milking Time Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10898 Accepted: 4591 Description Bessie is such a hard-working cow. In fact, s 阅读全文
posted @ 2017-11-02 17:36 noble_(noblex) 阅读(242) 评论(0) 推荐(0) 编辑
摘要:Apple Catching Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13447 Accepted: 6549 Description It is a little known fact that cows love ap 阅读全文
posted @ 2017-10-31 18:02 noble_(noblex) 阅读(164) 评论(0) 推荐(0) 编辑
摘要:Sumsets Time Limit: 2000MS Memory Limit: 200000K Total Submissions: 20315 Accepted: 7930 Description Farmer John commanded his cows to search for diff 阅读全文
posted @ 2017-10-29 13:34 noble_(noblex) 阅读(187) 评论(0) 推荐(0) 编辑
摘要:题目背景 给一组 N 枚邮票的面值集合(如,{1 分,3 分})和一个上限 K —— 表示信封上能够贴 K 张邮票。计算从 1 到 M 的最大连续可贴出的邮资。 题目描述 例如,假设有 1 分和 3 分的邮票;你最多可以贴 5 张邮票。很容易贴出 1 到 5 分的邮资(用 1 分邮票贴就行了),接下 阅读全文
posted @ 2017-10-27 22:28 noble_(noblex) 阅读(359) 评论(0) 推荐(0) 编辑
摘要:题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去。到那时,岛上的所有人都会遇难。守望者的跑步速度为17m/s,以这样的速度是无法逃离荒岛的。庆 阅读全文
posted @ 2017-10-27 06:49 noble_(noblex) 阅读(226) 评论(0) 推荐(0) 编辑
摘要:题目描述 给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如: N=5, K=2,5个数字分别为1、2、3、4、5,可以加成: 1*2*(3+4+5)=24 1*(2 阅读全文
posted @ 2017-10-26 21:54 noble_(noblex) 阅读(375) 评论(0) 推荐(1) 编辑
摘要:题目描述 Farmer John is herding his N cows (1 <= N <= 2,500) across the expanses of his farm when he finds himself blocked by a river. A single raft is av 阅读全文
posted @ 2017-10-25 22:11 noble_(noblex) 阅读(246) 评论(0) 推荐(0) 编辑

/* */