- 博客(118)
- 资源 (1)
- 收藏
- 关注
原创 单调栈的一些应用
1、何为单调栈:顾名思义,栈中的元素是按照某种方式排列,但是必须是单调的,如果某元素破坏了栈的单调性,就弹出栈的元素,直到该元素满足栈的单调性为止。2、用途:可以很方便的求出某元素左边或右边第一个比其大或者小的元素,且时间复杂度O(n); hm 与 zx系列故事题目链接训练赛的时候没能够做出来,自己当时根本就不知到什么是单调栈,更别说应用了,平时应该多多的积累一些知识点,遇到不...
2013-12-01 22:09:05 256
zoj 1655 Transport Goods (Dijkstra)
ZOJ Problem Set - 1655 Transport Goods 结题报告:一开始用的是从首都向其他城市搜索,记录路径,然后向回搜索,但是出现了wa。后来搜了一下结题报告,别人都是直接搜索,使费用率最大,试了一下,这样做还是wa最后看了 小媛 的,才知道是可能同时出现费用率不同的同一条路,这是后我们当然要选择费用率较小的感觉自己第一遍记录路径代码可以过!,但...
2013-11-17 22:26:43 224
原创 poj 1679 The Unique MST (最小生成树是否唯一 )
题目链接:poj 1679 The Unique MST 解题报告:最小生成树是否唯一判断方法(1)图中每条边,扫描其他边,如果存在权值相同的边,则对其边标记(2)用kruskal或prim算法求最小生成树的权值(3)得到最小生成树,如果该最小生成树不包含标记的边,则最小生成树唯一,如果包含了标记的边,则依次去掉标记的边,再求最小生成树,如果求得的最小生成树与原最小生成树的...
2013-11-10 20:27:56 321
zoj 2048 / poj 1751 Highways prim算法 (无限wa注意)
题目链接 :http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1048 解题报告:在zoj上wa了多次还是过不了,感觉很郁闷,就去poj上提交,结果poj可以过。代码其实很快就敲出来了,只是一直wa改了很久也没有发现错误,刚开始我还以为是已经完全联通的城市需要输出一个空行呢,结果只是两组数据之间夹一个空行,zoj上...
2013-11-07 21:17:58 240
Problem - 105A - Codeforces A.(精度问题)
链接:http://codeforces.com/problemset/problem/105/A 解题思路:题目要求输出单词必须按字典序输出,用STL中的map容器会比较简单map容器实质上是一个二叉查找树,它可以做插入、查找、查询等操作。时间复杂度log(n);n为map中元素的个数,再用迭代器去访问map中的元素就是按照字典序进行访问的 map<x1,x2&g...
2013-11-05 22:11:29 149
poj 2421 Constructing Roads (kruskal) runtime error
链接:http://poj.org/problem?id=2421 #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define maxn 210#define maxm (210*210)using namespace...
2013-10-30 21:51:49 113
ZOJ 2193 Window Pains AOV网络
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1193 结题报告:本次代码写的比较乱,但是感觉收获还是不小的第一次完全靠自己手写邻接表,虽然调了两天,但是最终还是搞出来了首先4*4方格中每个方格可能出现的数字11,22,331,41,2,4,52,3,5,63...
2013-10-15 19:43:36 571
poj 2935 (bfs+路径)
题目链接:http://poj.org/problem?id=2935 解题报告:刷到bfs明显的感觉有些难,这道题应该卡的有3~4天了吧!首先说明一下bfs如何记录路径:在结构体中,用一个值来记录上一个的位置,然后再“回溯”(并不是真的回溯)到第一个元素,然后递归输出即可;第二点:交换两个数的位运算方法:a^=b^=a^=b,看上去显得代码更有技术含量第三点:注意输入值的顺...
2013-10-08 21:55:06 188
zoj 1091 (bfs搜索)
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=91 结题报告:因该说10多天没有A题了,今天过了一道比较水的题目,也算是来纪念一下吧,最近在刷搜索的时候感觉bfs有些题目是比较难的,象蛇和梯子那道题整整卡了我一个星期但是现在仍然没有过,标记一下,有时间在回来看一下!这道题注意两个地方,一个是下标的值,一个是...
2013-09-28 21:25:24 240
ZOJ Problem Set - 1649 Rescue (bfs搜所)
ZOJ Problem Set - 1649RescueTime Limit: 2 Seconds Memory Limit: 65536 KBAngel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M <= ...
2013-09-15 20:17:37 284
Farm Irrigation zoj 2412(dfs)
Farm IrrigationTime Limit: 2 Seconds Memory Limit: 65536 KBBenny has a spacious farm land to irrigate. The farm land is a rectangle, and is divided into a lot of samll squares. Water pipes ...
2013-09-12 19:30:02 93
原创 zoj 2110 Tempter of the Bone (dfs搜索)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1110 结题报告:搜索中的一个重要的剪枝,现在记录下来,作为一个积累; 起点到终点的距离即sx-ex+sy-ey如果是奇数, 则题目中所给定的时间一定是只有奇数才可能得到结果,如果题目中的起点到终点的距离如果是偶数,则题目中给的时间如果是偶数才可能得到想...
2013-09-06 21:40:49 141
原创 hdu 1016 && zoj 1457 Prime Ring Problem (dfs)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1457 解题报告:在zoj第一次提交的时候竟然是TLE,让我很是费解,然后把判断素数的方法变成直接打表的方法 ,以为这样可以节省很多的时间,结果还是TLE(hdu上此时就可以Ac),后来试了一下数字19,结果很久都没有跑出结果,感觉应该是这的问题,我就把...
2013-09-01 21:52:42 129
poj 3264 Balanced Lineup (线段树)
题目链接 解题报告:线段树的入门题目,这里只需要两种操作“建树”、“查询”。 线段树解题的关键是节点存放的信息 #include <cstdio>#include<cstring>#include<algorithm>#define max(a,b) a>b?a:b#define min(a,b) a<b?...
2013-08-20 09:44:58 113
原创 hdu 1358 Period ((KMP算法)求循环节的个数)
题目链接 题意是求前n个数的循环节的个数:例如:aabaabaabaab中 ,前2个字符aa,循环节为a, 所以为2 2;前6 个 字符循环节为aab, 所以为6 2;前9个 字符循环节为aab, 所以为9 3;前12 个 字符循环节为aab,所以为12 4; 关键是如何求循环节,首先还要熟悉next数组的意思,next[j]=k,表示j前面k个元素与...
2013-08-18 11:46:12 219
hdu 2203 亲和串 (KMP算法)
http://acm.hdu.edu.cn/showproblem.php?pid=2203 解题报告:由题目:给定两个字符串s1和s2,如果能通过s1循环移位,使s2包含在s1中,那么我们就说s2 是s1的亲和串。移位循环,最多多循环循环一个s1的长度,因此我们可以把s1中的前n-1位直接添加到s1的后面,如s1=AABCD,可以变为s1=AABCDAABC,这样就包含了所有的情...
2013-08-17 15:41:38 146
hdu 3336 Count the string (KMP算法)
http://acm.hdu.edu.cn/showproblem.php?pid=3336 解题报告:刚开始用的是暴力的方法,就是每次往next数组中加一个元素,然后再在整个数组中进行查找,虽然加了很多的优化,但是还是无限的TLE中。(拒绝暴力,另寻他路)。直接用next数组的意义,不过这次的求解next的方法与上次有些不同,暂且叫作方法二吧: void get_next...
2013-08-17 11:00:06 112
原创 hdu 1711 Number Sequence ( KMP算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 解题报告:一道比较简单的kmp题目,还是很佩服当初发明者个算法的一群人,怎么想到的next数组的写法,让我们这帮菜鸟反复理解其含义。不知道为什么这么写,但我们至少要理解next的含义。 首先:next[0]=-1 ,是我们规定的每个串的第一个值为-1; 其次: nex...
2013-08-16 19:08:25 112
poj 3461 && hdu 1686 Oulipo (kmp)
题目链接:http://poj.org/problem?id=3461 解题报告:字符串匹配关键是next数组不好理解。 参考资料写道(1)next[0]= -1 意义:任何串的第一个字符的模式值规定为-1。(2)next[j]= -1 意义:模式串T中下标为j的字符,如果与首字符相同,且j的前面的1—k个字符与开头的1—k个字符不等(或者相等但T[k]==T[j])(1≤...
2013-08-13 22:03:03 100
hdu 1158 Employment Planning (动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1158 解题报告:自我感觉这道题目的状态方程不太容易。刚开始用一维的搞,这么也得不到正确答案,后来想有月份、人数,应该用二维的。 首先雇主要在第n月花钱最少,一定是在第n-1月花钱也是最少,一定具有最有子结构,可以想到动态规划;如果第n个月的需要的人数比第n-1个月的多,则需...
2013-08-12 15:32:29 103
原创 hdu 1081 To The Max (动态规划)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1081解题报告:求最大的矩阵和的问题,可以转化为最大连续子序列和的模型,只不过这个是一个二维的问题。如何转化是关键:我们可以把每一项变成前面多项的和,通过相减计算每个子矩阵。在求解的时候竖着求解,这样子问题就转换为1维求解最大连续子序列和的问题。给一组参考数据:4-3 -7 -1 -2-3 -4 ...
2013-08-10 21:30:44 120
原创 hdu 1058 Humble Numbers (dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058解题报告:纠结!看了两三天了,始终不知到如何找递推关系式,今天终于忍不住了,看了别人的解题报告才搞明白(自己还是很水啊!)关系式 a[n]=min(2*a[c1],3*a[c2],5*a[c3],7*a[c4]);然后从小到大一个一个的往上递推!(这方法也太牛了吧)本以为是
2013-08-09 09:43:47 556
原创 poj 1659 Frogs' Neighborhood (可图的判定)
题目链接:http://poj.org/problem?id=1659解题报告:(Havel-Hakimi 定理)给定一个度数列,将其从大到小排序 将将第一个元素删除,然后(第一个元素长度)后面的元素各减去1,一次往后递归循环,如果度数变为负的肯定不会联通举个例子 2 5 1 2 4 1 3 1 3 2 是否可图排序后5 4 3 3 2 2 2 1 1 1 删除首
2013-08-08 20:52:59 587
原创 hdu 1025 Constructing Roads In JGShining's Kingdom (最长上升子序列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1025解题报告:刚开始想用二分匹配,但是二分匹配可以使线相交,明显不行;其实这道题仔细挖掘,可以发现很多信息 !每个P都与唯一的一个r相连,每一个r都与唯一的p相连,就保证从1 到n的每个数都不会空着,就可以从1-----n来找富城市所对应的穷城市,穷城市之间的序号也从小到大即可加入dp
2013-08-08 10:34:15 539
原创 hdu 1231 最大连续子序列 (dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1231解题报告:一晚上加一上午啊!终于搞出来了!相信最大连续子串和都可以写出来,网上资料一大堆,像N^3,N^2,N算法都有,本题关键是纪录初始位置和终止位置,刚开始想用下标纪录位置,但是总是wa!纠结了一晚上也没有思路,所以换了一种方法,直接 纪录每次的初始位置和终止位置,如果更新su
2013-08-07 10:54:57 638
原创 hdu 1176 免费馅饼 (数塔)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176解题报告:如果以下落的时间为纵轴,以移动的横线为横轴,则可以把改问题抽象为数塔问题,只不过该数塔只有5层剩下的是一个矩形更新的时候注意范围,这里我把三角形的外侧赋值为-1,就是在这片区域不能被更新代码有点乱code:#include#include
2013-08-06 20:14:24 523
原创 hdu 1160 FatMouse's Speed (最长单调递减子序列+纪录路径)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160解题报告:刚开始直接纪录路径怎么都过不了,不知道什么原因,后来开个数组纪录路径,就过了,不清楚什么原因啊!代码:#include#include#include#includeusing namespace std;int cnt,f[1005],temp[1005]
2013-08-06 17:00:43 654
原创 hdu 1159 Common Subsequence (最长公共子序列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159解题报告:原来看到这个类形的题,感觉无从下手,那时候还不明白动态规划的思想,最近在学习动态规划,感觉很神奇的东西,只要有最优子结构的问题,一般都可以转换为动态规划,使时间复杂度降为多项式的问题这道题目刚开始学动态规划,时间复杂度为你n^2,空间复杂度也是n^2,今后慢慢学习优化,
2013-08-05 09:36:15 555
原创 hdu 1712 ACboy needs your help (分组背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1712解题报告:只说一点主意for循环间的顺序使用一维数组的伪代码如下: for 所有的组k for v=V..0 for 所有的i属于组k f[v]=max{f[v],f[v-c[i]]+w[i]} 注意这里的三层循环的顺序“for v=V..0”这一层循环必须在“
2013-08-03 19:47:32 511
原创 hdu 3033 I love sneakers! (分组背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3033解题报告:这道题参考了别人的代码,实在不知道如何做我们把dp[I][j]定义为取第i品牌的商品,花费j时取得的最大的 value,dp[][]的初始化是全初始化为-1,目的在于判断是否是否可以满足,Iserlohn的要求,如果最后是-1则不满足然后在俩个if判断语句中,第一个是判断去第
2013-08-03 16:56:39 490
原创 hdu 2660 Accepted Necklace (二维背包 简单题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2660解题报告:题目中对每个物品的取舍包含两个方面的因素 1、自己选择的宝石种类 2、妈妈所能接受的最大的重量。所以是二维背包的类型的问题由于每个物品只能使用一次,求最大的价值,所以转换为01背包。即:for(int j=use;j>=0;j++)code: #include
2013-08-03 08:19:24 692
原创 hdu 3496 Watch The Movie (二维背包简单题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3496解题报告:题目中有两个“花费”,典型的二维背包的问题本题主要是推出状态转移方程,已知每部电影所花费的时间和得到的 欢乐,用dp[][]存放每一步所得到的欢乐,则该步所得的欢乐可以由上一步递推的到,用val[]存放欢乐,len[]存放每部花费的时间,则状态转移方程为dp[j][k]=
2013-08-02 21:12:56 596
原创 hdu 2159 FATE (二维背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159解题报告:二维背包的问题,如果没有看过的话,建议去看看背包9讲中的第五个问题。本题中有每杀一个怪,会获得一定的经验,同时减少一定的忍耐度,我用二维数组dp[][]来存放每次获得的经验值,b[i]为每次消耗的忍耐所以可以的到递推关系式:dp[i][j] = max(dp[i-b[
2013-08-02 17:07:09 594
原创 hdu 1059 Dividing (多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1059解题报告:这道题的方法没有什么特别之处,就是太用多重背包的模板,注意两点 :dp[]开的要大一些,刚开始20005时老是run time error 。还有就是在01函数中最大的上限用half,别用一个非常大的数字,想20005,总会wa,应该是数据范围超了吧code:#inc
2013-08-02 09:59:25 471
原创 hdu 3591 The trouble of Xiaoqian ( 多重背包 + 完全背包 )
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3591解题报告:个人感觉很好的一道题目,首先不是水题,题目的难度也不算很大,虽然花了一晚上才搞完,但是还是感觉很开心~~。解题思路是:首先这个人有各种钱币,每种钱币若干,所以我们对这个人的钱用多重背包解决;再者是找钱的人,可以认为他们有各种各样的钱币,都是无限件,所以对于收银员进行完
2013-08-01 22:55:53 607
原创 hdu 1171 Big Event in HDU (多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1171解题报告:多重背包:每件物品有有限件,背包的容量一定,然后求背包所能装下的最大的价值;对于这道题,“两兄弟”分家,有好多种物品,每件物品价值一定,每件物品数量也很多,A的最终财富大于等于B,求应该如何分配;很显然多重背包的问题:多重背包其实并不复杂,而且用二进制的思想将原问
2013-08-01 16:35:21 651
原创 hdu 1412 搬寝室 (很好的一道dp题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1421解题报告:关于这道题,主要是求递推公式,要求是两手的重量只差尽量小。所以我们可以对初始数据进行一下排序(个人习惯用sort)dp[i][j]表示从前i件中选出j对重量之差最小的值。val[i]:表示相邻的两件之间的最小值(注意每件物品已经排序)递推:假设第i件不被选为要搬的
2013-08-01 09:50:32 698
原创 hdu 1248
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1248解题报告:一遍ac,不能总是这样子刷水题,在这样下去,自己迟早瘫掉!由于只有一张纸币,每件物品有好多,完全背包问题。。。code:#include#include#includeusing namespace std;int w[4]={0,150,200,300},dp[
2013-07-31 19:18:03 545
原创 poj 2063 Investment (完全背包)
题目链接:http://poj.org/problem?id=2063解题报告:题目的大意是John有一笔钱,然后他想买债券,不同的的债权有不同的价值,有不同的收益。每年的收益加本金可以去购买下一年的债券,问n年之后的最大收益。、很显然由于每种债券可以买多次,这是一个完全背包问题,知道这一点题目大致可以做出来,一般会TLE,因为每种债券是1000的倍数,所以可以做一个很大的优化,应
2013-07-31 16:38:12 800
原创 poj 1384 && hdu 1114 Piggy-Bank (完全背包)
题目链接:http://poj.org/problem?id=1384解题报告:题目要求背包容量一定,把背包装满时背包的价值最小。 由于每一件物品的数量是无限的,所以是完全背包问题。 题目要求价值最小,所以我们在初始化的时候,应该初始化最大值,由于在背包容量为0的时候,价值是0。code:#include#in
2013-07-31 13:17:52 789
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人