动态规划
紫芝
你可不可以成为我的main函数,做我此生有且仅有一个入口;我愿为自己加上private,在你的class中只有你能调用。
展开
-
poj 1664 放苹果 DP&DFS
点击打开链接把 M个同样的苹果放在 N个同样的盘子里,允许有的盘子空着不放问共有多少种方法?5,1,1和1,5,1是同一种方法 解法一:poj 1664 放苹果 DPdp[i][j]表示共 i个苹果放入 j个盘子里的方法状态转移过程:1.这 j个盘子有空盘子,这时候i个苹果放入j个盘子的方法,和i个苹果放入j-1个盘子的方法是一样的2.j个盘子中没有空盘子,那么可以从每个盘子中移除一个,原问题转换...原创 2018-04-11 00:38:56 · 347 阅读 · 0 评论 -
简单的一道题 背包问题
简单的一道题时间限制: 1 Sec 内存限制: 128 MB题目描述麻烦的渣渣辉又要和女朋友去旅游啦。他们有一个最多能用V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...Wn,它们的价值分别为C1C2...Cn。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物品装入背包可使这些物品的...原创 2018-07-26 11:35:56 · 2044 阅读 · 0 评论 -
01背包问题+完全背包问题+多重背包问题
一 01背包问题1.1题目有N件物品和一个容量为V 的背包。放入第i件物品耗费的空间是Ci,得到 的价值是Wi。求解将哪些物品装入背包可使价值总和最大。1.2 基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不 放。用子问题定义状态:即F[i, v]表示前i件物品恰放入一个容量为v的背包可以 获得的最大价值。则其状态转移方程便是:F[i, v] ...原创 2018-08-10 15:24:15 · 1436 阅读 · 2 评论 -
dp进阶之FFT加速+数据结构优化+不等式优化
快速傅里叶变换快速傅里叶变换(英语:Fast Fourier Transform, FFT),是快速计算序列的离散傅里叶变换(DFT)或其逆变换的方法。傅里叶分析将信号从原始域(通常是时间或空间)转换到频域的表示或者逆过来转换。FFT会通过把DFT矩阵分解为稀疏(大多为零)因子之积来快速计算此类变换。 因此,它能够将计算DFT的复杂度从只用DFT定义计算需要的 ,降低到 ,其中 为数据...原创 2018-08-13 19:34:30 · 2059 阅读 · 0 评论 -
BZOJ2131免费的馅饼 DP+树状数组
免费的馅饼DescriptionInput第一行是用空格隔开的二个正整数,分别给出了舞台的宽度W(1到10^8之间)和馅饼的个数n(1到10^5)。 接下来n行,每一行给出了一块馅饼的信息。由三个正整数组成,分别表示了每个馅饼落到舞台上的时刻t[i](1到10^8秒),掉到舞台上的格子的编号p[i](1和w之间),以及分值v[i](1到1000之间)。游戏开始时刻为0。输入文件中...原创 2018-08-18 12:41:16 · 477 阅读 · 0 评论 -
动态规划总结
动态规划动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力、建模抽象能力、灵活度。动态规划(英语:Dynamic programming,DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素...原创 2018-08-18 18:24:00 · 704 阅读 · 0 评论 -
hdu1059 Dividing 多重背包+二进制优化
DividingTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 31037 Accepted Submission(s): 8805Problem DescriptionMarsha and Bill own a col...原创 2018-08-19 00:07:02 · 297 阅读 · 0 评论 -
HDU3480 Division DP四边形不等式优化
DivisionTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 999999/400000 K (Java/Others)Total Submission(s): 5868 Accepted Submission(s): 2332Problem DescriptionLittle D is really inte...原创 2018-08-19 21:08:26 · 346 阅读 · 0 评论 -
codeforces 528D. Fuzzy Search 快速傅里叶变换
题目链接D. Fuzzy Searchtime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputLeonid works for a small and promising start-up that works ...原创 2018-08-17 09:55:25 · 324 阅读 · 0 评论 -
Easy Multiplication 快速傅里叶变换
Easy Multiplication时间限制: 1 Sec 内存限制: 128 MB题目描述乘法就是加法的连续运算,同一个数若干次连加,其运算结果称为积给出两个n位10进制整数x和y,你需要计算x*y。 输入第一行一个正整数n(n<=200000)。 第二行描述一个位数为n的正整数x。 第三行描述一个位数为n的正整数y。 输出输出一行,即x*y的结果。...原创 2018-08-17 17:24:48 · 354 阅读 · 0 评论 -
NYOJ 229 工程 二分+dp检验
工程时间限制:1000 ms | 内存限制:65535 KB描述有n个工人做两个工程A和B,每个工程都被分为相同的m份,给你第i个工人做A中的一份需要的时间Xi秒,和做B中的一份所需时间Yi秒,问最短需要多少时间可以完成这两项工程。输入第一行是一个整数t (1 <= t <= 100),表示有t组测试数据;每组测试数据第一行有两个整数 n (1 <= n...原创 2018-09-02 16:03:45 · 349 阅读 · 0 评论 -
HDU5532 Almost Sorted Array 最长上升子序列、暴力
Almost Sorted ArrayWe are all familiar with sorting algorithms: quick sort, merge sort, heap sort, insertion sort, selection sort, bubble sort, etc. But sometimes it is an overkill to use these algo...原创 2018-10-12 14:37:22 · 582 阅读 · 0 评论 -
HDU 5534 Partial Tree 完全背包
In mathematics, and more specifically in graph theory, a tree is an undirected graph in which any two nodes are connected by exactly one path. In other words, any connected graph without simple cycles...原创 2018-10-12 15:55:36 · 206 阅读 · 0 评论 -
POJ1163数字三角形【简单动态规划】
The Triangle POJ - 1163 73 88 1 02 7 4 44 5 2 6 5(Figure 1)Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a rou...原创 2018-11-06 18:39:56 · 842 阅读 · 0 评论 -
HDU 1069 Monkey and Banana 最长上升子序列进阶(动态规划)
HDU 1069(动态规划)Monkey and BananaTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Problem DescriptionA group of researchers are designing an experiment to test the...原创 2018-11-15 14:10:18 · 689 阅读 · 0 评论 -
HihoCode1032 最长回文子串 manacher算法
求最长回文子串的算法比较经典的是manacher算法首先,说明一下用到的数组和其他参数的含义:(1): 以字符串中下标为的字符为中心的回文子串半径长度;例如:字符串,那么, (以b为中心的回文子串是,半径长度为2。计算半径时包括b本身)所以,数组的最大值就是最长回文串的半径。(2) 为当前已确定的边界能伸展到最靠右的回文串的中心。例如:设黑色的线段表示字符串范围,红色的线段表示...原创 2018-11-20 17:00:48 · 360 阅读 · 0 评论 -
HDU - 2089 不要62 【暴力打表】【数位DP】
不要62 HDU - 2089题意 求区间【n,m】之间有多少个数字不含4或者连续的62解法1由于数据范围是0~1e6,所以直接暴力判断每一位数字是否含有4或者62,然后求前缀和即可#include<stdio.h>#include<algorithm>#include<string.h>#include<iostream>#inc...原创 2018-11-21 17:18:09 · 1406 阅读 · 0 评论 -
POJ1741 Tree 树中点对统计【树分治入门】
算法合集之《分治算法在树的路径问题中的应用》论文下载地址树被定义为没有圈的连通图,有几个性质在树中去掉一条边后,得到的图是不连通的在树中添加一条边后,一定存在一条边树的每一对顶点U和V之间有且只有一条路径分治分而治之,将一个问题分割成一些规模较小的相互独立的子问题。通常在一个线性结构上分治,分至算法在树结构上的应用称为树分治算法基于点的分治首先,选取一个点将无根树转化为有根...原创 2018-11-21 20:09:18 · 1568 阅读 · 0 评论 -
poj 3659 Cell Phone Network 树的最小支配集
Cell Phone NetworkTime Limit: 1000MS Memory Limit: 65536K Total Submissions: 7207 Accepted: 2573 DescriptionFarmer John has decided to give each of his cows a cell phone in hop...原创 2018-07-29 11:26:01 · 230 阅读 · 0 评论 -
poj1463 Strategic game 树形DP 树的最小点覆盖
Strategic gameTime Limit: 2000MS Memory Limit: 10000K Total Submissions: 9293 Accepted: 4358 DescriptionBob enjoys playing computer games, especially strategic games, but somet...原创 2018-07-29 10:27:12 · 302 阅读 · 0 评论 -
最长回文子串
最长回文子串的概念:一个字符串中连续的一段就是这个字符串的子串,而回文串指的是12421这种从前往后读和从后往前读一模一样的字符串,所以最长回文子串的意思就是这个字符串中最长的身为回文串的子串啦 一、分析:有两种可能,一种是回文字符串的长度为奇数,一种是偶数的情况。i为字符串当前字符的下标。当回文字串为奇数的时候,j表示i-j与i+j构成的回文字串长度;当回文字串长度为偶数...原创 2018-04-04 22:23:59 · 1509 阅读 · 0 评论 -
HDU 1243 最长公共子序列 动态规划
HDU 1243反恐训练营Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5514 Accepted Submission(s): 1378 当今国际反恐形势很严峻,特别是美国“9.11事件”以后,国际恐怖势力更是有...原创 2018-04-06 13:09:27 · 223 阅读 · 0 评论 -
hdu 1421 动态规划
题意:有n件物品,从中选出2*k件,使得这k组物品,每组中两件物品重量之差的平方的和最小题解:先对n个物品排序,尽量选择与之相邻的一个物品使其配对, dp[i][j]表示在前j个物品里选i对出来那么对于第j个物品,有两种选择:选或不选 ,即dp[i][j-1]或dp[i-1][j-2]+(a[j]-a[j-1])^2#include<cstdio>#include<cstrin...原创 2018-04-23 18:57:27 · 254 阅读 · 0 评论 -
NYOJ737 石子合并(一)区间动态规划
石子合并(一)时间限制:1000 ms | 内存限制:65535 KB难度:3描述 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。输入有多组测试数据,输入到文件结束。每组测试数据第一行有一个整数n,表示有n堆石子。...原创 2018-05-02 10:58:36 · 510 阅读 · 0 评论 -
HDU1520 Anniversary party 树形动态规划
HDU1520 Anniversary party 树形动态规划 Anniversary partyTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15486 Accepted Submission(s): 5958Pr...原创 2018-05-02 11:39:02 · 322 阅读 · 0 评论 -
HDU 1003 Max Sum 分治或动态规划
Max SumTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 290991 Accepted Submission(s): 69018Problem DescriptionGiven a sequence a[1],a[...原创 2018-07-24 12:18:17 · 288 阅读 · 1 评论 -
HDU1257 最少拦截系统 贪心或动态规划
最少拦截系统Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 55679 Accepted Submission(s): 21814Problem Description某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统....原创 2018-07-24 21:39:50 · 731 阅读 · 0 评论 -
入侵和反击 动态规划
入侵和反击时间限制: 1 Sec 内存限制: 128 MB题目描述A国部署的反导系统遇到了一个致命BUG,那就是每一次发射的拦截导弹的飞行高度都将只能小于等于上一枚导弹的飞行高度,第一次发射的拦截导弹的飞行高度可以看作是足够大。对于A国,这是一件很严重的问题,这意味着A国的防空系统面临空前危机。通过对A国的军事部门计算机的入侵,A国还不知道敌对国B国刚才已经发现了这项BUG。更不...原创 2018-07-24 23:27:34 · 818 阅读 · 0 评论 -
POJ 1458 Common Subsequence 最长公共子序列(dp)
Common Subsequence POJ - 1458 A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2, ..., xm > another sequence Z...原创 2018-07-25 09:35:36 · 945 阅读 · 0 评论 -
最长上升子序列(LIS)算法
LIS定义LIS(Longest Increasing Subsequence)最长上升子序列 一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 <= i1 < i2 < … < iK ...转载 2018-07-25 11:10:15 · 19818 阅读 · 10 评论 -
创客更新装备 动态规划
创客更新装备时间限制: 1 Sec 内存限制: 128 MB题目描述创客的装备有点老旧啦,所以老师想给创客更新装备。每个显示屏都有它的固有属性——刷新频率 T 和价格 S。现在有 N 台显示屏可供选择,老师想购置 3 台新的显示屏放在创客。老师对于购买显示屏的要求是: 1.对 N 台显示屏按照输入顺序标号为1,2,3 ... N。 2.对于购买的3个显...原创 2018-07-25 11:56:30 · 835 阅读 · 0 评论 -
poj3254 Corn Fields 状压DP入门
Corn FieldsTime Limit: 2000MS Memory Limit: 65536K Total Submissions: 19368 Accepted: 10169 DescriptionFarmer John has purchased a lush new rectangular pasture composed of M by...原创 2018-07-28 23:03:50 · 400 阅读 · 3 评论 -
区间动态规划
所谓区间dp,顾名思义就是在一段区间上的动态规划。它既要满足dp问题的最优子结构和无后效性外,还应该符合在区间上操作的特点。往往会对区间进行合并操作,或是单个元素(可看成一个小区间)跨区间进行操作。/* 先初始化DP数组 */for(int i=1;i<=n;i++){ dp[i][i] = 初始值;}for(int len=2;len<=n;len++)...原创 2018-07-28 23:34:02 · 965 阅读 · 0 评论 -
石子合并问题
石子合并问题石子合并问题是最经典的DP问题。首先它有如下3种题型:(1)有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动任意的2堆石子合并,合并花费为新合成的一堆石子的数量。求将这N堆石子合并成分析:当然这种情况是最简单的情况,合并的是任意两堆,直接贪心即可,每次选择最小的两堆合并。本问题实际上就是哈夫曼的变形。(2)有N堆石子,现要将石子有序的合并成一堆,规定如下:...原创 2018-07-29 00:09:28 · 27917 阅读 · 9 评论 -
poj2955 Brackets 最大括号匹配 区间动态规划
BracketsTime Limit: 1000MS Memory Limit: 65536K Total Submissions: 11633 Accepted: 6145 DescriptionWe give the following inductive definition of a “regular brackets” sequence:...原创 2018-07-29 00:21:51 · 677 阅读 · 0 评论 -
POJ1185 炮兵阵地 状压DP
炮兵阵地Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 31819 Accepted: 12295 Description司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示)...原创 2018-07-29 09:57:24 · 282 阅读 · 0 评论 -
洛谷2015 二叉苹果树 树形DP
https://www.luogu.org/problemnew/show/P2015二叉苹果树时间限制: 1 Sec 内存限制: 128 MB题目描述有一棵苹果树,如果树枝有分叉,一定是分 2 叉(就是说没有只有 1 个儿子的结点)这棵树共有 N 个结点(叶子点或者树枝分叉点),编号为 1 - N 树根编号一定是 1。我们用一根树枝两端连接的结点的编号来描述一根树枝的位...原创 2018-07-29 10:15:03 · 547 阅读 · 0 评论 -
动态规划的基本思想
分治法 将一个规模为n的问题分解为K个规模较小的子问题,这些子问题互相独立且与原问题相同。递归的解决这些问题,然后将各个子问题的解合并得到原问题的解贪心法 当前的选择可能要依赖于已经做出的选择,但不依赖于有待于做出的选择和子问题。因此贪心法是自顶向下,一步一步地做出贪心的选择动态规划 动态规划的实质是分治思想和解决冗余,因此动态规划是一种将问题...原创 2019-01-11 16:25:59 · 7281 阅读 · 0 评论