- 博客(19)
- 资源 (4)
- 收藏
- 关注
原创 背包问题-笔记整理
本文为个人笔记,这算是我第三次系统的学背包问题。根据老师所写课件,所记为个人感悟以及知识点梳理,方便日后复习,如有不足之处请斧正,感谢。1.背景:1.1 什么是背包问题:背包问题指这样一类问题,题意往往可以抽象成:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。(来自百度百科)1.2 背包问题的种类:就ACM或者其它算法竞赛...
2019-02-24 16:18:10 63594 13
原创 潜水员解题报告(二维费用的背包问题)
【例5】潜水员【问题描述】潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种的数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需要特定数量的氧和氮。他完成工作所需气缸的总重的最低限度的是多少?例如:潜水员有5个气缸。每行三个数字为:氧,氮的(升)量和气缸的重量: 3 36 120...
2019-02-24 16:08:42 1503
原创 C++的运算符重载能重载基本数据类型吗?
不能,如果想要重载基本数据类型(如int类型),可以自定义一个结构体,其中只含有一个int类型成员变量,然后对该结构体进行运算符重载。
2019-02-24 15:39:34 1802
原创 例题:混合背包
Problem Description一个旅行者有一个最多能用V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。Input输入有多组数据,对于输...
2019-02-24 14:44:22 1719
原创 庆功会 解题报告(多重背包模板)
Problem Description为了庆贺班级在校运动会上取得全校第一名成绩,班主任决定开一场庆功会,为此拨款购买奖品犒劳运动员。期望拨款金额能购买最大价值的奖品,可以补充他们的精力和体力。Input对于每组数据的第一行二个数n(n<=500),m(m<=6000),其中n代表希望购买的奖品的种数,m表示拨款金额。接下来n行,每行3个数,v、w、s,分别表示第I种奖品的价格、...
2019-02-23 15:55:13 2073 2
原创 TVYJ1172 自然数拆分Lunatic版(完全背包问题)
测试地址:链接题意描述:给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复。求拆分的方案数 mod 2147483648的结果。1≤N≤4000。输入格式:一个整数n。输出格式:输出一个数,即所有方案数因为这个数可能非常大,所以你只要输出这个数 mod 2147483648 的余数即可。解题思路:首先2147483648是一个很大的数,至少用...
2019-02-22 16:46:02 897 2
原创 机器分配(动态规划)解题报告
测试地址:洛谷P2066题意简述:一共有N个工厂,M台机械,每个工厂获得不同台数的机器其产生的价值也不同,现给出N、M,求最大总价值以及分配方案。解题思路:很明显,这题划分的阶段应该是“工厂数”,状态应该是“机器数”,那么很自然就会想到用 f( i , j ) 来表示有 i 个工厂,分配 j 台机器时最大价值。我们最终要求的就是f( N , M)。很显然,假设我们想求 i 个工厂 j 台机...
2019-02-22 13:50:10 2240
原创 洛谷P1091 合唱队形(dp)
题意简述:给一个序列,求最少去掉几个元素才能使得序列呈先上升后下降。解题思路:设f1[ i ] 为以第 i 个元素为尾的最长上升子序列,f2[ i ]为以第 i 个元素为起点的最长下降子序列,于是答案就是最小的 n - f1[ i ] - f2[ i ] + 1;代码示例:#include<iostream>#include<cstdio>using na...
2019-02-19 15:08:48 479
原创 友好城市-解题报告(动态规划)
测试地址:友好城市题意简述:Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交叉,以避免事故。编程帮助政府做出一些批准和拒绝申请的决定,使得在保证任意两条航线不相交的情况下...
2019-02-19 14:30:24 1976 4
原创 例题6:挖地雷(递归解法)
题意简述:给出一张有向无环图,以及每个节点的权值,求出一条权值和最大的路径(起点任意)。解题思路:这题满足无后效性与最优化原则,可以使用动态规划,但我情不自禁的就写成了深搜+记忆化,不过本质上相同嘛。代码很短,逻辑也很清晰,就是普普通通的dfs+记忆化。代码示例:#include<iostream>#include<cstdio>#include<v...
2019-02-19 12:12:39 1300
原创 洛谷P1020/NOIP1999 拦截导弹
题意简述:求最长不上升子序列的长度,并求出最少有几个不上升子序列。解题思路:第一问直接用dp做,有O(n^2)的也有优化后O(nlgn)的,我才用的是前者。第二问可以用一个数组h来记录当前所有系统的拦截高度,每次遇到一个新元素,在h数组中找一个大于 a[i] 的最小的元素,并将其更新为 h[ j ] = a[i],如果没有则将a[i]作为新元素添加进h数组。代码示例:#include...
2019-02-19 11:37:23 958
原创 NOIP2008 传纸条(线性DP)
题目描述:小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的...
2019-02-18 17:50:00 500
原创 TVYJ1061 解题报告(线性DP)
题意简述:一个公司有三个移动服务员。如果某个地方有一个请求,某个员工必须赶到那个地方去(那个地方没有其他员工),某一时刻只有一个员工能移动。被请求后,他才能移动,不允许在同样的位置出现两个员工。从p到q移动一个员工,需要花费c(p,q)。这个函数没有必要对称,但是c(p,p)=0。公司必须满足所有的请求。目标是最小化公司花费。输入格式:第一行有两个整数L,N(3<=L<=200, ...
2019-02-18 13:11:17 636
原创 Windows 下的对拍程序(ACM等比赛适用)
参考出处:ACM/OI 对拍程序的写法对拍程序思路:生成测试数据 将测试数据分别输入到标称与自己的代码,并获得输出 对比两个输出是否相同一般呢,我们会写个 rand.cpp 来生成测试数据,即每运行一次rand.exe就会生成一组测试数据。接下来呢,假设标称文件是std.exe,而自己写的代码为my.exe,我们需要做的是将rand.exe生成的数据保存到data.in文件中,然...
2019-02-15 19:56:59 1430
原创 POJ1934 Trip(输出所有最长公共子序列)
题意简述:两个字符串都仅由小写字母构成,且长度不超过80。要求按照字典序无重复的输出所有的最长公共子序列。原题链接:POJ1934解题思路:都是这种题怎么能怪我不学习?我昨天用我自己的思路写了一天,经过昨天一天的改进,还是有各种错误,我都没法证明为什么错了,而且我觉得我写的明明和这个解法异曲同工! 首先是求出最长公共子序列,我的写法是O(n^2)级别的,好在数据中的n只有80。...
2019-02-15 19:36:53 1236
原创 POJ1952 线性动态规划
题意简述:就是说给出一个序列,求出其最长下降子序列(类比最长上升子序列),以及个数。同时要求统计个数时不能有重复,重复的意思是该序列每一个对应元素与另一个序列相等。原题链接:POJ1952解题思路:又一次栽在题意上,我忽略了子串重复这个要求,导致我刚开始的做法与正确答案大相径庭。具体思路是,在求最短下降子序列的过程中想办法求出其个数。而如何求出其个数成了这题最后一个难点。下面的代码主体...
2019-02-12 18:40:53 615
原创 杨氏矩阵( Young Tableau )与勾长公式
1.背景1.1 简介:从ACMer角度来讲,杨氏矩阵并非无可替代,事实上我们也似乎并不需要其种种神奇的特性,但是作为一种算法与数据结构,我们还是需要了解的,好在其难度并不太大。1.2 2.定义2.1 杨氏矩阵:杨氏矩阵(杨氏图表)是一个矩阵,它的每一个元素满足下面两个条件:如果位置(i,j)没有元素,则它的右边和上边相邻位置一定也没有元素 如果位置(i,j)有元素a[ i ]...
2019-02-05 16:26:01 2277
原创 最长公共上升子序列(DP)
问题描述:在动态规划中,最长公共子序列(LCS)与最长上升子序列(LIS)是基础的线性DP。现在要求求出两个不等长序列的最长公共上升子序列,故名思意,定义类似前两个问题。解题思路:如果已经会求最大公共子序列,那么自然就可以想到,只需在最长公共子序列上找一遍最长上升子序列即可。然而具体的状态转移方程,只要在两个元素判等后进行进一步操作即可,稍微注意一下状态的始末,即k为何从0开始而不是1。该方法...
2019-02-03 21:01:52 8215 3
原创 (环上)最大子段和
1.背景最大连续子段和是一类问题,即求一个序列最大连续子序列的和。问:给出n个元素分别为A1,A2,...,An,求出其最大连续子段和。2.求解思路2.1 动态规划:设A[ i ]为该序列第 i 个元素,C[ i ]存放前 i 个序列的最大子段和,那么C[ i ]有两种可能结果:2.2 问题2:A1,A2,...,An 首尾相连,求出该环上最大子段和。2.3 问题2...
2019-02-01 17:37:36 1306
哈夫曼编码译码器-数据结构实训
2019-01-13
算法导论 PDF
2018-08-21
教职工信息管理系统-结课作业C++
2018-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人