上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 21 下一页
摘要: 给一个地图,其中有障碍物,开始人在起点的面对方向任意,求从起点到终点最少转几次弯。f[pos,x,y]表示人在(x,y)位置,面向方向pos时的最小步数,用BFS或SPFA即可。View Code 1 program lphone(input,output); 2 type 3 node = record 4 xx,yy,pos : integer; 5 end; 6 var 7 d : array[1..4,0..101,0..101] of longint; 8 v ... 阅读全文
posted @ 2012-03-18 15:08 Codinginging 阅读(565) 评论(0) 推荐(0) 编辑
摘要: 很老的一道树DP,用树形DP的模型做,今天再写的时候居然沙茶的在计算过某状态后又重新计算,DP退化成了搜索,无奈。转成二叉树后枚举左右子树分配的资源量即可。View Code 1 program ctsc(input,output); 2 var 3 n,m : longint; 4 w,v : array[0..601] of longint; 5 left,right : array[0..601] of longint; 6 f : array[-100..601,-100..601] of longint;... 阅读全文
posted @ 2012-03-18 14:12 Codinginging 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 就是求个逆序对,基础编程能力还是要有的,交这个题时很囧。PKU也有不给力的时候啊!View Code 1 program merge_sort(input,output); 2 var 3 a,x : array[0..2000] of longint; 4 n,answer : longint; 5 cases,v : longint; 6 procedure init; 7 var 8 i : longint; 9 begin10 read(n);11 for i:=1 to n do12 read(x[i]);13 ... 阅读全文
posted @ 2012-03-17 11:57 Codinginging 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 求一个图的最小生成树,其中某些边不收费(可以这样理解)。这次用kruscal打的,对于不收费的边先全部加入,再维护即可。View Code 1 program pku2421(input,output); 2 var 3 father : array[0..200] of longint; 4 f : array[0..200,0..200] of longint; 5 x,y,w : array[0..40000] of longint; 6 n,m,q,answer : longint; 7 procedure ini... 阅读全文
posted @ 2012-03-17 11:15 Codinginging 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 给定一个序列,每次可取出一段任意长度的序列插到某个位置,问至少多少次操作能让序列变为1.2.3.4......n。如果步数超过4,输出“5 or more”可以用双向BFS,但编程复杂度较高,用迭代加深就需要动一点脑筋想强剪枝。题目的最终状态是1 2 3 4 5 6 7 8,则严格递增序列为1。所谓严格递增即是说1 2 3 4 5 6,这些,而2 5,2 4 6,这种只能称之为递增,那么1 2 5 6 3 4 7 8的严格递增序列有4个,而每次操作最多一次减少3个非严格递增序列,所以有这个剪枝:if 当前递增序列个数-3*(最大深度-当前深度)>=0 then exit加入这个剪枝不一定 阅读全文
posted @ 2012-03-17 10:49 Codinginging 阅读(266) 评论(0) 推荐(1) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 21 下一页