大三ACM - DP
Little_boy_z
这个作者很懒,什么都没留下…
展开
-
Fruit Ninja I 先暴力在DP
借鉴参考:http://www.mamicode.com/info-detail-1310283.html#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <stdio.h>using namespace std;int s[100...原创 2018-04-25 20:47:56 · 237 阅读 · 0 评论 -
搭建双塔 DP问题
描述2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难。为了纪念“9?11”事件,Mr. F决定自己用水晶来搭建一座双塔。Mr. F有N块水晶,每块水晶有一个高度,他想用这N块水晶搭建两座有同样高度的塔,使他们成为一座双塔,Mr. F可以从这N块水晶中任取M(1≤M≤N)块来搭建。但是他不知道能否使两座塔有同样的高度,也不知道如果能搭原创 2018-02-07 17:04:46 · 511 阅读 · 0 评论 -
poj1948 二维01背包
题目给一些木棒,要求全部用上形成三条边,问能形成的三角形最大面积是多少?一般的做法是只管一个,这次我们是管两个。dp[i][j],表示第一条边为i,第二条边为j的情况是否存在。不需要计算第三条边,因为第三条边就是sum-i-j。对于当前的一根木棒,我们按照正常的01背包做法for(int i=0;ifor(int j=sum/2;j>=0;j--) //第一个木棒。为什么是原创 2018-02-07 16:35:48 · 191 阅读 · 0 评论 -
hdu 3449 Consumer 有依赖关系的背包
先默认把所有的主件都买上,之后01附件的。最后比较不买主件的额即可#include<stdio.h> #include<string.h> int dp[11000][11000];//前i个箱子花费j元所得的价值 int n,t,box,num; int main () { while(cin>>n>>t) { ...原创 2018-02-11 20:00:32 · 191 阅读 · 0 评论 -
最佳课题选择 多重背包
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> using namespace std; long long sum(int x,int y) { long long s=1; while(x) { ...原创 2018-02-10 21:35:00 · 251 阅读 · 0 评论 -
hdu 4341 Gold miner 分组背包
题意:矿工起初在(0,0)位置,有n种金矿,给出每种金矿的坐标,花费时间和价值。在同一条线上的金矿必须先抓近的再抓远的,若近的不抓没办法抓远的。要求在T时间内获得的最大价值。完全没有想到使用分组背包来做哎... 你可以这样想,同一斜率下的金矿看成一组,只能选一个。其实明明可以都抓到,为啥只能选一个。因为如果你想拿后面的,前面的必须拿到。所以我们处理一下,拿到第二个的花费和价值都加上第一个的。以此类...原创 2018-02-09 18:31:41 · 184 阅读 · 0 评论 -
hdu 1712 分组背包
有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。类似01背包,01是枚举每个物体,这个是先枚举每一个小组,在小组里枚举每一个物体。主要注意的是 小组枚举要在体积里边,这样才能当前体积只放一个小组里的物体#include <stdio...原创 2018-02-09 18:16:35 · 168 阅读 · 0 评论 -
算法提高 金明的预算方案 有依赖的背包
问题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件附件电脑打印机,扫描仪书柜图书书桌台灯,文具工作椅无 如果要买归类为附件的...原创 2018-02-09 18:10:06 · 129 阅读 · 0 评论 -
HDU 2159 FATE 二维费用背包
Problem Description最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s只怪...原创 2018-02-08 21:41:03 · 164 阅读 · 0 评论 -
poj 1742 多重背包 (单调队列优化)
DescriptionPeople in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony opened his money-box and found there were some coins.He decided to buy a very nice watch...原创 2018-02-08 19:39:44 · 431 阅读 · 0 评论 -
超大01背包问题(二分)
#include #include #include using namespace std; const int N = 50; const long long INF = 0x3fffffff; typedef long long LL; int n; LL w[N], v[N]; LL W; pair pi[1原创 2018-02-01 19:41:45 · 849 阅读 · 0 评论 -
新年趣事之打牌 记录路径+数量判断的01背包问题
描述过年的时候,大人们最喜欢的活动,就是打牌了。xiaomengxian不会打牌,只好坐在一边看着。这天,正当一群人打牌打得起劲的时候,突然有人喊道:“这副牌少了几张!”众人一数,果然是少了。于是这副牌的主人得意地说:“这是一幅特制的牌,我知道整副牌每一张的重量。只要我们称一下剩下的牌的总重量,就能知道少了哪些牌了。”大家都觉得这个办法不错,于是称出剩下的牌的总重量,开始计算少了哪原创 2018-02-07 18:23:02 · 324 阅读 · 0 评论 -
岳麓山上打水 DFS+完全背包
描述今天天气好晴朗,处处好风光,好风光!蝴蝶儿忙啊,蜜蜂也忙,信息组的同学们更加忙。最近,由于XX原因,大家不得不到岳麓山去提水。55555555~,好累啊。信息组有一个容量为q升的大缸,由于大家都很自觉,不愿意浪费水,所以每次都会刚好把缸盛满。但是,信息组并没有桶子(或者瓢)来舀水,作为组内的生活委员,你必须肩负重任,到新一佳去买桶子。新一佳有p种桶子,每种桶子都有无原创 2018-02-07 20:12:42 · 567 阅读 · 0 评论 -
Gym - 101606L Lizard Lounge 极坐标+最长公共子序列
https://blog.csdn.net/hao_zong_yin/article/details/79901343#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#include <cmath&g...转载 2018-05-03 17:23:28 · 383 阅读 · 0 评论 -
The number of steps 概率dp
Problem Description Mary stands in a strange maze, the maze looks like a triangle(the first layer have one room,the second layer have two rooms,the third layer have three rooms …). Now she stands a...原创 2018-04-21 20:05:57 · 269 阅读 · 0 评论 -
Manhattan Mornings 二维上的最长不下降子序列
最长不下降子序列模板:https://www.cnblogs.com/itlqs/p/5743114.html处理一下出发点,终点的位置。之后就是套模板了..先按照x排序,之后遍历y即可#include<iostream>#include<stdio.h>#include<algorithm>#include<math.h>using namespa...原创 2018-05-02 19:55:27 · 521 阅读 · 0 评论 -
超大完全背包 贪心+背包
https://blog.csdn.net/sr_19930829/article/details/24637561原创 2018-04-24 21:06:25 · 814 阅读 · 0 评论 -
hdu6024 Building Shops dp
HDU’s nn classrooms are on a line ,which can be considered as a number line. Each classroom has a coordinate. Now Little Q wants to build several candy shops in these nn classrooms. The total cost con...原创 2018-04-06 21:13:10 · 285 阅读 · 0 评论 -
Mountain Subsequences
Problem DescriptionCoco is a beautiful ACMer girl living in a very beautiful mountain. There are many trees and flowers on the mountain, and there are many animals and birds also. Coco like the mounta...原创 2018-04-22 19:46:55 · 334 阅读 · 0 评论 -
1006 最长公共子序列Lcs 路径记录
给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。比如两个串为:abcicbaabdkscabab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。Input第1行:字符串A第2行:字符串B(A,B的长度 <= 1000)Output输出最长的子序列,如果有多个,随意输出1个。Input示例abcicbaabdkscabOutpu...原创 2018-03-26 19:57:08 · 209 阅读 · 0 评论 -
计数DP 划分数
蒜头君特别喜欢数学。今天,蒜头君突发奇想:如果想要把一个正整数 nn 分解成不多于 kk 个正整数相加的形式,那么一共有多少种分解的方式呢?蒜头君觉得这个问题实在是太难了,于是他想让你帮帮忙。输入格式共一行,包含两个整数 n(1 \leq n \leq 300)n(1≤n≤300) 和 k(1 \leq k \leq 300)k(1≤k≤300),含义如题意所示。输出格式一个数字,代表所求的方案数...原创 2018-03-25 20:26:54 · 293 阅读 · 0 评论 -
Code Jam 2008 APAC local onsites Problem C. Millionaire 概率DP
你有X元钱,进行M轮赌博游戏。每一轮可以将所持的任意一部分钱作为赌注(赌注为0元表示这一轮不押),赌注可以是小数的,不是一定要整数。每一轮 赢的概率为P,赢了赌注翻倍,输了赌注就没了。如果你最后持有至少1000000元钱的话,就可以把钱全部带走。要求计算在采取最优策略时,获得至少 1000000元钱的概率。数据范围:0<=P<=11<=X<=10000001<=M&l...原创 2018-03-05 16:02:09 · 449 阅读 · 0 评论 -
贿赂囚犯 Bribe the prisoners DP
对于i到j之间我们要去除第k个人。我们需要i-k之间所有的花费 加上 k-j之间所有的花费 加上 当前需要的花费前面两部分花费我们dp早就求出了 当前需要的花费 我们是对于当前i到j这一部分,我们看作是i为头,j为尾,都是靠边的了。所以就是j-i+2#include <iostream>using namespace std;int n,m;int A[110];int dp[11...原创 2018-03-03 17:56:56 · 415 阅读 · 0 评论 -
算法提高 求最大值 DP
问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大。并且要求你选定的数对的ai之和非负,bi之和非负。输入格式 输入的第一行为n,数对的个数 以下n行每行两个整数 ai bi输出格式 输出你选定的数对的ai+bi之和样例输入5-403 -625-847 901-624 -原创 2017-12-07 18:41:57 · 535 阅读 · 0 评论 -
51nod 1405 树的距离之和 搜索+DP
给定一棵无根树,假设它有n个节点,节点编号从1到n, 求任意两点之间的距离(最短路径)之和。Input第一行包含一个正整数n (n <= 100000),表示节点个数。后面(n - 1)行,每行两个整数表示树的边。Output每行一个整数,第i(i = 1,2,...n)行表示所有节点到第i个点的距离之和。Input示例41 23 24 2原创 2017-11-27 19:04:56 · 270 阅读 · 0 评论 -
51nod 1101 换零钱 完全背包
N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元。例如:5分钱换为零钱,有以下4种换法:1、5个1分2、1个2分3个1分3、2个2分1个1分4、1个5分(由于结果可能会很大,输出Mod 10^9 + 7的结果)完全背包,统计个数问题。就是完全背原创 2017-10-23 20:04:04 · 241 阅读 · 0 评论 -
51nod 1007 正整数分组 分组问题转换为背包问题
将一堆正整数分为2组,要求2组的和相差最小。例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。01背包问题。他要求把这些数分成两部分,两部分的差值最小。差值最小就代表接近相等。也就是让两边都尽可能的接近sum/2.我们把这些数尽可能的填入一个容量为sum/2的背包当中,看原创 2017-10-23 20:01:22 · 205 阅读 · 0 评论 -
51nod 1183 编辑距离
编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sitting:sitten (k->s)sittin (e->i)sitting (->g)所以kitten和sittin原创 2017-10-23 19:40:17 · 144 阅读 · 0 评论 -
51nod 1049 最大子段和
N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。这个很简单了,我们就是枚举一直加,如果当前sum#include#includeusing names原创 2017-10-23 19:33:24 · 203 阅读 · 0 评论 -
51nod 1134 最长递增子序列 DP
给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的)例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。DP【i】表示以i结尾的最长公共子序列长度是多少。我们枚举1-N,变量为i。对于每个i,我们再遍历1-i,变量为j。如果啊a[i]>a[j],dp[i]=max(dp[i],dp[原创 2017-10-23 19:29:57 · 163 阅读 · 0 评论 -
hdu 1024 从一个序列中选择m个序列不交叉,就最大值
hdu 1024(最大和连续子序列增强版)题意:最大和连续子序列的增强版,要求从一序列中取出若干段,这些段之间不能交叉,使得和最大并输出。分析:用dp[i][j]表示前j个数取出i段得到的最大值,那么状态转移方程为dp[i][j]=max(dp[i][j-1]+a[j],dp[i-1][k]+a[j]) i-1这个状态转移方程表达了两种不同的选择:第一个就是第j个连在第j-1转载 2017-10-28 18:23:37 · 513 阅读 · 0 评论 -
poj3186(区间dp)
题意:给一行n个数,每次可以取出行首或者行末的数,如果第ai是第i次取出的,可以得到ai*i的收益,求最大的总收益;我们设dp[i][j],表示从i到j的最大收益。最后输出dp[1][n]即可。那么对于dp[i][j],我们上一次拿出的肯定是i个或者第j个。那么dp[i][j]=max( dp[i-1][j]+a[i]*(i+j) , dp[i][j-1]+a[n-j+1]原创 2017-10-28 11:20:40 · 311 阅读 · 0 评论 -
POJ 1661 Help Jimmy 最短路或者dp
Help Jimmy" 是在下图所示的场景上完成的游戏。场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当Jimmy跑到平台的边缘时,开始继续下落。Jimmy每次下落的高度不能超过MA原创 2017-10-28 11:06:48 · 192 阅读 · 0 评论 -
HDU - 1176 G - 免费馅饼
都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝原创 2017-10-28 10:45:35 · 231 阅读 · 0 评论 -
HDU - 1074 Doing Homework HDU - 1074
利用二进制才实现dpn个作业,一共有1枚举每一种情况,之后遍历每一个作业,如果当前情况下这个作业还没做,我们就不做任何处理。如果当前作业做了,我们就让当前情况变成当前作业没做的那个情况下,之后没做的情况的值加上当前作业的值再减去当前作业需要扣除的分数(注意最低为0)。就是我们枚举的那个情况的值了#include #include #inclu原创 2017-10-28 10:01:26 · 348 阅读 · 0 评论 -
51nod 1270 数组的最大代价 绝对值取极值问题
数组A包含N个元素A1, A2......AN。数组B包含N个元素B1, B2......BN。并且数组A中的每一个元素Ai,都满足1 (公式表示所有两个相邻元素的差的绝对值之和)给出数组B,计算可能的最大代价S。就是极值的问题。条件1 仔细想想对于每一位我们有两种状态,一种是取1,一种是取n。原创 2017-10-23 20:10:28 · 209 阅读 · 0 评论 -
51nod 1270 数组的最大代价 绝对值取极值问题
数组A包含N个元素A1, A2......AN。数组B包含N个元素B1, B2......BN。并且数组A中的每一个元素Ai,都满足1 (公式表示所有两个相邻元素的差的绝对值之和)给出数组B,计算可能的最大代价S。就是极值的问题。条件1 仔细想想对于每一位我们有两种状态,一种是取1,一种是取n。原创 2017-10-23 20:13:53 · 180 阅读 · 0 评论 -
算法提高 金陵十三钗 状态亚索DP
问题描述 在电影《金陵十三钗》中有十二个秦淮河的女人要自我牺牲代替十二个女学生去赴日本人的死亡宴会。为了不让日本人发现,自然需要一番乔装打扮。但由于天生材质的原因,每个人和每个人之间的相似度是不同的。由于我们这是编程题,因此情况就变成了金陵n钗。给出n个女人和n个学生的相似度矩阵,求她们之间的匹配所能获得的最大相似度。 所谓相似度矩阵是一个n*n的二维数组like[i][j]。其中转载 2017-12-02 19:48:23 · 459 阅读 · 0 评论 -
算法提高 金明的预算方案 有依赖的背包问题
问题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件附件电脑打印机,原创 2017-12-02 17:40:12 · 334 阅读 · 0 评论 -
算法提高 拿糖果 DP
问题描述 妈妈给小B买了N块糖!但是她不允许小B直接吃掉。 假设当前有M块糖,小B每次可以拿P块糖,其中P是M的一个不大于根号下M的质因数。这时,妈妈就会在小B拿了P块糖以后再从糖堆里拿走P块糖。然后小B就可以接着拿糖。 现在小B希望知道最多可以拿多少糖。输入格式 一个整数N输出格式 最多可以拿多少糖样例输入15样例原创 2017-12-02 16:28:31 · 325 阅读 · 0 评论