亚洲区域赛(南京)
A: Ah, It's Yesterday Once More
打表题,我也不知道为什么
B:Baby's First Suffix Array Problem
神题
C:Certain Scientific Railgun
神题
D:Degree of Spanning Tree
给出一个图,求一棵生成树,它的所有节点的度数不超过 n/2。
这里有一个结论是:对于一棵树,最多只有一个节点的度数超过n/2。假设树有n个点,则有n-1条边,总度数是2*(n-1)。如果有两个节点的度数超过n/2,其他节点的度数为1,那么总度数则>n+(n-2)=2*(n-1)。
因此没有度数大于n/2时直接输出生成树
否则,取度数大于n/2的节点为根,尝试使用非树上的边替换与根相连的边。
得出的生成树与根断开,形成独自的块(并查集维护)。然后枚举非树上的边且不与根连接的边,重新生成新的树。当使用边时,根的度数和对应的块减1,边的两个节点度数对应加1.如果加上后大于n/2,则需要回退。
if(f(u)!= f(v)) {
d[u]++;
d[v]++;
int iny = ft[f(v)]; //和根连接的点
d[idx]--;
d[iny]--;
if(d[u]>n/2 || d[v]>n/2){ //加上非树边后,度数超过n/2
d[idx]++;
d[iny]++;
d[u]--;
d[v]--;
continue;
}
vis[iny]=1;
e[i].ok =1;
e[i^1].ok=1;
fa[f(v)] = f(u);
}
E: Evil Coordinate
给出一个UDLR字符串表示机器人的动作序列。机器人一开始在(0,0), 有一个炸弹在(mx,my)。问是否存在一个字符串的排列使得机器人根据这个排列去走不会经过(mx,my)。
字符串的终点是固定的,如果起点或者终点在(mx,my),则无解。将上下左右合并,然后枚举走的顺序,如果合法则输出
F: Fireworks
制作花火,每制作k次则需要m分钟去点亮。每制作一次需要n分钟,花火被点亮的概率是p。制作完k个花火后,如果有花火被点亮后则停止,否则继续。
k次花火有一支被点亮的概率为q=1-(1-p)^k.则被点亮的期望次数是1/q. 总时间是k*n+m。
求k使得值最小。3分求极值
G: Go
神题
H: Harmonious Rectangle
给出一个n,m的矩阵,里面填1,2,3。求有多少种填法