Rank | Solved | A | B | C | D | E | F | G | H | I | J | K | L | M |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
11/115 | 11/13 | O | O | . | O | . | O | O | O | O | O | O | O | O |
O
: 当场通过
Ø
: 赛后通过
.
: 尚未通过
A Artwork
solved by viscaria
viscaria’s solution
B Buffoon
solved by viscaria
viscaria’s solution
水题
C Crossings With Danger
D Denouncing Mafia
E Exhibition of Clownfish
F Forests in Danger
solved by feynman1999
feynman1999’s solution:
显然二分河流的半径即可。二分后先将所有河流对应的矩形和大矩形求交:
求两个矩形交方法:
struct rect{
int x1,y1,x2,y2;
}Country;
rect rect_ins(const rect &A, const rect &B)
{
int m1,m2,n1,n2;
m1=min(max(A.x1,A.x2),max(B.x1,B.x2));
n1=min(max(A.y1,A.y2),max(B.y1,B.y2));
m2=max(min(A.x1,A.x2),min(B.x1,B.x2));
n2=max(min(A.y1,A.y2),min(B.y1,B.y2));
assert(m1>m2 && n1>n2);
rect tmp;
tmp.x1 = m2;
tmp.x2 = m1;
tmp.y1 = n2;
tmp.y2 = n1;
return tmp;
}
然后将所有的矩形求并即可。 线段树。
时间复杂度