- 博客(16)
- 收藏
- 关注
原创 POJ 1014 Dividing
一道dp题,常用算法是多重背包 降低时间复杂度的主要方法有: 1.利用二进制优化转换为01背包问题 2.POJ的discussion中提出的取模优化方法 这两种算法网上有很详细的总结,不多说 多重背包+二进制优化+取模优化 现在我要讨论的是,这题真的是一道背包问题吗? 我们都知道,背包问题中每个物品是有两个属性的,重量和价值,但是本题中的物品有且只有一个属性, 如果我们强行使重
2016-02-21 10:05:08
411
原创 POJ 1013 Counterfeit Dollar
一道很有意思的题,乍一看非常复杂 但题中给出了许多约束条件,使求解这个问题变得简单了。 解题思路比较清楚,就是用排除的方法, 把可以确定为真的硬币排除掉,剩余的硬币就为假了。 那么哪些情况可以确定为真呢? 1.出现在一次平衡中的所有硬币一定为真 2.在某次不平衡中没出现的硬币一定为真 3.在一轻一重两端均出现过的硬币一定为真 这些条件,是我们手动观察时常采用的判断准则,我们只要用程
2016-02-20 22:37:15
372
原创 POJ 1012 Joseph
一道长得像约瑟夫环的非约瑟夫环问题。 从思路上来讲的话应该算道模拟题。 注意到环中的好人始终占据1~n这n个位置, 而坏人可以不区分顺序,因为不论本轮死去谁,剩下的环中,好人与坏人排列是一样的。 因此,每轮排除一个人后,我们可以对环中人员从新编号,比如: 在圆环 0,1,2……n,n+1……m-1,m,m+1……n*2-i (i为第i轮)中,第i轮排除m号, 则重新编号后新的环为 0,
2016-02-20 20:17:49
358
原创 POJ 1011 Sticks
过完年我又回来啦!!! 发现自己果然有点颓废,过年才写了3题,要更努力才行啊!!! 恩,现在补上。 虽然网上都说这是一道弱题,我表示自己WA和TLE了无数回才过的。 一开始想的是用贪心算法做,优先放下长的木棒,木棒放到能放下它的剩余长度最短的那一行 现在想来,这不就是内存分配算法里的最佳适应算法吗? 毫无疑问,我WA了,内存分配算法本身就存在碎片的问题 不过话说回来,贪心真的很好写啊
2016-02-20 16:54:24
393
原创 POJ 1010 STAMPS
严格意义上说,这是一道搜索题。 是的,这真的是一道不带一点遮掩的“暴!力!搜!索!” 我居然没看出来,最后是用DP做完的。。。 转移方程参考的背包问题, 我用了一个二维数组solution[i][j] 记录用 i 张邮票组合成 j 需求的最优组合情况。 转移方程为 solution[i][j]=best(solution[i-k][j-stamp[x]*k]) 时间复杂度估算为O(
2016-02-02 17:58:22
439
原创 POJ 1009 Edge Detection
这题算法是求度娘的,自己没做出来。 先是TLE,然后WA了一上午,到最后也没完全明白这题算法是什么原理。 我最开始的做法是利用找到同一种像素的上下边界,他们中间夹着的绝对值一定是0 。像下面画的那样: x x x x x x 0 0 0 0 0 x x x x x x 恩,大概
2016-02-01 23:59:15
467
原创 POJ 1008 Maya Calendar
这题乍一看好像很麻烦的样子,请原谅我的英语。 花了很久看完题才知道,他让我把一个日期表示转成另一个日期表示。 然后。。。 //PKU_1008 //读入题,注意把'.'读走 #include #include using namespace std; string HaabMonth[19]={"pop","no","zip","zotz","tzec","xul","yoxkin
2016-02-01 23:57:50
432
原创 POJ 1007 DNA Sorting
名字很高大上,题目也太没诚意了吧! 数据有点弱,对排序完全不挑剔,随便写吧。 算法吗,求逆序数,排序,输出,编不下去了。 //PKU_1007 //弱鸡题,无分类 #include using namespace std; int trans(char ch) { if (ch=='A') return 0; else if (ch=='C') return 1; els
2016-02-01 23:44:55
337
原创 POJ 1006 Biorhythms
一道纯数学问题,难度和代码无关。简单说说: 设所求时间为x,则有x=x1*23+p=x2*28+e=x3*33+i。 写成同余式即为: x % 23 = p x % 28 = e x % 33 = i 然后你可以百度“中国剩余定理” 我为什么不贴连接?骚年,你没等过几个小时的审查吧。 想当初,年轻的我以前居然往博文里放超链接,唉! //PKU_1006 /
2016-02-01 20:27:14
456
原创 POJ 1005 I Think I Need a Houseboat
我感觉智商被调戏了,连着3道都是这。。。 已经不知道说什么好了,如果对于算法有疑问,请找体育老师。 //PKU_1005 //弱鸡题,纯数学问题 #include using namespace std; int main(){ int i,n; double s,x,y; cin>>n; for (i=0;i<n;i++) { cin>>x>>y; s=(x*x+y*y
2016-02-01 20:16:59
343
原创 POJ 1004 Financial Management
一道充满了挑战的题! 我可怜的英语水平啊,读题的时间竟远大于撸代码的时间。 对不起啊,英语老师,我给祖国蒙羞了。 要我说这题和A+B Problem有什么区别的话。。。 看见那美丽的格式设置了么,恩,就是他了。 //PKU_1004 //输入输出题 #include #include using namespace std; int main(){ int i=0
2016-02-01 20:13:43
377
原创 POJ 1003 Hangover
这是一道非常,非常,非常,非常水的题目,在输出后加上一个字符串算是考点吗? 但是!他非常,非常,非常,非常有意义,他让我学会了打表这一神技。 其实,以上说的都是废话,只是觉得干贴代码好丑啊。 打表的代码就不贴上来了,有兴趣的自己去写,这绝度不是我教的。 //PKU_1003 //简单题,差分查找不小于x的最小卡牌数 #include using namespace std; int
2016-02-01 20:08:52
355
原创 POJ 1002 487-3279
刚看完这道题,我的第一反应是用散列表。对每行输入求标准格式,用后4位做为hash值,前3位最为特征值,用链表的方式处理冲突。 但写到一半,感觉自己2了。考虑最坏情况,先读入1000个有相同hash值,不同特征值的号码,然后重复最后一个数。 此时散列的时间会用到100000*1000,目测TLE。需要用6位做为hash值,1位做为特征值才能做到10^6的时间复杂度,还可能MLE。 又注意到总共
2016-02-01 19:30:55
371
原创 POJ 1001 Exponentiation
这题算是一道入门模拟题吧,要自己手写高精度浮点数,对输出格式还有一定的要求,还要写一个阶乘函数,要求有点多啊~ 其实,你看她第一眼——你已经知道算法了吧!一个高精度整数加上单独的浮点处理加上二分法求阶乘加上格式化输出,总的来说 都是靠我们耐心的吧!感觉手不是自己的了。废话不多说,上代码 //PKU_1001 //高精度浮点数类及其乘法运算 #include using namespace
2016-02-01 19:15:01
347
原创 POJ 1000 A+B Problem
我也不知道写这篇博客有什么意义,纯粹是为了保持队形啊! 以下全是废话! #include using namespace std; int main() { int a,b; cin >> a >> b; cout << a+b << endl; return 0; } 不走寻常路的小伙伴可以看看闲的蛋疼的人眼中的世界 废话这么
2016-02-01 19:08:37
372
原创 一个弱鸡的刷题之路
做为一个颓废了整个大学的程序猿,励志实现由弱鸡向大牛的进化,决心开始刷题,恩,就从POJ开始吧。 /**************************************************我是美丽的分割线*************************************************/ 以下是对我做过的题的简单归类,方便以后查看。 放松题——恩,
2016-02-01 19:06:25
406
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人