社区讨论
关于差分约束题目连边方式的疑问
P3275[SCOI2011] 糖果参与者 12已保存回复 13
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 13 条
- 当前快照
- 1 份
- 快照标识符
- @mi6z5b1h
- 此快照首次捕获于
- 2025/11/20 13:12 4 个月前
- 此快照最后确认于
- 2025/11/20 15:41 4 个月前
这题大部分人都是按照不等式 建的正权边,边权为 或 ,跑最长路,判断正环。我是 建了负权边,边权 或 ,跑最短路,判负环。按照一般差分约束连边方向,应该是 。但是我只有写成 才能 AC,否则 WA 三个点(开 longlong 了):
CPP std::swap(a, b); // 去掉这一句 wa 三个点
if (opt == 1) { g[b].push_back(Edge(a, 0)); g[a].push_back(Edge(b, 0)); } // a = b, a - b <= 0, b - a <= 0
else if (opt == 2) { g[b].push_back(Edge(a, -1)); } // a < b, a - b <= -1
else if (opt == 3) { g[a].push_back(Edge(b, 0)); } // a >= b, b - a <= 0
else if (opt == 4) { g[a].push_back(Edge(b, -1)); } // a > b, b - a <= -1
else if (opt == 5) { g[b].push_back(Edge(a, 0)); } // a <= b, a - b <= 0
求助大佬 dddlt
回复
共 13 条回复,欢迎继续交流。
正在加载回复...