- 博客(42)
- 收藏
- 关注
原创 hdu 1003 1231 最大连续子序列的和
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003就是典型的最大连续子序列的和,我校赛初赛时发现我还不会这个,赶紧回来学习一下,应该算是入门级的dp吧。题目的大意就是说,在一个序列之中,需要找出这个序列中连续的子序列,其各个数的和是整个数列里面最大的。对于每一个数来是说都只有取和不取的两种状态,如果加上这个数之后比最大的和大那就要取,用s
2015-03-30 12:51:52 498
原创 soj 1075 拓扑排序队列实现
就是soj 拓扑排序的模板题吧。然后我中午把用队列实现的拓扑排序的方法看了下。晚上就打算来练一下这种纯模板。对于这实现的方法,我的理解就是存下每个节点的入度以及它指向的其他节点,由于指向多少个这个不太能确定所以用一个vector来存。然后将入度为零的节点取出来入队列,再将其所指向的节点之间的边都删掉(也就是将所指向的节点的入度减1)减掉之后如果这个点变为入度为0了,就可以将其入队了。。还有关于
2015-03-27 21:14:59 973
原创 poj 3009 dfs+剪枝
http://poj.org/problem?id=3009这应该是类似一道用dfs的模拟题。。题目大意是说:一个冰球要将他扔到终点,只有遇到障碍或者图中遇到终点才会停下来。。直接扔出去整个场地也不行。。主要的思路就是:对四个方向进行遍历,然后在对当前方向一直搜下去,知道碰到障碍或者终点或者直接跑到场地外。。注意如果是碰到障碍停下来的话,要退回一格,并将这个障碍消失,再接着对当前坐标进行深
2015-03-26 17:48:49 453
原创 hdu 1010 dfs+奇偶剪枝
http://acm.hdu.edu.cn/showproblem.php?pid=1010一开始看7*7以为不需要进行剪枝结果。妥妥的超时了。。跑去学习了下奇偶剪枝法。。主要的思想就是当前点到终点所要走的距离应该是他们之间的最短距离加上一个偶数的距离。。不可能是一个奇数。。奇数+偶数=奇数 偶数+偶数=偶数。 所以就能判断总时间必须和最短距离必须同奇偶。。这还可以推广到迷宫中的每一步,
2015-03-26 15:06:47 617
原创 紫书 习题 5-3 uva 10763
思路:我想将一对数映射到一个int上,结果发现不知道怎么处理这一对数。。。后来发现居然有一个pair的东西可以存一个二元组。。。这里是关于pair的用法:http://blog.csdn.net/oceanlight/article/details/7890537主要学习的就是pair和map的混用。。。后来我搜了下题解发现居然还可以用分别排序,然后如果两个序列都一模一样的话,
2015-03-24 23:06:44 395
原创 hdu 1050 贪心
http://acm.hdu.edu.cn/showproblem.php?pid=1050背景:一开始思路走歪了,想说把整个数组按照开始的房间进行排序然后看,下一个元素开始的房间是否比前一个结束的房间小如果小的话,肯定就是要+1,。。结果发现妥妥的错了。。比如(1,100)(4,120)(130,140)(135,160)应该是20。按照一开始的思路就会是30。跑去看人家的题解,才恍然大悟应
2015-03-24 20:52:43 468
原创 hdu 1051 贪心
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1051思路:先将其按照长度升序排列,若长度相同,就按照宽度排序。然后从头开始取,找到符合条件的的元素,就将其标记表示其用过,再找到第一个没有用过的,在从这个地方开始遍历,符合条件的再标记,直到每个元素都用过。。教训:一开始用while 写的 好乱啊啊。。。后来改成用for写,,还是for比较清楚
2015-03-24 20:29:37 445
原创 3.22第二次周赛总结
20/32····这次周赛还是大部分没有算法。。也让我发现了自己思维的不足。。估计是刷题刷的太少了吧。A题很快就出了,去做B题,觉得是贪心,,但是感觉还是想法出了点问题,应该要从大的开始取。。我变成从小的开始取,,搞了半天一直错,快崩溃了。这时候发现好多人出了D,我就跑去看D,感觉就是难度不算大,但是要避免超时,我一开始直接遍历就妥妥的超时了,本来想写二分,奈何二分写的少,不是太会写,后来
2015-03-23 08:17:14 371
原创 poj 3087 模拟题
http://poj.org/problem?id=3087就是模拟洗牌的过程。。学习:map不一定要用string 用数组也可以,而且注意map的缺省值为0,也就是说如果未赋值的话就是0。WA了好久不知道错在哪里,感觉模拟的过程没有问题,但就是错。。后来发现好像数组的大小有点问题。。第三个数组应该是200。结果开的还是100。poj居然报的不是RE。。。哭了,下次数组大小上面要小心。
2015-03-21 22:54:45 486
原创 hdu 1253 bfs
链接acm.hdu.edu.cn/showproblem.php?pid=1253G++超时但是改成C++就过了,一开始没有考虑到走不到或者终点本来就是墙的情况,后来改了后对了。。后来剪枝,又改了点其他的,结果错了,想了好久才发现走不到的情况丢了。。。感觉这种迷宫题,应该找到符合解的时候就输出退出,并做个标记,然后在主程序中查看这个标记,如果没有就输出不符合的情况。。这样比较不会乱
2015-03-19 15:02:37 434
原创 cf 296 B
链接:http://codeforces.com/contest/527/problem/B一开始还有有点纠结交换的两个数字的前后顺序,然后我就用了个n*n的。。结果超时了。。去看了下前几名的代码,自己确实没有想到这样的方法。。简单来说思路就是,将两个字符串中不相等的字母对取出来,开一个p[26][26]的数组保存,存下这个字母对所占的位置。。遍历每个位置,全部找出来。。然后先看看
2015-03-18 22:07:35 939
原创 poj 3126 bfs+素数判定
链接http://poj.org/problem?id=3126背景:一直WA 感觉完全不知道错在哪里,觉得自己的bfs写的没有错误。。。然后就开始急躁。。去搜了题解。。下次一定要克服这样的心理,要静下心来好好检查每一行代码,不然就会跟上次周赛一样越来越紧张。。要努力去克服!!!!不要总有着想要赶快过题的想法。。。切勿急躁。。好了。。回到这题。。WA不在bfs而在素数的判定上,,i*i
2015-03-16 21:58:52 390
原创 3.15周赛 A
链接:http://codeforces.com/problemset/problem/109/A比赛时写的是在太复杂我都不忍直视了。。其实就是应该想到数字最小的话首先就是位数最少,然后让4在前面7在后面就可以了,位数最小的话只要让7最多就行了,这样位数一定最小。代码:#include#include#include#include#include#define IN
2015-03-16 12:57:34 333
原创 3.12周赛 E
题目链接:http://codeforces.com/problemset/problem/118/C比赛的时候没有看,赛后听了下李大神的讲解,因为那时候还没有看题,对于他说的遍历0-9每个数字有点不懂。搜了下题解。参考题解链接:http://www.xuebuyuan.com/1552825.html就是对于0-9 ,从此时的这个数开始向两边找,意思就是将比他大一,比他小一的数换成他
2015-03-16 00:18:21 462
原创 第一次周赛 3.15 总结
首先感觉有一点就是不要急着出题不要急着写题,在写题之前要将思路理清楚,甚至在草稿纸上写下每个大的步骤,这样有利于代码的编写。今天周赛打的特别不顺利,22/33····打个毛线···orz感觉一开始就是第一题的思路不是非常的清楚,就开始敲,然后调试了还有点久,最后感觉差不多都好了的时候一交就错了,,试了下49这个数据就发现错误,原来是有个地方边界条件应该是>=0。。。第二题就是问题出在一
2015-03-15 23:53:23 664 1
原创 poj 1321 dfs
题目链接:http://poj.org/problem?id=1321这个感觉跟八皇后问题类似,但是就是多了一种k代码:#include#includeusing namespace std;char map[10][10];int visit[10];//记录列数 int n,k;int m,s;int count;void dfs(int u,int num) /
2015-03-14 22:42:52 498 1
原创 poj bfs 3278
题目链接:http://poj.org/problem?id=3278大意:牛和人在一条直线上,人可以往左走,也可以往右走,还可以直接跳到两倍的地方。然后求最短花多少时间能捉到牛。明显的bfs。再次复习下。背景:一开始TLE没有return,直接超时,,自己简直脑残。。然后还是wa,发现居然直接写成了cur.x = 5。。。真想撞墙。。改了后ac代码:#include#inc
2015-03-14 18:26:12 417
原创 poj 2251 bfs
再次裸敲一次模板题,虽然1Y但是还是有些问题,有的细节还是调试了一会。。主要是约束条件一开始敲错了,后来改了过来后,发现步进好像有点问题,又去看了下,发现根本没有更新步进,后来改成更新后,结果还是错的,发现是没有继承之前的步进,反正虽然过了但是就是步数那里写的有点乱,交了后看了下模板,最好在走一步的时候直接继承之前的再加一。再次复习bfs代码:#include#include#in
2015-03-14 17:36:45 432
原创 hdu 1372 bfs
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1372变量名不能使用next,这与系统的命名冲突。。(这我还第一次知道orz涨姿势了)还有就是估计是昨晚刚开完例会回来,脑子有点问题,居然用swtich case 来转换字母。。然后还不小心吧g敲成j 然后WA..再次复习bfs的模板:#include#include#include#
2015-03-12 15:05:57 415
原创 poj 2386 dfs
链接:http://poj.org/problem?id=2386几乎可以说跟hdu1241一模一样的题。再复习下dfs的写法就是要注意方向是八个方向都可以。#include#includeusing namespace std;char s[110][110];int n,m;int d[8][2] = {1,0,-1,0,0,1,0,-1,1,1,1,-1,-1,1,-1
2015-03-12 14:52:23 427 1
原创 poj 1915 bfs 模板化
之前好像写过这一题,但是毕竟有点久了,之前也没有完全理解bfs,而且还是用一个数组模拟的队列。。这次复习bfs,希望自己能形成一个模板化的写法。。#include#include#includeint m;int sx,sy;int ex,ey;int visit[301][301];int d[8][2] = {{2,1},{2,-1},{1,-2},{-1,-2},{-2,-
2015-03-12 14:32:22 329
原创 dfs 是否清除标记
最近在复习dfs ,感觉清除标记一直很晕,觉得有的不能清除标记有的又要清除标记。。花了一些时间整理了下也不知道对不对。。下午自己写了 个迷宫想了一下,发现有目标态或者说是终点的话就需要清除标记,也就是一个回溯的过程,避免走过的点不能走了。。。比如说这个情况:S..........########..########..########...........#####
2015-03-11 17:28:00 1362 1
原创 hdu 1241 dfs
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1241这题感觉别人写的题解比较好,我借鉴一下 链接http://blog.csdn.net/a38017032/article/details/8670929深度优先搜索,从A出发,A可以到B(也可以是C或者D),然后在从B出发到E(或则F),到E以后没有连接的,然后返回B,到F
2015-03-10 23:09:01 435
原创 hdu 2844 多重背包
http://acm.hdu.edu.cn/showproblem.php?pid=2844也是多重背包问题。。就是找出能拼成几种价格。。就是一开始脑残用了一个标记数组,后来发现直接不需要,就遍历数组,当此时背包中能拿到最大的价值与背包此时的重量相等就加一种。if(dp[i] == i) count++;一开始标记数组的代码:#include#includeint dp
2015-03-09 23:42:24 376
原创 hdu 1059/ poj 1014 多重背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1059第i种物品的价值就是i 然后只输入每种物品的个数。。思路:如果总价值是奇数直接不可能,偶数的话然后将总价值分一半为背包容量,再进行多重背包,最后dp[v]==v 就是可以分。。还有就是格式一开始有点问题。。题目说的是每组后都要空行。。代码:#include#include
2015-03-09 23:31:04 416
原创 poj 1276 多重背包问题
题目链接:http://poj.org/problem?id=1276多重背包问题练手。。价值与重量都是价格。代码:#include#includeusing namespace std;int dp[100010];int c[20];int m[20];int main (){ int v,n; while(cin >> v >> n && (v||n)) {
2015-03-09 23:25:50 412
原创 hdu 2024 水题
就是isalpha这个判断是否为英文字母的函数拼错了orz 其他都很水#include#include#includechar s[110];int main (){ int n; scanf("%d",&n); getchar(); while(n--) { int flag = 0; gets(s); for(int i = 0;i < strlen(s);
2015-03-09 08:57:04 386
原创 hdu 1712 分组背包问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=17121Y很开心。。分组背包就是在01背包的基础上分了多个组,每组只能取一个。这样在01背包上再加一重循环就可以了。。二维的状态转移方程:F[k,v] = max {F[k − 1,v],F[k − 1,v − C i ] + W i | item i ∈ group k}背包九讲的伪代
2015-03-08 23:40:53 380
原创 hdoj 1864 01背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=186401背包感觉没什么好说的。就是要将题目中的小数*100化为整数处理,才能作为数组的下标。。然后有点坑的地方就是题目中说单件物品不能多于600,是指同一类比如都是A的总共不能多于600。我以为是每个都不能多于600,然后WA。。。我用了个标记数组来记录是否符合要求,不符合的就跳过。。
2015-03-07 17:05:05 438
原创 hdoj 2159 二维费用的01背包
思路:题目中要求有最大杀怪数,那么也就是变成了二维费用问题,我们就可以将状态转移方程写成这样dp[j][k] = max(dp[j][k],dp[j-c[i]][k-1]+w[i])。然后我们顺序遍历整个数组,找出能升级的消耗最少的那个耐久度,这样就能求出最大剩余的耐久度了。。附上代码:#include#includeint dp[110][110];int w[110];int
2015-03-07 14:44:03 612 4
原创 hdoj 2955 01背包变形+简单的概率论
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955题目一开始感觉有点无从下手,因为乍一看觉得背包容量、价值都是double,然后联想到poj2063 打算给他扩大一定的倍数,但是仔细看了下题中确实并没有明确暗示,但是想不出其他的办法只能硬着头皮做,然后妥妥的WA了,又想了一下不得法,只能去看了discuss,然后感觉发现了新的天地。。。
2015-03-05 11:19:52 493
原创 hdoj 1203 01背包变形
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203做这题的时候知道是01背包,但是一开始没有搞清楚这个概率怎么和01背包结合起来。后来思考了一段时间,才明白。。最后还被坑了一把,题目说要最后两个都为0,我习惯性只打了n&&m没有写成(n||m) 结果悲剧了,想半天不知道为什么,还去看了人家的····思路:假设他同时向好几所大学
2015-03-03 22:11:35 571
原创 hdoj 1171 多重背包问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1171本题为多重背包问题。思路:既然题目中的说的是要尽可能的将A B变得相等,然后A 又一定要大于B ,那么我就想将总物品的价值的一半设置为背包的容量,以这个容量来进行多重背包求解最大值,然后判断一下这个最大值与剩下物品价值的总和的大小,如果最大值较小(也就是说如果这个最大值不到总价值的一半
2015-03-02 22:30:10 554
原创 poj 2063 完全背包问题
题目链接:http://poj.org/problem?id=2063本题也是完全背包。因为最近就在看背包九讲。。此题RE了,后来仔细看了下题目,确实本金一直在增长,而且年份也不少,最后的话数组的下标会变得很大。后来我就想能不能把他整除10的倍数,但是又发现利息很有可能变成小数,然后我又想把类型改成double,但是数组下标都不能是double。。。有点晕,去看了别人的题解,,顿时豁然
2015-03-01 18:10:22 583
原创 hdoj 1248 完全背包问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1248也是一道裸的完全背包。。就是注意背包的容量以及花费都为同样的,我 写为 c 数组。增加熟练度。。#include#includeusing namespace std;int dp[10010];int c[3] = {150,200,350};int max (
2015-03-01 17:18:10 713
原创 hdoj 2602 01背包入门题
其实这几篇有的是之前写的,但是在家里不知道怎么回事csdn一直上不去,于是来了学校顺便整理下。。http://acm.hdu.edu.cn/showproblem.php?pid=2602第一道01背包用了二维的方法解,二维的就是要注意在遍历背包容量时要从零开始,并且判断是否大于该物品的消耗,如果大于的话在考虑是否放入,否则直接就是不能放。#include#includeint f
2015-03-01 15:57:58 446
原创 01背包入门题 poj 3624
http://poj.org/problem?id=3624初练习01背包。。用上一维的解法,就是注意01背包要逆序,才能保证是前一个的值。#include#include int c[3500];int w[3500];int f[13500];int max(int a,int b){ return (a>b) ? a:b;}int main (){ int
2015-03-01 15:55:11 356
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人