摘要:
Problem A 考察地形 题目中所描述的P即指任意两点之间的所有最短路径所覆盖的不同的路的条数,最后要求求P的最大值。 一个比较直接、暴力的想法就是首先用Floyd处理出任意两点i,j间的最短路,然后枚举i、j,每次扫描一遍顶点确定在所有最短路中都有哪些顶点,即对k满足f[i][k]+f[k][j]=f[i][j]。然后凡是最短路上的边,必然是k的集合中的点所连成的边,因此我们再一对一对枚举k集合中的点x、y,并判断两点间的那条路是否在最短路上,即是否满足f[i][x]+g[x][y]+f[y][j]==f[i][j]或者f[i][y]+g[y][x]+f[x][j]==f[i][j].. 阅读全文
摘要:
UVA_10069 这个题目一开始没有头绪,后来看了一下别人的题解顿悟了。 我们不妨设短串是a,长串是b,用数组f[i][j]表示到b的第j位时一共包含了多少个a到第i位的子序列。这样,动态转移方程就是f[i][j]=f[i][j-1];if(a[i]==b[j]) f[i][j]+=f[i-1][j-1];,同时我们需要初始化i=0时f[i][j]的值,即统计一下b中到第j位时出现了多少个a[0]即可。 为了能偷懒,就直接用java的BigInteger去写了。import java.math.BigInteger;import java.util.Scanner;public class. 阅读全文