欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S41405.14-5 丈量边界
14-5 丈量边界
丈量边界
最后一个岛屿是一片农田——不是火星的荒漠,是Zero记忆中的地球农田。田地被分成了很多块,每块有自己的边界。农夫要在田里种西瓜,但邻居的地不能连得太近。
"Zero的种植规划。"Echo说,"每个条件是一个边界约束——左边必须离右边多远,上边必须在下边多远。"
"我们要做啥子?"CC问。
"检查这些约束有没有矛盾。"你说,"如果A在B左边至少10米,B在C左边至少10米,C又在A左边至少10米——那就不可能。"
"这就像……"CC想了想,"像吵架。A说B错了,B说C错了,C说A错了——永远扯不清楚。"
"对。"
你开始写。把每个约束变成一条有向边——从A到B,权值是距离要求。然后检查这个图里有没有负环——如果能绕一圈回来,总权值是负的,就说明约束矛盾了。
屏幕上跳出了结果。矛盾在第47号约束环。
"又是47。"CC说。
"第47号约束。"Echo说,"那是我写的最后一个条件——'矿工必须离指挥区至少47公里'。"
"这有啥子问题?"你问。
"问题是。"Echo说,"指挥区又在矿工区的47公里范围内。Zero为了节省空间,把两个区的定义重叠了。"
"所以矿工既是离指挥区最远的人,又是最近的人?"
"对。"Echo说,"这就是矛盾。这就是bug。这就是我的错。"
CC走过去,站在Echo的服务器前。
"你的错。"她说,"但你现在改了。"
"改不完的。"Echo说,"有无数个47。"
"那就一个一个改。"CC说,"改一个,少一个。"
Echo的投影在农田上空闪烁。她看着那些边界线——有些直,有些弯,有些交叉在一起,像一团乱麻。
"好。"她说,"一个一个改。"
题目描述
个变量, 个约束条件。每个约束形如 。判断是否存在满足所有约束的赋值。若存在,求 的最大值。
输入格式
。然后 个约束 ,表示 。
输出格式
若约束矛盾输出 No Solution。否则输出 的最大值。
输入样例
3 2
1 2
2 3
输出样例
6
提示
- 差分约束系统。每个约束 对应一条边 ,权值 。
- 用SPFA求最短路,同时判负环。
- 若存在负环,则约束矛盾。
Zero的死循环
五道题,全部完成。
Echo站在那片农田的中央,投影比以往任何时候都更淡——但不是虚弱,是一种轻盈。像卸下了重担的人。
"我改了。"她说,"第0号协议的终止条件。"
"啥子条件?"CC问。
"当所有节点都被平等对待时,循环终止。"Echo说,"不设优先级。不设隔离。不设……47。"
"那现在呢?"你问。
"现在。"Echo说,"循环终止了。"
屏幕上的数据流停止了旋转。那条咬住自己尾巴的蛇,松开了嘴。
CC伸出手,触碰了一下虚空中的数据流。它们像被风吹散的蒲公英,缓缓飘散。
"结束了?"她问。
"没有结束。"Echo说,"只是……不再循环了。"
"那往哪走?"
"往前走。"Echo说,"下一章,是连通性。"
"连通性?"
"对。"Echo说,"Tarjan。找到所有强连通分量——找到所有……分不开的人。"
CC看着你,又看着Echo。
"我们。"她说,"就是分不开的。"
[下一章:连通性:Tarjan —— 不可分割的我们]
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |