这个题目的做法是差分约束,其中有一种暴力连边方式如下:
for (int i = 0; i < n; ++ i) {
int l, r, p, q, ans;
std::cin >> l >> r >> p >> q >> ans;
for (int x = l; x <= r; ++ x) {
for (int y = p; y <= q; ++ y) {
adj[x].emplace_back(y, -ans);
}
}
}
for (int i = 1; i <= m; ++ i) {
adj[0].emplace_back(i, 0);
}
这样预计会连出约 5×106 条边,而图的点数是约 104,在这个图上跑 SPFA 做差分约束。测试数据也构造了这种情况,然而其可以在 200 毫秒内轻松通过。
所以我很好奇怎么卡这种暴力连边,还是说不太能卡?