摘要:
题意抽象出来就是求(cell[i])^k mod m1^m2=0的最小的k值。把m1^m2分解质因数即可,再把每一个细胞数分解,对比其质因子数量,对于某个因子,m1^m2次有而后者没有,那么这种情况一定无解,继续枚举下一个细胞数即可,而两者都有时,就是要最少的后者的因子凑出大于等于后者因子的最小次幂,处理完每一个因子后取因子需要的最大值,用它去更新答案。注意m1=1时的特殊情况。View Code 1 program tyvj1105(input,output); 2 var 3 v : array[2..50000] of boolean; 4 prime... 阅读全文
摘要:
把质因子只有2,3,5的数称为Ugly数,求第k大的Ugly数。(1是第一个)用堆保存数字,开始堆中只有1,每次删除最小值,把最小值的2倍,3倍,5倍插入到堆中,执行k次就得到结果。注意要判重,用个hash就行,有点羡慕C++的map了。View Code 1 program pku1338(input,output); 2 type 3 longint = int64; 4 node = ^link; 5 link = record 6 worth : longint; 7 next : node; ... 阅读全文
摘要:
给一个地图,其中有障碍物,开始人在起点的面对方向任意,求从起点到终点最少转几次弯。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 ... 阅读全文
摘要:
很老的一道树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;... 阅读全文