
早期OJ
文章平均质量分 76
DrawnBreak
这个作者很懒,什么都没留下…
展开
-
zjut1634——也算是动态规划吧,只是我写的奇怪
Problem C: 单向迷宫Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 94 Solved: 2[Submit][Status][Web Board]DescriptionZJUT有一个单向迷宫,里面所有的道路都是单向的,对于一个固定的节点,能在下一步走到的节点是固定的,Rakkit已经获取了这个迷宫每个节点能直接走到的点是哪个,现在需要你做一...原创 2016-03-26 20:21:05 · 391 阅读 · 0 评论 -
poj2243~双向bfs
感觉双向bfs真是麻烦,看来有必要保存这个模板!总是会遗漏好多东西!#include<iostream>#include<string>#include<queue>#define M 12using namespace std;int dir[8][2]={{-2,-1},{-2,1},{2,-1},{2,1},{-1,-2},{-1,2},{1,...原创 2014-08-28 12:24:23 · 393 阅读 · 0 评论 -
poj3984~用bfs求最短路~同时记录路径
今晚因为一个小小而隐蔽的错误害得我折腾了一个小时,都以为闹鬼了xx=px[xx][yy];yy=py[xx][yy];这两句看似很正确,但是我却忘记了第一步会改变xx的值,使得下一步中的py就不再是那个py了!要不要我交换了一下次序还真没发现!唉,用bfs求最短路径很容易,但是记录路径就麻烦死了,算是学到了点经验#include<iostream>#include<string...原创 2014-08-27 23:57:49 · 449 阅读 · 0 评论 -
poj2299~第一次明白了归并排序
想当年,看着算法书的归并排序,一头雾水,现在找到一段好代码,一张好草稿,成功地理解了归并的含义!#include<iostream>#include<string>#define M 500005using namespace std;int a[M],Left[M],Right[M];long long ans;void merge(int p, int ...原创 2014-08-27 21:46:38 · 376 阅读 · 0 评论 -
poj2478~欧拉公式套模板
讨厌数论题,要么难推,要么就是就是套个公式,而且自己还不懂这公式的原理#include<iostream>#include<string>#include<cmath>#define M 1000005 using namespace std;int prime[M];long long ans[M];int main(){ int ...原创 2014-08-27 17:38:28 · 544 阅读 · 0 评论 -
poj1207~递归和打表
题意比较难懂一个数字x,如果是奇数则x=x*3+1,否则x=x/2.,直到x=1,这个过程所经过的长度叫做“循环数”题目给你2个数字i和j,求i和j区间中最大的循环数。i可能大于j!我的思路就是递归加打表,不过打表不能全打,因为范围可能会超大,比如(9999*3+1)=29998有点大啊,为了防止超出我的预想打表的时候定个范围#include<iostream>#include<...原创 2014-08-26 20:27:00 · 638 阅读 · 0 评论 -
poj1915~双向bfs和bfs
这题说是可以用双向bfs,为了看看双向到底能多牛,我做了单向和单向第一个图是单向bfs所花的时间:第二个图是双向bfs所花的时间感觉……没啥特别大的区别啊^而且双向写起来有点麻烦,我写的时候漏了好多东西直接上双向的代码好了,这个双向还是好理解的,#include<iostream>#include<string> #include<queue>#de...原创 2014-08-26 15:05:42 · 666 阅读 · 0 评论 -
poj1847~简单最短路问题
题意:在一个有向图中,有很多个点,他们之间的距离要么是0,要么是1,要么是不存在,求某点到某点的最短距离我直接套模板啦,真是非常迅捷#include<iostream>#include<string>#include<cmath>#define M 105#define INF 999999using namespace std;int d[M],v...原创 2014-08-25 18:04:26 · 433 阅读 · 0 评论 -
poj2002~对哈希表的理解进一步加深了
Time比较长,1454MS,不过我不在乎了,毕竟我没那个实力去参加竞赛,自然也没必要纠结时间快慢,不超时,不报错就行,学会并熟练这个算法是最好的给你一堆点,找四个点组成的正方形有多少个。暴力方法就是枚举4个点看是否构成正方形,但是n有2000个。2000^4明显超时。但是2000^2是不会超时的,所以我们可以尝试枚举2个点来求正方形是否存在这个几何好的话很容易的,初中知识就可以应付了吧。已知2个...原创 2014-08-25 11:37:34 · 459 阅读 · 0 评论 -
poj3274~改吐了的哈希表
改了一晚上才改对,疯了,没法说更多了/* sum[i][j]代表0到i这个区间内 ,每位数的个数,j代表是第几位。明显sum[a][j]-sum[b][j]中每个j都是相等时说明这个区间内是“平衡”的所以可以用c[i][j]代表是否2者区间内是否平衡,c[i][j]=sum[i][j]-sum[i][0];*/#include<iostream>#include<string&...原创 2014-08-24 21:22:40 · 584 阅读 · 0 评论 -
poj3349~差点超时的哈希表
这……感觉我没有领悟哈希的精髓吧,竟然要3秒多,还是不写什么解析了,后面继续悟悟吧#include<iostream>#include<string>#define M 99999 using namespace std;struct snow{ int v; int flake[6]; struct snow *next;};struct snow...原创 2014-08-24 17:06:54 · 508 阅读 · 0 评论 -
poj2531~剪枝dfs枚举题
题意很简单,就是把一堆点分成两个集合,求集合间的边的总和的最大值直接暴力其实也能过,不过既然分类在剪枝题里我就使劲想怎么剪枝1.枚举时只需要枚举前一半的情况就可以了,比如有1、2、3这3个点,你选择了1作为集合A,计算结果,那么后面没有必要再选取(2、3)作为集合A这种情况了,因为两者是一样的2..所有边的和为sum,当你选择了一个集合A,A集合中各边的总和为is, 那么集合间的边的总和肯定小于s...原创 2014-08-23 20:07:35 · 525 阅读 · 0 评论 -
poj3278~bfs基础题
感觉对于那种到达某个地方,求最短步数的题目用bfs真是极好的!而且这还是道基础题需要注意的地方:1.走过的x坐标要用v数组标记,免得重复走2.入队时记住判断一下是否在范围内,即x坐标要在0到100000之间。#include<iostream>#include<string>#include<algorithm>#include<queue>...原创 2014-08-22 18:13:06 · 439 阅读 · 0 评论 -
poj2707~大水题
题意刚开始比较难懂,就是一张c*d的图片要放进a*b的纸张里,那个图片至少要缩小多少百分比(可以将图片旋转)还是就是printf输出%号时要写成%%才能输出#include<iostream>#include<string>#include<queue>#define M 12using namespace std;int min(int a,int...原创 2014-08-28 16:12:21 · 451 阅读 · 0 评论 -
poj1077-不作此题人生不完整~经典搜索题
这题可不是简单的迷宫搜索之类的,我用STL的单向bfs搜索就超时了,于是我迫不得已手写队列,AC,接下来要尝试双向和A*首先是单向BFS:300ms还可以啊,我以为会是七八百毫秒的这个是A星算法的:估价函数我自己想的,所以没那些人那么快/*******单向BFS************会用康托函数以及保存路径就行**/#include<iostream>#include<s...原创 2014-08-29 14:56:20 · 747 阅读 · 0 评论 -
zjut1633——好简单的动态规划
Problem A: Zero的樱花Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 75 Solved: 26[Submit][Status][Web Board]Description十日樱花作意开,绕花岂惜日千回?昨宵风雨偏相厄,谁向人天诉此哀?忍见胡沙埋艳骨,空将清泪滴深怀。多情漫作他年忆,一寸春心早已灰。(黄季刚)Zero不忍樱花就此落地,希...原创 2016-03-26 20:17:32 · 325 阅读 · 0 评论 -
16-3-20 校赛初赛战果
最近的刷题训练果然没有白费!尤其是DP的那题一下子就想到了而且还做了一道first blood,而且只有我写出来啦!! 那个二进制交换也是,想着想着就想到了~日后有空更新题解!只要想做,没有做不到的...原创 2016-03-20 22:20:27 · 298 阅读 · 0 评论 -
zjut1547——自己想出来的动态规划
zjut1547传送门《Popstar》一款非常容易的消除类游戏,游戏的规则很简单:只需点击两个或两个以上颜色相同的方块即可消除。为了是题目更加简单,只有一维,而且一个方块也能消去,给你一行方块,每个方块都有一个颜色,每次都可以选取一段颜色相同的方块消去,得到消去数量的平方的分数,每次取玩后,消去方块的左右两边又会相互连在一起。问最多可以取得多少分? ...原创 2016-03-15 19:07:43 · 355 阅读 · 0 评论 -
zjut1554
鉴于要迎战即将到来的校赛(不过怎么感觉今年不办了),我开始刷刷去年比赛时没做出来的题1554: 酷爱大的Description给一个n*m的矩阵,你需要找一个一个子矩阵,令x为该子矩阵四个角上的数的最小值,问你x的最大值是多少?Input第一行输入n和m(1<n,m<=1000)接下来n行,每行m个数,每个数绝对值不超过1000000000数据随机生成Output输出x的最大值Samp...原创 2016-03-13 15:47:20 · 308 阅读 · 0 评论 -
poj1724
原创 2016-03-05 21:22:15 · 314 阅读 · 0 评论 -
poj1062——最短路Dijkstra
刚开始理解错题意,导致WA了好久注意点:等级限制不在于前后2人,而在于你交易的所有人中,等级差距不能超过m不可以在搜索的过程中判断等级差距,因为最开始你会选择一条错误的路径,然后往后搜就会出现等级差距,而这明明是可以避免的正确方法是枚举等级区间假设首领的等级是5,等级限制为2那就枚举3-54-65-73个区间,便能保证区间内所有人的等级都在限制内每次枚举时,区间外的等级的人都视为断开,vis为1#...原创 2016-03-05 16:09:15 · 348 阅读 · 0 评论 -
poj rank进10000名纪念
真是不容易自己也是做poj的万人之上了虽然题目都是靠着他人的思路写出来的但是代码都是自己一步步敲出来,一步步订正bug来的几乎没有借鉴代码,一般只借鉴思路虽然,自己在算法上,不会有成就的,也不会因此有多牛逼不久后的校赛估计最多还是银奖但是,自己的代码能力确实着实能提升呢尤其是在知道思路的情况下,如何准确地实现代码!加油了!自己!...原创 2016-03-04 20:58:24 · 410 阅读 · 0 评论 -
poj1011——剪枝dfs搜索题
题意:有好多根短棍他们可以组合成n个长度相同的长棍求长棍的最短值粗略参考了网上的1个剪枝技巧:排序,舍弃 之前相同长却搜失败的棍子然后开始自己编写发现速度超时, 对着数字推演半天,最终发现len=0,也就是搜新棍子,但是往下搜却失败,那么这根棍子将不存在,这是不可能的,所以直接要直接跳回上级明天开始回顾图论,看看华为的那个参赛题到底难不难#include<stdio.h>#inclu...原创 2016-03-04 20:37:40 · 283 阅读 · 0 评论 -
poj1010——dfs搜索题
又一次回顾了DFS的写法,感觉不错在这里讲一下题意,免得以后自己再看时看不懂题目- -有多种邮票,每种邮票有自己的价格,不同种的邮票价格可以一样有多位顾客,每个顾客要在店里消费x元的邮票计算每个顾客买邮票的最佳组合最佳要求:优先选种类最多组合否则,优先数量最少的组合否则,优先选“ 组合中面值最大邮票 ” 最大的组合#include<stdio.h>#include<string...原创 2016-03-03 20:23:37 · 322 阅读 · 0 评论 -
poj1005--小学图形题
题意:从原点开始,每年按半圆的形状,腐蚀50平方米,,也就是始终是1个半圆形状,然后按一定的面积增长算法公式: S=PI*R*R/2 -PI*r*r/2如果x*x+y*y<=R*R,那么被包含#include<stdio.h>#include<string.h>#define PI 3.1415926void main(){ int n,m,t;...原创 2016-02-27 20:26:11 · 329 阅读 · 0 评论 -
poj3687~拓扑排序(附上拓扑排序详解)
题意非常坑爹,很多陷阱也很坑爹,要不是有Disscuss帮忙早就gg了。题意:给定N个球,这些球的编号分别是1-N中的某个数字,它们的重量也分别是1-N中的某个数字,任意两个球的编号和重量不相等。给定一些类似a<b的约束,表示编号为a的球比编号为b的球轻。要求符合约束条件的各个球的重量。若答案有多种,则输出的答案必须让编号为1的球重量尽量轻,接着是编号为2的球重量尽量轻,一直到编号为N的球尽...原创 2014-08-31 16:52:44 · 2320 阅读 · 0 评论 -
poj1068~小水题
刚开始读题读不懂啊,直接看了小优大神的解释:对于给出的原括号串,存在两种数字密码串:1.p序列:当出现匹配括号对时,从该括号对的右括号开始往左数,直到最前面的左括号数,就是pi的值。2.w序列:当出现匹配括号对时,包含在该括号对中的所有右括号数(包括该括号对),就是wi的值。题目的要求:对给出的p数字串,求出对应的s串。既然是括号匹配,我就习惯地用栈了,1A方法:输入qi然后进栈q[i]-q[i-...原创 2014-08-29 19:52:28 · 370 阅读 · 0 评论 -
poj2488~dfs基础题
考虑到要做智能小车,所以打算好好练练搜索题,依旧是从简单的开始,简单的也搞了好久,因为数组各种开小,苦逼,这题是dfs水题,也没什么技巧可言题意:给出棋盘的大小, 求这个马子能否走遍所有格子 这里注意几个问题: 1、国际象棋,横着是字母,竖着是数字。 2、是按字典序输出的,所以搜索方向上一定要注意!这里是个坑。 3、忽略“The knight can start and end on any s...原创 2014-08-22 11:54:50 · 717 阅读 · 0 评论 -
poj1032~沉寂后回归的第一道水题
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">放弃了ACM,不再思考这个决定的正确与否,自己可能确实不适合竞赛,但是适合学习。</span>所以继续坚持poj刷题的快感,而不是面对竞赛题目的无助。题意:输入一个整数,把这个整数拆成多...原创 2014-08-21 12:48:55 · 600 阅读 · 0 评论 -
poj2418~Hardwood Species~二叉排序树
二叉排序树的概念很简单,就是对于树里的每个节点。它的左孩子总是比它小,它的右孩子总是比它大。这样子从根节点开始寻找某个节点时就非常简单,如果比根节点大就去右子树找,比根节点小就去左子树找。若要从小到大输出节点,那么就是一个中序遍历的过程 对于这题,输入时是无序输入,但是输出却需要按字典序输出,如果用sort会非常费时,这时候二叉排序树的优点就特别明显了#include<iostream>...原创 2014-08-07 18:26:32 · 414 阅读 · 0 评论 -
2014-7-23 栈训练总结
训了一天,写了一道栈的基础题加3道单调栈,算是对栈的类型搞明白了。如果碰到区间题,而且结果由区间+区间中的某个东西决定,那么就要想到单调栈,将不适合的东西提前挤出去并计算、...原创 2014-07-23 22:21:29 · 343 阅读 · 0 评论 -
poj2082----Terrible Sets(处女座单调栈求区间问题)
题意:处女座的出题人!!!太禽兽的,题意简单的一道题给他出成这样。给你几个紧贴着的矩形,高度宽度各不相同,但是边上是紧贴着的,底边在同一水平线上,于是可以看成是一个有凹有凸的图形,问在这个图形里找一个面积最大的矩形。思路:单调栈求区间,做这提前最好做一下poj2796。#include<iostream>#include<string>#define M 50050u...原创 2014-07-23 21:55:13 · 416 阅读 · 0 评论 -
poj2796--Feel Good(单调栈求区间问题)
题意:区间内数的总和 乘上 区间内的最小值 为心情值,求心情值的最大值思路:虽然知道是单调栈但是想了好久都没想出来怎么用到单调栈,后来终于给我推出来了,我用图解的形式一步步告诉你讲解之前先放上单调栈的概念,已经知道的可以忽略~单调栈指栈中的元素从上往下看都是按一定的大小排下来的。所以一个元素进栈时要先让一些元素出栈才能再进站。这里我用单调递增栈做个例子,即从栈顶往下看是越来越大的。有一群数字2,9...原创 2014-07-23 18:59:52 · 818 阅读 · 2 评论 -
poj3250-Bad Hair Day(单调栈)
题意:一群不同身高的牛按相同站向站成一排,每头牛只能看见前方比他矮的牛的发型(牛也有发型啊- -),同时可能会被高的牛给遮住。问每头牛能看见的发型数量相加起来的总和。思路:看了discuss都说是单调栈,先讲下单调栈的概念单调栈指栈中的元素从上往下看都是按大小排下来的。所以一个元素进栈时要先让一些元素出栈才能再进站。这里我用单调递增栈做个例子,即从栈顶往下看是越来越大的。有一群数字2,9,4,7,...原创 2014-07-23 15:03:48 · 575 阅读 · 0 评论 -
poj1363——Rails(简单栈结构)
题意:有n辆车在右边的铁轨上,中间有一短竖着的过渡的铁轨,他们都要开到左边的铁轨上,不能来回开,进中间铁轨后只能选择停留或者开到左边铁轨。右边铁轨的车的排列顺序都为1,2……n,给你左边的铁轨的排列顺序,问你有没有可能出现左边的情况思路:运用栈的结构写。第一段代码是用stl写的,第二段是手写的#include<iostream>#include<string>#incl...原创 2014-07-23 12:04:03 · 835 阅读 · 0 评论 -
poj1013-Counterfeit Dollar(简单逻辑题)
题意:有12枚硬币,其中有一枚假币,假币可以轻也可能重,试着通过3次称量找出那枚假币并说明它是重的还是轻的思路:算是水题吧,通过对一些小例子进行简单的逻辑推理,AB DE upAC FE upBE HJ even可以得到4点结论:(这里可知A是重的假硬币)1.如果左右两边是even的,说明左右两边的硬币肯定都是真的。所以BEHJ的嫌疑都排除了2.含有A的那一边总是重3.B,C和A放在一起时也会显示...原创 2014-07-23 10:22:19 · 437 阅读 · 0 评论 -
poj3623(暴力枚举+贪心)
题意:给一个字符串,让你每次从头和尾选一个字符到新字符串,使得最后选得的字符串在字典序最小。注意输出格式,每80个换行,除非最后一个已经是换行否则不换行思路:这题据说是用后缀数组写的,等我学到了再做一遍~我看到的第一个思路就是枚举同时包含点贪心的思想。枚举即按照顺序一个个选字符进新字符串贪心即肯定选择两边最小的字母,因为按照字典序的话是成立的。枚举中要处理的一些细节,例如CCBDCC和CCBCC,...原创 2014-07-22 22:41:03 · 779 阅读 · 0 评论 -
poj2965(dfs暴力枚举)
题意:一个4*4的矩阵,只有+和-,每当对一个格子进行一次“改变”时,都会同时改变那一行和那一列的正负。问最少改变几次能变成全是-的矩阵,并给出改变的过程。思路:和poj1753一样的思路,只要记住翻转顺序不影响结果,翻转2次和翻转0次是一样的,翻转3次和翻转1次是一样的,故问题就变成十六个格子里选几个格子进行改变。 #include<iostream>#include<str...原创 2014-07-22 19:48:01 · 595 阅读 · 0 评论 -
poj1753(dfs暴力枚举)
题意:有4*4的正方形,每个格子要么是黑色,要么是白色,当把一个格子的颜色改变(黑->白或者白->黑)时,其周围上下左右(如果存在的话)的格子的颜色也被反转,问至少反转几次可以使4*4的正方形变为纯白或者纯黑?思路:做这道题,首先要自己试试几个例子,然后提炼2个要点:1.对同一个格子翻2次和翻0次的效果是一样的,同理翻3次和翻0次的效果也是一样的2.对于2个格子,他们翻的顺序不影响结果...原创 2014-07-22 13:33:04 · 899 阅读 · 0 评论 -
poj3094(字符串基础)
题意就是读入一个字符串,A代表1,Z代表26,除了空格外,sum等于下标*字母数值之和,下标从1开始。例如AAB=1*1+2*1+3*2;这题是大水题而已,需要注意的是空格是可以被读入的,故要用gets( )函数,还有strcmp()==0才是两字符串相等,这种基础知识我都忘了,惭愧惭愧#include<iostream>#include<string> usin...原创 2014-07-21 10:39:33 · 499 阅读 · 0 评论