Europe - Southwestern - 2006/2007 简明解题报告

A:

求N由每堆只能n^3,n*(2n+1)*(n+1)/6,构成的最少堆数,简单DP,先预处理所有结果,再读入一个输出一个,否则要超时.

B:

Undo

C:

并查集合

D:

网络流,对每个航班拆点,拆掉的两点间容量为航班人数,所有航班间满足时间条件和有公共位置连边,容量inf,超级源连起点,容量inf,终点连超级汇,容量inf.

E:

DP,注意数据里有空格,用scanf超时,cinWA,gets才是AC.

F:

对于5,50特判,因为2*5=10,2*50=100,可以枚举哪些人有奇数个5,50,偶数的话等价于没有5,50但是多了一半5的个数的10,50个数的100

G:

BFS

H:

模拟加拓扑排序,注意里面的remove是指把这个vechils彻底拿出矩阵,不是只要不堵住指定列就行,这样好写很多,否则构图都构不来.

你可能感兴趣的:(Europe - Southwestern - 2006/2007 简明解题报告)