DP
文章平均质量分 78
CMTM4
ACM退役
展开
-
【USACO3.1.2】总分 背包问题动态规划
完全背包问题。 f[i][j]表示用前j个物品,放满i的空间,能取得最大价值。 f[i][j] =max f[i - a[P]]j - 1] + b[P] j按顺序用的话,数组第二维可以压掉。即为f[i] = max f[i - a[P]] + b[P] Executing... Test 1: TEST OK [0.008 secs, 3484 KB原创 2015-02-18 13:09:38 · 507 阅读 · 0 评论 -
Codeforces Round #366 题解
Codeforces 366 Ant Man Black Widow原创 2016-08-09 16:27:18 · 834 阅读 · 0 评论 -
HDU 2243 AC自动机->DP->附矩阵乘法板子
题目大意: 给一些字母串,问长度为L【以内】的全部字母串中,有多少个字母串,【包含】给定的字母串。答案mod 2^64 首先,对于答案mod 2^64,只要全部使用unsigned long long进行运算,就会自动实现这个功能了。 然后假设,问题只求长度为L,而不是长度小于L的,这个问题怎么做呢? 参考前一个题解…… 题目转换为求【不包含】给定字母串来原创 2016-08-28 20:04:28 · 1808 阅读 · 2 评论 -
uva 11270 1*2骨牌拼矩形的方案数。【轮廓线DP】
LRJ的白书上的大致看懂了,感觉并不好推广就自己意淫了一个写法。 然后……很惊奇,一开始百度搜搜到一个哥们的题解http://blog.csdn.net/keshuai19940722/article/details/26133261 然后没看懂……然后我自己写出来,发现惊人的相似…… 大致如下:类似LRJ的做法,但是略微改变了排列顺序。 f[cur原创 2016-08-03 13:32:41 · 586 阅读 · 0 评论 -
HDU 5735 Born Slippy 【DP + 小技巧】
题目核心问题大意: 给一棵树,问你从K节点,找若干个他的祖先。使得相邻2个元素(一个为另一个最近的祖先)的XOR/AND/OR的值算出来, 然后求和,使得总值最大。 直接做tree dp会T,因为n^2的。 考虑到每个节点的权重数值比较小,所以把一个数值拆分成二进制。(题目中,数值为二进制16位),我们可以拆成高8位,和低8位。 这样,做DP的时候可以记录一个信息,原创 2016-08-06 10:06:30 · 292 阅读 · 0 评论 -
NOI2007货币兑换CASH 斜率DP CDQ分治
按照http://hzwer.com/3508.html改的…… 勉强能当自己板子用吧…… 感觉细节好多, 要注意各种细节,比如两个点重合啊,两个点的斜率不存在啊种种种种…… 太累了,但是我感觉判断2个点斜率差,可以用我的方法更好一些~ #include #include #include #include #include #define ll long原创 2016-08-02 16:41:07 · 382 阅读 · 0 评论 -
Codeforces Round #365 (Div. 2)Mishka and Divisors 题解。 DP
题目大意: 给一个N 然后给N个数字,分别为a1,a2...an 问,用若干个数字,ai,aj,ak....,他们的乘积,是M的倍数。 1、满足是M的倍数 2、尽可能少用数字 3、满足1,2条件的情况下,数字的和尽可能的小 4、无解输出-1 一个1e12的数字的约数,不会超过1W个。 因为一个数字的约数的公式是 ANS=(1+a)(1+b)(1+原创 2016-08-05 15:50:21 · 486 阅读 · 0 评论 -
codeforces EDU 15 (A,B,C,D,E)题解
为啥没F题? 有打野说是可持久化treap,我不会啊……还有讨论别的做法的,但是我都不会……也看不懂。 赛场上,最终AC也只有2个人,以后再补这道题。 AMaximum Increase题: 题目大意: 给定一串数字,问其中连续的一段,单调递增的序列,最长的长度是多长。 是子数组,不是子序列哦! f[i] = {f[j] + 1 | a[i]>a[j]} 否则为f[i原创 2016-08-02 11:05:28 · 594 阅读 · 0 评论 -
HDU 5732 2016多校Contest 1 Subway【找树的重心,判断树的同构】
题目大意: 给定一棵树,这两棵树肯定是同构的。 问你,第一棵树的每个节点,可以对应第二个树的那个节点。 显然对应方法不唯一,SPJ来检测结果正确。 方法: 首先找树的重心, 树的重心最多2个。 一个重心的情况很多,两个重心的情况如图: 有人说这个图太对称了…… 那给个不对称的。 这个图很重要……涉及到一些奇怪的情况原创 2016-08-04 16:09:14 · 1130 阅读 · 0 评论 -
HDU 5743 Join The Future 给定部分区间和奇偶,和数字范围,求方案数 DP
HDU 5743 Join The Future原创 2016-08-15 19:47:46 · 502 阅读 · 0 评论 -
HDU 3507 Print Article 斜率DP入门 【斜率比较要避免除0,所以要化简式子,要考虑2点重合情况】
总体思路如:http://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html 其中这篇文章有一点是错的。 要维护的是是下凸壳,不是上凸壳~ 大致有几个重点:f[i] = min(f[j] + (s[i]-s[j])^2) + m 然后这是n^2的会T 于是我们把对于求f[i]而言,写出从原创 2016-07-31 12:18:27 · 495 阅读 · 0 评论 -
HDU 5723 2016多校Contest 1 A题【细节:MST构边要小心】
题目大意: 给一个图,每个边长度分别为1~m,让你选出n-1个边,造一个权重最小的树(显然为最小生成树,并且唯一) 并求出这棵树,任意2点之间连线的距离的期望。 官方题解: 首先注意到任意两条边的边权是不一样的,由此得知最小生成树是唯一的,最小生成树既然 是唯一的,那么期望其实也就是唯一的,不存在什么最小期望。求完最小生成树之后,接下 来的问题就可以转换成在最小生成树上求任原创 2016-07-24 14:03:44 · 401 阅读 · 0 评论 -
codeforces #300 E. Demiurges Play Again(tree DP)
题目大意: 给定一棵树,根为1. 有一颗棋子在根上,2个人轮流,把棋子往叶子节点走。所有的叶子节点被从1~k(k是叶子的总数)编号。 先手的人,希望最终落在的叶子节点尽可能的大, 后手的人希望最终停留的叶子节点的编号尽可能的小。 有另外2个人负责给叶子节点进行编号,一个人希望最终停留的叶子节点的编号尽可能的大,另外一个人则希望编号尽可能的小。 问,第一个人编号后,棋手的游原创 2016-07-23 21:10:09 · 513 阅读 · 0 评论 -
【USACO3.3.2】商店购物 状态压缩动态规划
节约空间我自然用了滚动数组…… 偷懒用指针来实现滚动了。 用二进制标志状态。 因为最多只买5种商品。 所以f[][][][][] 每一维空间表示每个商品购买的情况, 这里只说一下二维的情况 f[i][j] = f[a][b] + a[p] 其中: b[p]+a = i c[p] + b = j 说白了,就是用几维空间, 第一维,就是第一个商品的原创 2015-03-22 16:06:01 · 628 阅读 · 0 评论 -
【USACO2.3.2】奶牛家谱 动态规划
f[k][n]表示 用N个节点,组成深度小于等于K层的方案数。 显然f[k][n] =sum( f[k - 1][p] + f[k - 1][q]) (p + q + 1 = n) 最终答案即为f[k][n] - f[k - 1][n] PS:short和int运算速度差不多啊卧槽 #include unsigned short f[101][201]原创 2015-02-17 01:20:53 · 1086 阅读 · 0 评论 -
HDU 5730 2016多校Contest 1 G题【CDQ分治和FFT模板】
题目大意思: 求f[i] = sum(f[j] + a[i-j]) , a为题目给出。f[0]=1 然后后用CDQ分治,分治后用FFT。 要点:FFT的double精度有限……这题读入的时候要先mod再计算 第二:给kaungbin的FFT模板略加整理,更加好用一些。PS:多加一个整理函数,速度多300ms?! #include #include #inc原创 2016-08-02 23:18:10 · 473 阅读 · 0 评论