摘要:
http://poj.org/problem?id=3517 方法:具体参见3750 假设此环为以m+1起始,m-1终止的n-1环,且m+1--->1,求得此环最后出队的编号 再将此编号转换成原n环的编号 注意: 此题m为起始点,k为步长。且首先出队编号m,再以步长k循环 Description Let’s play a stone removing g... 阅读全文
摘要:
http://poj.org/problem?id=3414 方法: 该题简化之后即为求从初始状态(0,0)到终止状态(i,C)或(C,j)的最短路径 对于每个状态(i,j)存在由6种操作得到的6个邻接状态,即为图中的邻接节点 将每种操作和得到的节点状态对应上以便打印路径,即pathArr[6]和adjVertex[6] Description ... 阅读全文
摘要:
http://poj.org/problem?id=3321 方法: 该题要经常查询数值总是变化的区间和。 如果采取常规做法求得积累数组c[N],那么当a[i]改变时,同时需要改变c[i...N],使得每次调整都会很慢,复杂度O(N)。求和复杂度O(1) 树状数组BIT形状很像二项树,适用于对经常改变的数组快速求得区间和。 采用树状数组tree[N]的话,每次调整与求和的复杂度为O... 阅读全文
摘要:
http://poj.org/problem?id=3278 方法: 单源无权图最短距离,即BFS 该问题只需要求得某两点间的最短距离,所以不必求得所有节点的最短距离,一旦处理了目的地点,即可返回结果 Description Farmer John has been informed of the location of a fugitive ... 阅读全文
摘要:
http://poj.org/problem?id=3210 方法: 当n个硬币初始同面,则只能偶次翻转才能保持同面,所以答案肯定是偶数。 n为偶数时,假设1个为正,n-1个为反,两中情况同为奇数,所以只能通过奇数次翻转才能保持同面, 这与上面的情况矛盾,所以n为偶数时无解 n为奇数时,正反的个数必然是一个偶数一个奇数。假设1个为正,n-... 阅读全文
摘要:
http://poj.org/problem?id=3176 方法: DP:将大问题转化为小问题解决。由递归写循环。 c[i][j]表示从a[1][1]开始到a[i][j]的最大和。而最终的结果为c[n][1...n]中的最大值 递归式为: c[1][1] = a[1][1] c[i][j] = max{ c[i-1][j-1], c[i-1][j] } + a[... 阅读全文
摘要:
http://poj.org/problem?id=3126 方法: 先筛出1000~9999的所有素数,对于其中每个素数求得他在图中的邻接点。其邻接点就是所有与其有一位不同的素数。 再用BFS搜索图找到指定源节点和目标节点之间的最短路径。若不联通则输出失败 Description The ministers of the cabinet were quite ... 阅读全文
摘要:
http://poj.org/problem?id=3087 简单的模拟题,模拟洗牌 Description A common pastime for poker players at a poker table is to shuffle stacks of chips. Shuffling chips is performed by sta... 阅读全文
摘要:
http://poj.org/problem?id=3080 方法: 将第一个字符串的所有子串枚举为pattern,匹配其他所有的字符串,找到与所有匹配的最大子串 匹配用KMP,注意到当不同pattern前缀相同时,预处理不必从头做起,因为每个next[i]之于其之前的next有关 Description The Genographic Pro... 阅读全文
摘要:
http://poj.org/problem?id=3070 方法: divide and conquer,类似于求幂 矩阵求幂 复杂度:O(logn) | F(n+1) F(n) | = | 1 1 |^n | F(n) F(n-1) | | 1 0 | 注意: 矩阵... 阅读全文