![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
poj
文章平均质量分 76
atupal
pythoneralgorithmer
展开
-
poj1012约瑟夫问题
推出递推公式 f = (f + m - 1) % (2 * k - i);若超时,需打表;# include # include # include # include int s[33];int out(int m, int k) { int point = -1; int t = m; int tmp = k; while (k --) { m = t;原创 2012-08-29 11:15:30 · 689 阅读 · 0 评论 -
poj 1010邮票
我用的是搜索,后来百度了一下,大概有3种做法,一直接搜索,二,用递归深搜,三,动态规划(http://blog.csdn.net/cugbliang/article/details/2742242)一开始wa,是因为漏了这种情况 7 4 0 1 0,我的输出为1(0):2,1(0):2,应该为1 --- none ,太粗心了,稍稍改动之后AC描述Have you done原创 2012-08-28 19:02:46 · 999 阅读 · 1 评论 -
poj1023:The Fun Number System有趣的进制系统
题意:给你一个二进制系统,每个位都有一个权重,但是可能为负,由字串ppnppn。。。给出,p代表为正,否则为负,然后给你一个数n(在long long范围内),求此数在这个有趣的进制系统下的表示。我的思路是这样的:从低位开始根据pn序列那么可以确定从最低位到当前位所能表示的数字范围,用两个数组存起来,由于字串可能达到64,所以第64位另外存起来。然后从高位开始判断,如果使用当前位可以使原创 2012-09-06 09:16:21 · 954 阅读 · 0 评论 -
poj1022:Packing Unit 4D Cubes四维魔方的题意和题解
囧,题意看起来 很复杂,故几乎没什么人提交,其实只要看懂了题目的意思再简单不过了,,,这不,因为英语不好花了很久才看懂题意,稍微解释一下吧:定义一个四维的魔方,每个四维的魔方有八个面(类比3维的魔方有六个面),每个面是一个3维的东西(类比3维的魔方的每个面是2维的平面)。然后要把n个四维的魔方包装起来,因为是四维的,所以有四根坐标轴,每个魔方给出9个数据,第一个是此魔方的标识,然后1,2个原创 2012-09-05 13:15:51 · 1530 阅读 · 1 评论 -
poj1009图像边缘检测
从第一个点开始,依次算出与当前点的边缘差值相同的点的个数,如果某个重复次数大于 w * 5那么一定会有一连续的整行为0的输出。故此处可特判一下。然后在输出的过程中注意如果可以和前面的合并的就合并。判断的话主要判断某点正上方和正下方的点所能够达到最远的距离(即像素发生变化的地方)。超过了本行时变设为w;最后去3列的最小值。行数为当前点的行。具体见代码。原创 2012-08-27 00:53:10 · 1359 阅读 · 0 评论 -
poj1021棋盘同构问题
算模拟题吧,先把两个图的所有连通分量计算出来,然后再一一配对,有一个配对不成功便返回false,配对的过程中可旋转90,180,270,360度以及上下翻折,左右翻折。(开始没考虑翻折,导致wa了一次,调试时才发现,然后就一次AC了,数据太弱,骗分都可以过。。。)包括调试代码总共200+行代码。第一次刷题写这么读代码阿。。汗~AC代码(由于数据很弱故没优化,时间有点长。。。。。。囧):原创 2012-09-03 18:07:35 · 1341 阅读 · 0 评论 -
poj1018computing system
用的暴搜,枚举每一个可能的带宽,维护一个最大的b/p,即答案;google了下,还有其他思想,对带宽排序:离散化思想,枚举从最小带宽(每一行的最小值中的最小值)到最大带宽(每一行的最大值中的最小值)之间的值:贪心思想b/p是一个关于b的单峰函数:3分思想。(用这个在加上二分查找和快排优化的话应该可以0msAC,以后回过头再重做吧,先留着,太菜了。)我的AC代码:#原创 2012-08-31 17:29:01 · 629 阅读 · 0 评论 -
poj1020分蛋糕(用一堆小正方形拼成一个大正方形)
搞了一天了,没搞出来。看了poj上bbs的神代码总算AC了;基本思路:用一个数组储存每一列(单位为一,range:1 to cakeSize)的“高度”(即row向下延伸的地方),然后从row最短的地方开始放正方形(从10到1枚举,若放入之后不会超出CakeSize则进行深搜),然后计算能不能放下此正方形。若放不下,continue循环枚举下一个,若可以放下,深搜之,若得,返回true,否则继原创 2012-09-02 03:54:11 · 2381 阅读 · 2 评论 -
poj1017Number Sequence
你妹,你妹,你妹,看起来很容易。其实容易理解错题意,特别是给出的两个样例更容易让人误解题意。。。好了,其实核心算法就是计算从1到 i 这 i 个数字序列中的数字个数。然后就很简单了;我的AC代码:# include # include # include # include # define INF 2147483647# define DEBUGlong lon原创 2012-08-31 19:33:12 · 788 阅读 · 0 评论 -
poj1017装箱问题
用的纯模拟;;听说有数学解法,稍候google一下:#include using namespace std; /*装有3*3 的箱子可放2*2的包数 当放1个3*3可以放5个2*2 2个可放3个2*2*/int cc[4] = {0, 5, 3, 1};int a, b, c, d, e, f;int num; int main(){ while (scanf(原创 2012-08-30 23:25:31 · 903 阅读 · 0 评论 -
poj1016:Numbers That Count
模拟题一些测试数据:22 is self-inventorying31123314 is self-inventorying314213241519 enters an inventory loop of length 221221314 is self-inventorying after 2 steps111222234459 enters an inventory loo原创 2012-08-30 20:40:47 · 668 阅读 · 0 评论 -
poj1014:Dividing
可以转化为背包问题,即用一个容量为总数的一半去装,如果能装满即可以公平分配;如果不能就不不存在公平分配的方案;根据题意这是一个多重背包,开始是根据01背包写的。。。不管怎么优化都超时。然后查了下背包问题的资料(http://love-oriented.com/pack/P03.html),顿悟。。。 对于每种物品,每次去1,2,4,8,16.。。。。。件物品。。code如下:# i原创 2012-08-29 19:29:07 · 620 阅读 · 0 评论 -
POJ 1011: Sticks
# include # include # include # include int first (int A[], int B[], int size) { for (int i = 1; i <= size; ++ i) { if (B[i] == 0) { B[i] = 1; return i; } } return 0;}int find (in原创 2012-08-21 03:15:41 · 521 阅读 · 0 评论 -
poj1024:Tester Program给出最短路径求对应迷宫
题意大概如下:給出最短路径,要求一个迷宫,使得该迷宫的唯一最短路径即为此路径,且迷宫中的每一堵墙都不能多余。然后给出一种方案,要你判断此方案是否正确。我的算法是:先bfs得出一条最短路径和最短路径的总数,若大于1或者跟输入的最短路径不同均不可以。然后计算对于每一个墙,如果可以通过该墙的话最短路径是多少。如果有算出大于输入的最短路径的(也即是该墙多余),也不可以。算法完毕;AC代码如下:原创 2012-09-07 17:23:47 · 1553 阅读 · 1 评论