
普通DP
morejarphone
这个作者很懒,什么都没留下…
展开
-
HDU5074(DP)
比较水的DP。题意是用m个不同音符创作含n个音符的音乐:a1, a2,a3.......an。要求max (sore(a1,a2)+sore(a2,a3)+...+sore(an-1, an))。用dp[i][j]表示第i个音符使用j的最大价值,max (a[n][k] | 1#include #include #include #include #include #incl原创 2015-10-05 14:19:38 · 501 阅读 · 0 评论 -
HDU 2457 (AC自动机 DP)
题目链接:点击这里题意:给定一个DNA串, 至少改变多少字母才能使得所有的模式串都不出现在这个DNA串里.先给所有的模式串建立AC自动机,然后DNA串就不能走到自动机上的危险节点, 也就是模式串的结尾节点. 假设dp[i][j]dp[i][j]表示在字典树上i节点, DNA串长为j的最小改变个数, 转移就是d[i][j]=min{dp[k][j−1]dp[k][j−1]+1buf[k]=buf[i+原创 2016-06-17 12:30:12 · 360 阅读 · 0 评论 -
HDU 3341 (AC自动机 DP)
题目链接:点击这里题意:给出n个DNA模式串, 和一个文本串, 调整文本串字符的顺序使得所有模式串出现的次数和最多.因为四种字符出现的次数都有限, 可以用类似于进制的做法记录字符出现的状态, 如果四个字符的总数有aa, bb, cc, dd, 当前状态出现的次数是xx, yy, zz, kk, 那么状态就记录为x×(b+1)×(c+1)×(d+1)+y×(c+1)×(d+1)+z×(d+1)+k×1原创 2016-06-17 16:31:47 · 566 阅读 · 0 评论 -
HDU 4511 (AC自动机 DP)
题目链接:点击这里题意:给定n个点的坐标, 每次只能从一个点走到编号比他大的点. 求一条最短的路径, 并且这条路径上不能有给出的子路径.把这些子路径插进AC自动机里, 然后用dp[i][j]dp[i][j]表示在图上的ii, 字典树上的jj的最短路径, 转移方程就是dp[i][j]=min{dp[p[k]+dis(p,i)∣∣next[k][i]=j}dp[i][j]=min\left\{dp[p[原创 2016-06-17 18:12:34 · 605 阅读 · 0 评论 -
HDU 5763 (哈希 DP)
题目链接:点击这里题意:某个子串可以用*代替,求一个字符串的所有表达方式。用哈希(或者KMP)预处理每一个下标是不是子串的结尾,用dpidp_i表示原串到i下标有多少种表达方式,转移就是dpi={dpi−1dpi−1+dpi−len(子串)i不是子串的结尾i是子串的结尾 dp_i=\left\{\begin{aligned}dp_{i-1} & & {i不是子串的结尾}\\dp_{i-1}+d原创 2016-07-29 12:45:52 · 549 阅读 · 0 评论 -
HDU 5811 (拓扑排序 LIS)
题目链接:点击这里题意:给定n个人之间的强壮关系(没有传递性),分成两个组,首先判断每一组是否能够通过某种排列使得前面的人都比后面的人强壮。如果可以,最多能从2组中选几个人到1组使得1组通过排列仍然使得前面的人都比后面的人强壮。因为是个竞赛图,只要没有环就行(DAG),所以直接拓扑如果出队列数刚好等于节点数就可以,在拓扑的时候顺便记下拓扑序给先前的两组按照拓扑序排完。至于最多能够扔过去的点,本来想的原创 2016-08-12 23:20:32 · 412 阅读 · 0 评论 -
POJ 3597 (DP)
题目链接:点击这里题意:一个多边形剖分成三角形或者四边形的方案数。先定下一条边,然后枚举它所在的图形的最左边那条线和最右边那条线,这两条边和图形的交点再连边,相当于把图形分成三份。这样直接枚举最左边的线和最右边的线是n3n^3的复杂度。 考虑枚举右边那条边,这样先连同定下的那条边构成一个三角形,另一个顶点是和这个三角形去分左边的图案,所以记录下拿三角形分一个多边形的方案就可以做到n2n^2了。#i原创 2016-10-13 16:21:35 · 303 阅读 · 0 评论 -
HDU 5117 (DP)
题目链接:点击这里题意:n个灯,m个开关,一共有2m2^m种开关的状态,每一个开关可以将某些灯泡的状态异或。求出每一种开关状态下X3X^3的和,X表示开关状态下亮的灯泡假设一种开关状态下的灯泡状态是x1,x2,…xnx_1,x_2,\dots x_n,那么对答案的贡献就是(x1+x2+⋯+xn)3=∑ni=1∑nj=1∑nk=1(xi∗xj∗xk)(x_1+x_2+\dots +x_n)^3=\su原创 2016-10-01 00:40:03 · 358 阅读 · 0 评论 -
HDU 1125 (DP)
题目链接:点击这里题意:给出一个数每个数位数字的和,每个数位数字的平方和,求出符合条件的最小数字。这个数字的数位不能超过100位。乍一看像构造,其实存在最有策略。可以用dp[i][j]表示数位和为i,数位平方和为j的最短数字长度,这样就可以dp[i][j]=min{dp[i][j],dp[i−bit][j−bit∗bit]}dp[i][j]=min\left\{dp[i][j], dp[i-bit]原创 2016-10-27 20:58:51 · 356 阅读 · 0 评论 -
codeforces 731E (优先队列 DP)
题目链接:点击这里题意:给出n个数字,A和B两个人依次选中1−k(k≥2)1-k(k \geq2),把他们合并之后自己分数加上这些数的和。求两个人在最右策略下A最多领先B多少。当数字只剩下一个之后游戏马上结束。用dp[i][0/1]dp[i][0/1]表示前i个数字被合并,现在是A/B先手到最后游戏结束最多领先多少。故A要最大化后继状态的值,B要最小化后继状态的值,转移就很显然了: dp[i][0原创 2016-10-18 20:29:36 · 559 阅读 · 0 评论 -
codeforces 512B (map DP)
题目链接:点击这里题意:给出一堆数字,每个数字有一个花费和长度,表示花费多少钱就可以走这样的长度。初始在坐标原点,问能够走到所有的坐标的最少花费。考虑取两个数,那么能够走到所有的点是两者gcd的倍数。所以只需要选择花费最少的数使得这些数的gcd=1。由于gcd数字比较大但是最多不会超过nlgn,所以直接用map记录每一种gcd的下标然后DP即可。#include <bits/stdc++.h>us原创 2016-10-20 21:33:06 · 399 阅读 · 0 评论 -
Kattis taboo (AC自动机 拓扑排序 DP)
题目链接:点击这里题意:给出n个01串,要构造一个最长的串使得这个串不包含所有出现过的串,无解输出-1.首先把所有的点扔进自动机,因为出现过的串不能在我们构造的串中出现,所以事先把某些”坏点”标记,坏点指的就是每个串的结束节点以及沿着结束节点fail指针走下去的节点. 如果剩下的图中能够沿着根走出一个环那么必然就无解了, 判环可以用一遍拓扑确定. 排除无解情况剩下就是一个DAG了, 用dp[i][j原创 2016-11-17 20:18:26 · 1022 阅读 · 0 评论 -
Kattis peaktram (树状数组 DP)
题目链接:点击这里题意:给出n个物体的高度以及将他们高度改变1单位的花费,一个观测点从最左端从0往上走,一直平视. 问至少能观测到k个物体的最小花费.因为高度比较大,所以需要将高度离散化,那么需要离散化哪些高度呢?容易发现对于每一个建筑,只要把它+-70范围内的高度离散化就好了,这样最多就是70*140种高度.然后用dp[i][j][k]dp[i][j][k]表示到i物体,最大高度是j,一共看到k个原创 2016-11-17 20:06:08 · 666 阅读 · 2 评论 -
UVA 10943 (DP 水~)
题意:求k个数小于等于n的数和为n的方案数.dp[i][j]表示用了i个数和为j的方案数,然后转移下就好了.#include #include #include #include #include #include #include #include #include using namespace std;#define maxn 111#define mod 10原创 2016-06-07 15:38:33 · 277 阅读 · 0 评论 -
codeforces 414B (DP)
B. Mashmokh and ACMtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputMashmokh's boss, Bimokh, didn't like Mas原创 2016-05-26 21:52:19 · 384 阅读 · 0 评论 -
codeforces 676B (DP 水)
B. Pyramid of Glassestime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputMary has just graduated from one well-原创 2016-05-26 10:30:04 · 661 阅读 · 0 评论 -
HDU1398(DP或者母函数)
题意是求n用平方数的和的表示方法种数。水题怎么搞都行。DP:#include#include#includeusing namespace std;#define maxn 41111long long dp[311];int a[22];int n;int main () { for (int i = 1; i <= 17; i++) a[原创 2015-10-04 20:56:23 · 456 阅读 · 0 评论 -
UVALive 4651(DP)
题意是给你n个点,你需要从第一个到第n个点连一条折线,折线中间按顺序经过若干个点,并且折线外的点离这条折线的最近距离需要小于D。需要求这条折线的最小长度。DP[i][j]表示到第i个点为止折线上有j条线段的最短长度,那么DP[k][j+1] = min (dp[k][j+1], dp[i][j]+distance (i, j)), 其中k>i,并且在线段ik之间的每个点都满足点到线段的距离小于原创 2015-10-20 12:08:59 · 277 阅读 · 0 评论 -
UESTC OJ1218(DP)
南阳CCPC的D题。题意是长度为L的背包放金条,每个金条有长度和就价值,金条能露出在背包两侧外面但是不能超过长度的一半,求最大的价值。dp[i][j][k]表示处理到i个金条,用了j的长度,有k根露在外面的最大价值,状态转移就只有放,或者放外面或者不放。坑点就是金条长度是奇数会跪需要吧所有的长度预先都乘以2,还有一根金条无论怎样都能放。#include using namespace原创 2015-10-26 20:27:40 · 539 阅读 · 0 评论 -
HDU 3127 (DP)
写过的最坑的题目。题意很不清楚,意思是把一块布横向或者纵向切割,如果得到一块长xi,宽yi的布就可以得到vi的价值。首先每两次切割都必须得到一块有价值的布(题目哪里有说啊)。然后就很简单了暴力枚举。坑爹的是long long 死活wa 改成int居然就好了也是瞎了狗眼。#include using namespace std;#define maxn 33struct原创 2015-11-13 15:44:24 · 380 阅读 · 0 评论 -
HDU 1059 (DP)
题意是有价值1-6的大理石,告诉你每种价值的个数问能不能分成总价值相同的两堆。首先每种石头需要计算的个数不会超过6个。比如对于1,如果最后分成的两堆都有1,那么我们可以预先把相同数量的1拿掉,最后使得只剩下某一堆中含有1,那么最多含有多少呢?应该是5。因为如果有大于等于6的1,那么我们总可以在另一堆中拿掉一块大理石,那后这一堆中拿掉相应数量的1补偿。所以1最多只有5块。比如对于2,同样原创 2015-11-16 23:51:41 · 290 阅读 · 0 评论 -
NEU 1576 (DP)
链接:点击打开链接1576: Good Sequence时间限制: 1 Sec 内存限制: 128 MB提交: 19 解决: 10[提交][状态][讨论版]题目描述This is the definition of the good sequence:Suppose sequence the length which is n is : A1,A2...原创 2016-02-15 13:55:56 · 327 阅读 · 0 评论 -
POJ 3783 (DP)
BallsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 875 Accepted: 577DescriptionThe classic Two Glass Balls brain-teaser is often posed as: "Given原创 2016-03-31 18:14:09 · 1003 阅读 · 0 评论 -
Codeforces 645E (构造 DP)
E. Intellectual Inquirytime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAfter getting kicked out of her rep原创 2016-03-22 21:03:39 · 533 阅读 · 0 评论 -
HDU 5642 (DP)
King's OrderTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 280 Accepted Submission(s): 167Problem DescriptionAfter the king'原创 2016-03-13 18:30:29 · 400 阅读 · 0 评论 -
NEU 1007 (字典树 DP)
1007: English Game时间限制: 1 Sec 内存限制: 128 MB提交: 294 解决: 64[提交][状态][讨论版]题目描述This English game is a simple English words connection game.The rules are as follows: there are N Eng原创 2016-04-06 21:33:07 · 371 阅读 · 0 评论 -
HDU 5653 (DP)
Bomber Man wants to bomb an Array.Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 143 Accepted Submission(s): 43Problem Descripti原创 2016-03-26 23:36:32 · 655 阅读 · 0 评论 -
HDU 5550 (DP)
题目链接:点击打开链接题意:有n层楼,每层有两类人,假设是0,1,然后为每一层楼设置一个01属性使得所有人走到自己属性的楼层的距离和最小。容易想到的是dp[i][0/1]表示这一层属性是0/1的情况下1-i层的最小值,但是有个问题就是另一种属性不知道应该去那一层,所以状态转变一下。因为层的属性肯定是连续的0或者1拼接成的,可以设dp[i][0/1]表示这一层属性是0/1的情原创 2016-04-14 01:20:42 · 580 阅读 · 0 评论 -
codeforces 731D (DP 二分 二维RMQ)
题目链接:点击这里题意:给出一个01矩阵,每次询问一个矩形中的最大全1正方形的边长。用dp[i][j]dp[i][j]存储以(i,j)(i,j)为右下角的最大全1正方形,转移方程就是dp[i][j]={min{dp[i−1][j],dp[i][j−1],dp[i−1][j−1]}+10(val[i][j]=1)(val[i][j]=0)dp[i][j]=\left\{\begin{aligned原创 2016-12-02 15:03:57 · 488 阅读 · 0 评论