
dp
文章平均质量分 63
c_cl
这个作者很懒,什么都没留下…
展开
-
cf1197e dp
#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <cstring>using namespace std;int n;long long dp[2][200005][2];struct node{ ...原创 2019-11-10 18:32:15 · 295 阅读 · 1 评论 -
hdu 3092 Least common multiple(完全背包+数论)
Least common multipleTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 437 Accepted Submission(s): 162Problem DescriptionPartyc转载 2017-08-07 18:12:19 · 348 阅读 · 0 评论 -
hdu 4719 Oh My Holy FFF(dp线段树优化)
Oh My Holy FFFTime Limit: 5000/2500 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 848 Accepted Submission(s): 219Problem DescriptionN soldiers fr转载 2017-08-08 11:04:25 · 183 阅读 · 0 评论 -
codeforces 459E E. Pashmak and Graph(dp)
题目大意:给出n个点,m条边的有向图,每个边有边权,求一条最长的边权上升的路径的长度。题目分析:定义dp[i]表示第i条边结尾的情况下的最长路径。定义g[i]表示点i结尾的情况的最长路径。对所有的边进行排序,那么前面的边只可能小于等于后面的边。所以dp[i] = g[e[i].u]+1然后只需要特殊考虑一下边相等的情况,更新g[i]即可,具体见代码。转载 2017-08-16 16:04:59 · 177 阅读 · 0 评论 -
HDU4939:Stupid Tower Defense(DP)
Problem DescriptionFSF is addicted to a stupid tower defense game. The goal of tower defense games is to try to stop enemies from crossing a map by building traps to slow them down and towers whic转载 2017-08-16 20:56:15 · 198 阅读 · 0 评论 -
Codeforces 441E Valera and Number 概率DP
题目大意:现在有如下的伪代码:[cpp] view plain copy //input: integers x, k, p a = x; for(step = 1; step rnd = [random integer from 1 to 100]; if(rnd a = a转载 2017-08-09 23:15:53 · 98 阅读 · 0 评论 -
HDU 5656 CA Loves GCD 01背包+gcd
题目链接:hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5656bc:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=683&pid=1002CA Loves GCD Accepts: 64 Submissions: 535 Time Li转载 2017-08-17 10:13:06 · 223 阅读 · 0 评论 -
CF 461B Appleman and Tree (树形dp)
首先定义状态,dp[i][1]为以i为根的子树中有一个黑点的的方案数,dp[i][0]为以i为根的子树中没有黑点的方案数。状态转移方程为dp[i][1]=dp[i][1]*(dp[j][0]+dp[j][1])+dp[i][0]*dp[j][1] ;dp[i][0]=dp[i][0]*(dp[j][1]+dp[j][0]); j为i的子结点。首先解释第一条方程,当以i为根的子树转载 2017-08-18 11:40:51 · 312 阅读 · 0 评论 -
codeforces 463D
题目链接:codeforces 463D题目大意:给出k个排列,问这k个排列的最长公共子序列的长度。题目分析:第一次做这种排列的dp,感觉学到了一种新的定义状态的方法。首先我们要记录pos[i][j]代表第i行数j出现的位置。cnt[i]记录当前扫过的范围内数i出现的次数 。dp[i]表示以数i结尾的最长公共子序列的长度。我们首先遍历的是序列的长度,转载 2017-08-18 19:17:28 · 112 阅读 · 0 评论 -
HDU 5707 Combine String(动态规划)
HDU 5707 Combine String(动态规划)题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5707题意:给你三个字符串 S1, S2, S3, 让你判断 S3 是否恰好由字符串 S1 和 S2组成, S1 为 S3 的子串, S2 也为 S3 的子串, 可以不连续.思路:设 dp[i][j] 表示转载 2017-08-11 20:29:36 · 260 阅读 · 0 评论 -
CodeForces 427D-Match & Catch
题义给出两个字符串a,b,求一个字符串,这个字符串是a和b的子串,且只在a,b中出现一次,要求输出这个字符串的最小长度。解法对于字符串a,求一个数组aa,aa[i]的值是,在所有以i为结尾的子串中,只会在a中出现一次的最小长度。对于b也求出数组bb[i]。设dp[i][j]表示以a[i],b[j]为结尾的最长相同子串的长度如果有一个dp[i][j]大于a[i转载 2017-08-04 21:16:11 · 281 阅读 · 0 评论 -
ZOJ 3349 Special Subsequence(DP+线段树优化)
转载请注明出处,谢谢http://blog.youkuaiyun.com/acm_cxlove/article/details/7854526 by---cxlove 题目:给出一个序列,找出一个最长的子序列,相邻的两个数的差在d以内。http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3820 DP转载 2017-08-04 21:56:18 · 216 阅读 · 0 评论 -
HDU 4945 2048(dp+快速幂取模)
题目大意:给你一个序列让你求出有多少种组合可以得到2048.结果要对998244353取余。解题思路:求出不能满足条件的方案数,然后用总的减去不满足的然后乘上其他无关的组合方式,比如3,5这些数字是在构成2048的过程中无用的,所以乘上这些组合出来的情况。dp[i][j]表示取到第i个2^i的数,其最大的和在j*2^i至(j+1)*2^i-1的方案数。所以有dp[i][j]转载 2017-08-20 10:46:19 · 263 阅读 · 0 评论 -
Kattis peaktram (DP)
题目链接:点击这里题意:给出n个物体的高度以及将他们高度改变1单位的花费,一个观测点从最左端从0往上走,一直平视. 问至少能观测到k个物体的最小花费.因为高度比较大,所以需要将高度离散化,那么需要离散化哪些高度呢?容易发现对于每一个建筑,只要把它+-70范围内的高度离散化就好了,这样最多就是70*140种高度.然后用dp[i][j][k]表示到i物体,最大高度是j,一共看到k个物体转载 2017-08-05 22:57:44 · 365 阅读 · 0 评论 -
Codeforces 431C —— k-Tree(DP)
题目:http://codeforces.com/problemset/problem/431/C题意:给出K-Tree定义,每个结点都有恰好K个孩子,这棵树无限增长。每个节点到它K个孩子的K条边的权重刚好是1,2,3...,K(看图应该也看得明白)现在问有多少条路径,使得从根节点出发到达某个结点,经过的边权重之和恰好为n,并且经过的边至少有一条权重不小于d。先不考虑d。其实可以发现每转载 2017-08-06 11:11:11 · 211 阅读 · 0 评论 -
Codeforces 431 D. Random Task 数位dp单调性
很巧妙的单调性......n,n+1,n+2,.....2*n-2 n+1,n+2,.....2*n-2,2*n-1,2*n中间一段是相同的,n和2*n里的1是一样多的所以只有2*n-1不一样.....这是满足单调性的(monotone)然后就是数位DP了.....D. Random Tasktim转载 2017-08-06 13:08:52 · 205 阅读 · 0 评论 -
codeforce 453B - Little Pony and Harmony Chest
题目如下:B. Little Pony and Harmony Chesttime limit per test 4 secondsmemory limit per test 256 megabytesinput standard inputoutput standard outputP转载 2017-08-14 17:24:50 · 402 阅读 · 0 评论 -
Codeforces 466D Increase Sequence(dp+组合数学)
题目链接:Codeforces 466D Increase Sequence题目大意:给定一个序列,现在可以选中一段区间,使得整段区间上每个位置数加1,要求最后每个位置都为h,并且选中的区间不能有相同l或则r。解题思路:因为每个位置最多有一个起始和一个终止(区间)。ai和ai+1差的绝对值超过1,则肯定是不行的,ai+1−ai=1,那么一定要从i+1的位置新起一转载 2017-08-22 10:12:25 · 311 阅读 · 0 评论 -
cf632e dp
题意:给你n种物品以及每种的价值,每一种物品可以任意取多次,问恰好取k次物品能取到的所有可能价值。思路:容易想到4维dp,用dp[i][j]表示取i次,价值为j是否存在,但是这样的复杂度为10^12爆了,所以要减少一维,先对n个数排序,然后n个数都减去第一个数(这样做的目的是恰好k次很难dp,n个数都减去最小的数后,第1个数就变为0,在这样的情况下,如果我们凑到价值为i的物品少于k件,如只转载 2017-08-04 19:01:04 · 378 阅读 · 0 评论 -
E. Dreamoon and Strings(Codeforces Round #272)
E. Dreamoon and Stringstime limit per test 1 secondmemory limit per test 256 megabytesinput standard inputoutput standard outputDreamoon has a string s and a pa转载 2017-09-04 11:35:37 · 216 阅读 · 0 评论 -
Codeforces 467C George and Job(dp)
题目链接:Codeforces 467 George and Job题目大意:给定一个长度为n的序列,从序列中选出k个不重叠且连续的m个数,要求和最大。解题思路:dp[i][j]表示到第i个位置选了j个子序列。#include #include #include using namespace std;typedef long long ll;转载 2017-08-23 16:23:10 · 269 阅读 · 0 评论 -
codeforces 479E Riding in a Lift dp+前缀数组
题意: 给定一个启示的楼层a,有一个不能去的楼层b,对于你可以去的下一个楼层必须满足你当前楼层x与下一个要去的楼层y的距离小于x到b的距离。求出走k趟的方案数。 思路: 可以定义dp[i][j]表示第i趟的时候到第 j 楼层的方案数。 转移方程dp[i][j] += dp[i-1][k] (k = 1,….,n) 很容易写出一个O(n3)的算法,对于每一趟枚举每一个楼层,再对于转载 2017-09-05 22:42:12 · 188 阅读 · 0 评论 -
codeforces 494B B. Obsessive String(dp)
题目链接:codeforces 494B题目大意:给出两个字符串,问第一个字符串由多少种方法提取出一些子串使这些子串中都包含t模式串。题目分析:定义状态dp[i]表示前i个字符由多少种方法得到符合要求的字符串组。dp[i]=dp[i−1]+∑j=0l−1dp[j]+l解释: 首先dp[i-1]代表的是不重新构造新的子串的情况,那么转载 2017-09-13 21:17:29 · 181 阅读 · 0 评论 -
hdu5001 Walk (概率dp)
题目给你一个图,告诉你走多少步,每一个点作为起点的可能性是相同的,走某一个点的概率也是相同的,问所有走法中不仅过某一个点的概率是多少。思路:dp[i][j]代表走d步到达j点的概率;我们可以知道dp[0][j] = 1.0 / n (还没走,以每个点为起点的概率是一样的);然后我们还可以知道dp[i][j] = dp[i - 1][v[j][k]] / v[转载 2017-09-06 15:13:39 · 178 阅读 · 0 评论 -
HDU 5000 Clone 规律+dp
每只羊有n个属性下面n个数字表示每个属性的值范围为[ 0, T[i] ]对于羊圈里的a羊和b羊,若a羊的每个属性都>=b羊,则a羊会杀死b羊。问羊圈里最多存活多少只羊。规律1:sum相同的羊不会互相杀死。因为若2个羊的属性都相同,a羊某个属性要增加1,则a羊另一个属性要减少1,这样ab一定能共存。规律2:sum不同的羊不会重合。我们设转载 2017-09-06 16:06:58 · 204 阅读 · 0 评论 -
Codeforces 486D Valid Sets(树形)
题目链接:Codeforces 486D Valid Sets题目大意:给定一棵树,每个节点有个权值,现在要选定一些节点,要求非空,并且maxVal-minVal不大于d。问说有多少种选择方法。解题思路:枚举每个节点作为根节点,默认根节点为权值最大的节点,然后各个孩子节点用乘法原理即可。#include #include #include #i转载 2017-09-06 22:22:56 · 173 阅读 · 0 评论 -
Codeforces Round #284 (Div. 2) D. Name That Tune 概率dp
D. Name That Tunetime limit per test 1 secondmemory limit per test 256 megabytesinput standard inputoutput standard outputIt turns out that you are a great fan转载 2017-09-14 23:34:42 · 205 阅读 · 0 评论 -
Codeforces 488D Strip【dp+RMQ--------ST】
B. Striptime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputAlexandra has a paper strip with n numbers on it. Let's cal转载 2017-09-07 13:07:29 · 289 阅读 · 0 评论 -
codeforces 505C Mr. Kitayuta, the Treasure Hunter(DP)
题意:数轴上点[0, 30000]。先从 0 跳到 d, 以后每次跳的步数是 {prev-1, prev, prev+1}。跳到某个点上可以得到相应的value,求可以得到最大的value。思路:n, d 最大都是30000, 所以 min_step >= d-246, max_step所以方程 f[i, j] 当前在 i, 前一次跳的长度是 j注意要把转载 2017-09-15 14:57:40 · 240 阅读 · 0 评论 -
Special Matrices - CodeForces 489 F dp
F. Special Matricestime limit per test 1 secondmemory limit per test 256 megabytesinput standard inputoutput standard outputAn n × n square matrix is special, i转载 2017-09-08 11:40:47 · 235 阅读 · 0 评论 -
CodeForces 489E Hiking
题意:数轴上有n(1000)个点 每个点有个距离源点的距离xi和美观值bi 主人公站在源点 他希望每步步长len 但每一步必须落在n个点其中一个上 且行进方向唯一 走到点n后可以计算旅行的价值对于所有走过的点i val = sum( sqrt( abs(x[i]-x[i-1]-len) ) / b[i] ) 目标val尽量小 打印路径方案思路:第一转载 2017-09-08 13:06:17 · 294 阅读 · 0 评论 -
codeforces 510D D. Fox And Jumping(dp+数论)
题目链接:codeforces题目大意:给出n张卡,每张卡可以用无限次,每种卡需要Ci的花费,问最少用多少花费,能够组成所有的自然数。题目分析:其实题意就是用最小的花费去拼凑出1。有了1就能得到所有自然数,而且1也是必须要凑出来的。因为任意几个数能够凑出的最小的数是他们的gcd.所以我们利用map存在某个gcd的最小值,然后最后求出gcd为1的最小花转载 2017-09-18 11:56:28 · 510 阅读 · 0 评论 -
Delicious Apples(贪心+枚举)
Delicious ApplesTime Limit: 5000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 587 Accepted Submission(s): 188Problem DescriptionThere are转载 2017-09-26 14:59:08 · 430 阅读 · 0 评论 -
2014 北京区域赛 F Fluorescent HDU5117 (数学+状压+dp)
题意:有N个灯和M个开关,每个开关控制着一些灯,如果按下某个开关,就会让对应的灯切换状态;问在每个开关按下与否的一共2^m情况下,每种状态下亮灯的个数的立方的和。思路:1、首先注意到N2、最开始考虑的是算出每种情况下对应的方案数,然后依次dp,但是数据量太大;3、正解是直接考虑X^3,其中X就是每种状况下亮着的灯的数量;4、如何解这个X^3?我们转载 2017-09-19 00:01:54 · 392 阅读 · 0 评论 -
Codeforces 514E Darth Vader and Tree【Dp+矩阵快速幂优化】
题目大意:有一棵树,最开始就一个根节点,每个节点都有N个儿子,这个节点距离每个儿子的距离为di(1思路:1、如果对于统计个数,我们考虑dp,设定dp【i】表示距离根节点距离为i的节点个数。那么不难推出状态转移方程:dp【i】=Σdp【i-j】*len【j】;2、显而易见,直接dp是会超时的,考虑优化,既然我们有了递推式,那转载 2017-09-19 12:29:41 · 400 阅读 · 0 评论 -
hdu5135(状态压缩DP)
题意:给出n根木棍,随意组成几个三角形,问组合的面积最大是多少;思路:用状态压缩,首先把可以组成的三角形的合法情况全都放进vector里,然后枚举;#include #include #include #include #include using namespace std;int s[12], n;double dp[1<<12]转载 2017-09-19 15:30:18 · 292 阅读 · 0 评论 -
hdu 4960 Another OCD Patient dp(记忆化搜索)
题意:给定一个n长的序列vi,现在要求合并连续子序列,使得最终的序列式一个回文序列。每次合并i长的子序列,需要花费ai。求最小花费。题解:由于要变成回文,所以开头和结尾要合并成相同的值,抛去已经合并的开头和结尾,又要合并相同的值,如此反复知道这个序列都变成了回文。根据上述的性质,我们可以发现,每个要合并的两个点(,i,j),必定sum(1,i)==sum(j,n)。转载 2017-09-02 17:40:07 · 220 阅读 · 0 评论 -
hdu 4856 Tunnels(bfs+状态压缩)
题目链接:hdu 4856 Tunnels题目大意:给定一张图,图上有M个管道,管道给定入口和出口,单向,现在有人想要体验下这M个管道,问最短需要移动的距离,起点未定。解题思路:首先用bfs处理出两两管道之间移动的距离,然后后用状态压缩求出最短代价,dp[i][j],i表示的已经走过的管道,j是当前所在的管道。#include #include #inc转载 2017-09-11 23:18:51 · 177 阅读 · 0 评论 -
HDU 5245 - Joyful
一道比较明显的公式题给的参数很少,数值也不大(≤500/≤20)题意大致是:进行K次染色,每次染色会随机选取一个以(x1,y1),(x2,y2)为一组对角的子矩阵进行染色,求K次染色后染色面积的期望值(四舍五入)。[html] view plain copy样例1:(n,m,k)=(3,3,1) Case #1: 4转载 2017-09-20 23:45:45 · 211 阅读 · 0 评论 -
Uva 12018 Juice Extractor dp
题目链接:点击打开链接题意:切水果游戏给出n个水果水果出现在屏幕上的时间的区间1、每次切会把屏幕上所有水果切完2、当同时切3个或以上时计分,分数为切的水果个数3、不能遗漏水果问最高得分dp[i] 表示 最后一次切第i个的得分。#include#include#include#includeusing转载 2017-10-08 17:47:22 · 243 阅读 · 0 评论