Tue, 12 Feb 2019 17:38:08 GMT

master
大蒟蒻 7 years ago
parent 42e3fdc2f1
commit ea4d077431

@ -107,3 +107,13 @@ multiset的count好像格外的慢呢。或许是通过`distance(lower_bound,upp
看起来像个什么离散化后最短路一样的东西。实际上map套map就可以了。 看起来像个什么离散化后最短路一样的东西。实际上map套map就可以了。
//(如果强行说正解是树套树会不会显得高级一点?) //(如果强行说正解是树套树会不会显得高级一点?)
### W - Glass Carving
跟上面那个U差不多只是xy轴要分开维护。
正版题解上还有一种线性时间复杂度的离线算法,把正序切割改成倒序合并即可。
### End
那么这一堆内容就结束了。

@ -4,5 +4,19 @@
using namespace std; using namespace std;
int main() int main()
{ {
int w, h, n, p;
scanf("%d%d%d", &w, &h, &n);
set<int64_t> _s[2] = {{0, w}, {0, h}};
multiset<int64_t> _ms[2] = {{w}, {h}};
for (char op[3]; n--; printf("%lld\n", *_ms[0].rbegin() * *_ms[1].rbegin()))
{
scanf("%s%d", op, &p);
auto &s = _s[*op == 'H'];
auto &ms = _ms[*op == 'H'];
auto it = s.upper_bound(p);
auto len1 = *it - p, len2 = p - *--it;
ms.erase(ms.find(len1 + len2));
s.insert(p), ms.insert(len1), ms.insert(len2);
}
return 0; return 0;
} }

Loading…
Cancel
Save