POJ 1477 Box of Bricks C++版
题目链接:http://poj.org/problem?id=1477
题目给出一些高度的木箱,问至少移动多少步,可以移动到同以高度!水题,没什么好说的!
代码如下:
1 | /*Problem: 1477 User: awq123 |
题目链接:http://poj.org/problem?id=1477
题目给出一些高度的木箱,问至少移动多少步,可以移动到同以高度!水题,没什么好说的!
代码如下:
1 | /*Problem: 1477 User: awq123 |
题目链接:http://poj.org/problem?id=1363
题目先开始没有读清楚,结果思路一直是错的,解释下题意,一列顺序为1,2,3。。的列车通过一个中转站后是否能变为给出的序列,其中这个站,类似于那个栈,利用他暂时保留车辆,以调整顺序,比如
3辆车想变为1,3,2,那么2号进站,等三号出来后在从站里出来跟在3后面
天然的栈运用,我们用stack模拟中转站中存的车辆
依次比较出来的序列是否和进站的一样或者于栈顶的一样,否则将这车推入栈,等待后面的判断,最后要是可以的话,栈里的元素应该全部推出!我用i计数进站的车,用k计数出站的出车,模拟这样的中转。
代码如下:
1 | /*Problem: 1363 User: awq123 |
题目链接:http://poj.org/problem?id=1251
第一个自己做的最小生成树的题,利用的prim算法,虽然其中编写时调试还是参考了一些文章,不过对prim算法有了一些了解
题意,就是求给出数据的最小生成树。
prim简单的来说就是每次加上与已选择点相连的最短线。利用了贪心的思路。具体见注释!
代码如下:
1 | /*Problem: 1251 User: awq123 |
题目链接:http://poj.org/problem?id=1321
题目不解释了,看不懂就没办法了!
我没有用数组储存数据,而是依次用结构体保存每个位置的坐标,因为按顺序输入的,我就没排序了,接下来的就是DFS+回溯,在这些点里取出k个点,且要满足不在同一列上。我利用两个数组来指示行和列是否已被占用,具体见注释把!
PS:这题可以剪枝到0MS,不过可能测试数据松点,暴力DFS就行了!
代码如下:
1 | /*Problem: 1321 User: awq123 |
题目链接:http://poj.org/problem?id=1159
题目问,在一个字符串里至少加几个字母能组成回文词,所谓回文词,就是反着读和正着一样的字符串,以输入例子来看
Ab3bd
可以变成
Adb3bdA
也可以变成
dAb3bAd
虽然答案不唯一,但是增加的数量是有限的。
我们利用DP解这题,具体思路是,由字符串两端开始比较,若两格字母相同,那么同时去掉这两个的话,答案是不变的,若不同,就由两种情况,分别是在左边加上右边的字母,或者在右边加上左边的字母,我们取两中情况的最小值,然后递归调用下去,用dp[i][j]表示左边第i个开始,和右边第j个开始的最小数量
DP思路简化为:
1 | if(str[i]==str[j]) |
代码如下:
1 | /*Problem: 1159 User: awq123 |
不短的暑假过去了,过的蛮充实的,虽然没有像预想的那样去打工,自己仍然学会了一些东西,今天老段大电话给我,的确让我很是惊讶,不过想来看看,也知道他担心什么,高中3年,辛苦他照顾我们这个班级,虽然他已经做得很好,我们班也考得全校最好,他仍然感觉对几个人抱歉,呵呵,其中就有我,说实话他说着我感触很深,高中是个不错的过程,尽管他得变化没有在他意料之中,不过余璇后来的加入还是带给我了一些,嘿嘿,老师不用抱歉什么,每个人有每个人的路,超过余璇,詹彬齐,不是能跟你保证的事 ,他们有他们有他们的发展,凭什么说自己比别人强。
回忆起,军训到毕业的每个细节,我很庆幸呆在五班,没有哪个班有这样的氛围,给一个紧张的高三一个快乐的结局。
说起小黄洁,其实我都忍不住告诉您他谈朋友了,你爷不必为那些事担心,她会幸福的,至少现在很快乐!
其实说起回忆,还是想起了小K,没办法忘记她给我的改变,不过她很快乐现在,也就够了,有机会再去找她玩吧,嘿嘿。
大二了,我想大,不想二,自由的时间该变变了,我也改稍微认真点了,虽然比我的计划早点,不过不影响。
加油了Jove Sky
题目链接:http://poj.org/problem?id=1961
解释下题意,先输入字符串得长度,和字符串,然后输出所有前n位重复得情况例如输入例子
字符串为aabaabaabaab
前2位也就是aa是a重复2次
前6位也就是aabaab是aab重复2次
前9位也就是aabaabaab是aab重复3次
前12位也就是aabaabaabaab是aab重复4次
利用KMP算法,匹配最长重复子串,然后针对每个长度找出符合条件得情况
代码如下:
1 | /*Problem: 1961 User: awq123 |
题目链接:http://poj.org/problem?id=1884
题意是,给出一个数,求出最小的n,使得1,2,3…n中间加上+或-得到这个数
我们一直由1开始加,知道sum>=这个数,如果等于就直接输出,如果大于,再判断sum-这个数是否为奇数,若为奇数,则变化任何一个+为-变化量为偶数,无论怎么样都无法实现,直接n++,若为偶数,变化其中一个,变化量为偶数,可以实现。
代码如下:
1 | /*Problem: 1844 User: awq123 |
题目链接:http://poj.org/problem?id=1338
求第n个,因式只有2,3,5的树,打表做最好了,算法借鉴别人的,设d[]数组保存这个数列,这样,可以设三个指针p2,p3,p5,分别指向数列中的三个数(可以相同),取d[p2]*2,d[p3]*3,d[p5]*5中的最小者作为下一个数,并将该所对应的指标加1。不断重重该过程,直到求出第N个数为止。
代码如下:
1 | /*Problem: 1338 User: awq123 |
题目链接:http://poj.org/problem?id=3507
简单题,六个分数去掉一个最高分,去掉一个最低分,然后取平均值,然而这题的难点在于输出要求:
(without unnecessary decimal points and/or zeros.)
也就是输出浮点数,但不输出多余的0,其实要是用printf输出,我觉得很麻烦,还要判断这那的,不过C++中cout对浮点的输出会自动优化这些,嘿嘿,又偷懒了!
代码如下:
1 | /*Problem: 3507 User: awq123 |