晋江文学城
下一章 上一章  目录  设置

6、报名表压在讲义上 新生程序赛 ...

  •   周一早上七点四十,沈砺川把一张新生程序赛报名表压在许砚知的数学分析讲义上。

      纸是刚从学院大厅打印出来的,右上角还带着机器裁切留下的毛边。队员栏有两格,第一格已经填了沈砺川,第二格空着;队名、队长、紧急联系人一概没写。

      许砚知把报名表移开,露出下面做到一半的习题:“你昨天刚交出管理员令牌。”

      “所以我今天改走正常流程。”沈砺川拉开旁边的椅子,“组队也走正常流程。”

      “这两件事没有关系。”

      “有。你说恢复协作要观察十次关键操作。比赛至少能占三次:报名、环境核验、正式提交。”

      许砚知抬眼:“你在拿观察期做任务规划?”

      “说明我接受管理。”

      “接受和钻空子不是同一个意思。”

      前排有人回头,沈砺川压低声音:“那你到底组不组?”

      许砚知没有立刻回答。前一晚从属性窗口里打开的那张截图仍留在封存目录里:赵嵩的名字、ROOT-LAB执行的命令、事故前一小时的录像截帧。贺承远已经替他们提交ROOT-LAB账号创建记录的正式申请,学院没有回函。在此之前,他们不应该私自扩展调查,更不该把一场公开比赛变成试探对方的工具。

      可程序赛本身也是他们入学后第一个必须共同完成、又与寒灯无关的现实任务。若合作只能在查旧案时存在,那它很可能只是危机下的临时安排。

      许砚知拿起报名表:“先定条件。”

      沈砺川坐正:“你说。”

      “比赛和寒灯调查分开。训练设备只用教学环境,不导入任何旧代码。出现异常先截图和登记,不在现场追查。任何一方想退出,要说明理由,不能替另一方决定。”

      “最后一条针对我?”

      “针对可能发生的行为。”

      “行。”沈砺川把笔递给他,“队名你写。”

      许砚知看着空白栏,问:“为什么是我?”

      “我取的名字通常会被你否决。”

      “举例。”

      “‘跑得动就行’。”

      许砚知把笔尖落在纸上,写下四个字:校验失败。

      沈砺川盯了两秒:“你确定这是队名,不是赛前诅咒?”

      “至少不会和别人重复。”

      “很有你的风格。”

      队长栏最终没有靠猜拳决定。报名系统要求队长负责申诉、提交身份材料和保管现场密钥,许砚知看完规则后主动填了自己的名字。沈砺川没反对,只在紧急联系人一栏写下贺承远的办公电话,写完后把表格推回去,让许砚知逐项核对。

      许砚知在报名表右下角写了一个很小的“二”。前一次记录压在ROOT-LAB查询申请上,状态至今仍是“等待审核”。这一次只是一张普通报名表,沈砺川却在每个空栏前都停下来,把决定权留给两个人。

      报名表没有立刻提交。第一节课前还有二十分钟,陈以宁被许砚知叫到食堂二楼,承担一项他自己也觉得有点多余、却不愿省略的工作:检查组队约定是否存在只约束一方的条款。

      陈以宁把三条条件看完,用勺子敲了敲餐盘边缘:“第三条写得不好。”

      “哪里?”许砚知问。

      “‘任何一方想退出,要说明理由,不能替另一方决定。’如果对方因身体原因不想公开细节,怎么办?如果比赛现场需要紧急退出,难道还要先开会?”

      沈砺川咬着半个包子,含糊道:“我就说他写得像合同。”

      “你少得意。”陈以宁把报名表推到他面前,“这条主要防你。”

      许砚知改成:非紧急情况下,退出前需告知影响与可选方案;紧急退出后补充说明,不要求公开私人原因。

      林疏月端着豆浆过来,看到队名后站在桌边笑了足足十秒:“校验失败?你们是准备一开始就把结果写在脸上?”

      “降低期待。”沈砺川说。

      “我看是提高记忆度。”林疏月拉开椅子,“分工呢?”

      许砚知说:“读题、边界检查、申诉材料由我负责。实现和现场环境由沈砺川负责。重大提交双人确认。”

      “哪一类算重大?”

      “会改变队伍资格、覆盖代码、提交最终答案的操作。”

      林疏月摇头:“比赛最后一分钟你们还要互相盖章?”

      “确认可以是一句话。”许砚知说,“重点是不能有人默认另一个人同意。”

      沈砺川把最后一口包子咽下去:“我申请补充一条。许砚知如果连续盯屏幕超过两小时,我可以强制他离开五分钟。”

      “驳回。”

      “理由?”

      “与比赛规则无关。”

      陈以宁说:“但与队伍能不能完整参赛有关。改成任何一方出现明显身体不适,另一方有权申请暂停训练,正式比赛按现场医疗规则处理。”

      许砚知没有立即同意。他很少把身体状态写进规则,总觉得那部分不可量化,也容易成为别人越过自己意愿的理由。沈砺川没有催,只把笔放在报名表旁边。

      “申请暂停,不是直接决定。”许砚知最终说。

      “对。”陈以宁说,“暂停后本人仍有选择权。”

      这条被写进约定。纸面上总共五条,没有一句与亲密有关,却把他们各自最容易伤到对方的方式都圈了出来:一个习惯替人挡风险,一个习惯把自己排除在风险评估外。

      四个人离开食堂时,林疏月把手机横过来拍了一张报名表,只拍队名和规则,没有拍姓名。“留个纪念。”她说,“以后你们要是吵散了,我负责拿出来嘲笑。”

      “不会给你机会。”沈砺川说。

      许砚知看了他一眼。沈砺川很快补上:“至少比赛结束前不会。”

      这句修正比前一句可靠。

      上午的高等代数课讲向量空间。老师把一组矩阵写在黑板上,让大家判断它们在给定运算下是否构成子空间。沈砺川迟到两分钟,从后门进来时没有直接挤到许砚知旁边,而是先站在过道里看了一眼空座。许砚知把放在旁边的书拿开。

      沈砺川坐下后,只用气声问:“这算默认组队成功?”

      “报名表还没提交。”

      “座位先通过了。”

      许砚知没接话,把老师刚说的三个条件写到他讲义空白处:包含零元;加法封闭;数乘封闭。

      沈砺川看完,在下面补了一句:退出也要封闭吗?

      许砚知划掉那行字,写:退出要双向确认。

      老师正好点到他们这一排,让沈砺川回答反例。沈砺川站起来,扫了一眼题目:“只取所有行列式等于一的二阶矩阵,不构成线性空间。两个矩阵相加以后,行列式不一定还是一。”

      “为什么?”老师追问。

      “条件不是对线性运算封闭。”

      老师点头,让他坐下。沈砺川在讲义边角画了一个小框,把“退出要双向确认”圈进去。

      下课后,两人去竞赛办公室交材料。办公室在学院一楼,门口贴着身份核验流程:读取校园卡、比对学籍、签署诚信承诺、生成比赛账号。前面三支队伍都很快通过,轮到他们时,读卡器先认出许砚知,随后在读取沈砺川校园卡时发出一声短促的警报。

      工作人员皱眉,看向屏幕:“历史项目身份冲突。”

      沈砺川的手停在读卡器旁。

      屏幕只允许工作人员查看,许砚知看不见具体内容。他问:“冲突字段是什么?”

      “系统显示这个学号关联过一个已注销的实验项目账号,不能自动生成竞赛账号。”

      “账号名称?”沈砺川问。

      工作人员迟疑了一下:“SLC。”

      后面排队的人开始往前看。有人认出了沈砺川,低声和同伴说了句什么。声音不大,但“旧系统”“权限”两个词落得很清楚。

      沈砺川把校园卡收回来:“我退出,重新报单人——”

      “报名规则不允许单人。”许砚知打断他。

      “那你换队友。”

      “退出需要双向确认。”

      沈砺川看向他,眼里那点惯常的轻松完全退了:“许砚知,这不是训练题。系统如果一直卡着,你会跟着失去资格。”

      “现在只有自动核验失败,没有人工核验结论。”许砚知转向工作人员,“请提供申诉入口和冲突记录编号。”

      “记录涉及旧项目隐私,不能给学生看。”

      “不给内容可以给编号。我们需要证明失败发生在哪一步。”

      工作人员被问得愣了愣,找来竞赛负责老师。负责老师姓梁,先把他们带进里间,关上门,才调出完整提示。冲突不是学号直接关联SLC,而是“姓名缩写、手机号尾号与旧维护账号恢复信息部分匹配”。系统把三项弱关联合并成了高风险冲突。

      “这套核验规则去年才加。”梁老师说,“一般是防止有人用废弃项目身份重复注册。你们可以人工申诉,今天下午五点前提交说明。”

      沈砺川盯着那三项匹配:“手机号尾号不对。”

      梁老师放大记录。旧账号恢复手机尾号是0719,沈砺川的是0917。两个数字顺序被系统交换后,竟被算成相似。

      许砚知问:“规则是谁配置的?”

      “竞赛平台外包维护,学院信息中心提供历史黑名单。你们别在这里查,先完成申诉。”

      “能导出屏幕记录吗?”

      “不行。你们可以记下错误码。”

      许砚知拿出纸笔,把错误码、时间、设备编号和在场人员逐项写下。沈砺川站在一旁,没有再说退出。等梁老师离开去取申诉模板,他忽然开口:“如果人工核验不过,你换人。”

      “这是第二次。”许砚知说。

      “什么?”

      “你替我决定。”

      “我不想让你因为旧账号失去比赛资格。”

      “那就说明风险,不要直接给结论。”

      沈砺川靠在桌边,声音压得很低:“说明了,你会留下。”

      “你怎么知道?”

      “你连错误码都抄了。”

      许砚知把笔帽扣上:“留下是我的选择。你可以不同意,但不能先把我移出队伍。”

      里间没有窗,顶灯白得发冷。沈砺川看着他,过了好一会儿才说:“明白。”

      “复述。”

      “我遇到风险先提供信息,不替队友退出。”

      “还有。”

      “对方有权做不符合我预期的决定。”

      许砚知把申诉模板接过来:“第三次关键操作,通过一半。”

      “为什么只有一半?”

      “你先说了换队友。”

      沈砺川认命地点头:“观察员很严格。”

      离开竞赛办公室时,沈砺川走得很快。许砚知跟到学院大厅,才在自动售货机旁拦住他。

      “你去哪?”

      “找信息中心问SLC黑名单怎么进平台。”

      “梁老师刚说先申诉。”

      “申诉和问规则不冲突。”

      “你现在去,得到的只会是一句‘等待正式回复’。还可能让人以为你在绕过竞赛办公室。”

      沈砺川按了一下售货机按钮,又松开:“我不喜欢等一个系统判断我是谁。”

      许砚知说:“我也不喜欢。”

      沈砺川转过来。他大概没想到许砚知会把自己放进同一个句子。

      “门禁第一次把我写进A401时,我也想立刻找到负责映射的人。”许砚知继续说,“但先追人不会让记录变准确。现在我们有错误码、在场人和人工申诉入口。先把能完成的做完。”

      “你不担心五点前过不了?”

      “担心。”

      “看不出来。”

      “看出来不会提高通过率。”

      沈砺川靠着售货机,过了一会儿说:“你有时候很让人生气。”

      “具体。”

      “你明明在一起承担,却总说得像只是在优化流程。”

      许砚知没有立即回答。大厅里不断有人刷卡经过,闸机每隔几秒响一次。共同承担是他自己在竞赛办公室说的,可一旦沈砺川把它从规则里拿出来,放到两个人之间,词义就变得难以控制。

      “我不擅长换一种说法。”他说。

      沈砺川看了他两秒,按下售货机按钮,买了两瓶常温矿泉水。他没有把其中一瓶递过去,只放进自己的书包侧袋:“那先按你会的说。”

      “去图书馆。”

      “收到,队长。”

      “不要用这个称呼。”

      “你自己填的队长。”

      “只在竞赛系统里生效。”

      “线下无效,记住了。”

      他们沿大厅另一侧去图书馆。沈砺川没有再提出单独去信息中心。这个决定没有被写进观察记录,却让许砚知在心里把那半次通过补成了完整一次。

      下午,他们在图书馆讨论申诉材料。陈以宁负责核对手机号和账号匹配逻辑,林疏月去竞赛群里问是否有人遇到类似错误。不到半小时,她找出两名因姓名缩写相同被误拦截的学生,其中一个人的申诉已经通过。

      “所以问题不是沈砺川特殊,”林疏月说,“是规则本身把弱相关当成了身份等价。”

      陈以宁把三项匹配拆成表格:“你们可以主张规则误报,但不能借此证明SLC和沈砺川无关。两件事要分开。”

      许砚知点头,把原本写好的“该账号并非本人所有”改成“现有自动匹配不足以确认账号归属”。

      沈砺川看见他修改,问:“你不替我说无关?”

      “证据不够。”

      “听起来不怎么仗义。”

      “替你写一个容易被推翻的结论,才是不负责任。”

      沈砺川没再开玩笑。他把旧项目参与时间、自己当年使用过临时令牌的事实写进说明,没有删掉不利部分。林疏月看完,提醒他:“这会让人工老师继续问SLC。”

      “问就问。”他说,“我不想再靠漏掉一段经历换一个干净结论。”

      申诉在四点二十三分提交。五点前没有结果。他们按计划去教学机房训练,不能使用正式比赛账号,就先用本地判题器。第一题是简单模拟,沈砺川十分钟写完;许砚知用二十七个边界样例打掉三个隐藏错误。

      “你是不是对失败有私人爱好?”沈砺川看着满屏红色测试。

      “我对假通过没有兴趣。”

      第二题要求维护一组动态关系。沈砺川用并查集,许砚知指出删除操作无法处理;两人争了五分钟,最后把题意重新读了一遍,发现删除只是离线给出,可以倒序加入。

      “你看,”沈砺川说,“先跑也能找到路。”

      “因为我先指出原方法不能覆盖删除。”

      “共同贡献?”

      “共同。”

      他们第一次把训练记录按贡献拆开:题意澄清、算法选择、实现、测试、复盘,各自写清。没有“谁带谁”,也没有把所有功劳压成队名。

      六点半,人工核验仍没有回复。训练机房只剩他们和两名值班志愿者,窗外操场开始亮灯。沈砺川把本地判题器关掉,拿出报名表副本,看了很久。

      “你现在如果后悔,还来得及。”他说。

      许砚知正在整理测试用例,没有抬头:“你又在替我设置退出入口。”

      “这次只是提醒。”

      “那我明确回答:不退出。”

      沈砺川把纸折回原样:“我以前遇到这种情况,最先做的是把和我一起的人摘出去。周闻、陆星迟,还有后来帮忙说话的人,我都觉得他们离开会更安全。”

      “结果呢?”

      “结果是每个人都以为另一个人已经拿到了完整解释。等真正需要对证时,大家手里只有自己的半段。”

      许砚知停下键盘:“所以共同承担不是所有人一起背同一份责任。”

      “是什么?”

      “每个人保留自己看见的部分,也知道其他人的部分在哪里。有人退出,记录仍然连得起来。”

      沈砺川看着桌上的两台电脑:“像分布式备份?”

      “不要把什么都说成系统。”

      “你先说的记录。”

      许砚知没有继续争。他把当天的训练报告拆成两份:自己的题意分析和沈砺川的实现记录分别保存,再生成一份共同索引。任何一份丢失都不至于让整场训练无法复盘。

      沈砺川照着做,第一次把个人分支的说明写得比代码还长。他写到最后问:“如果以后我们意见不一致,共同索引里写谁的?”

      “都写。分歧也是事实。”

      “这样报告会很难看。”

      “报告不是为了显得配合顺利。”

      沈砺川点头,把“队伍意见”改成“许砚知主张继续补边界测试;沈砺川主张先完成限时模拟,最终采用分阶段方案”。

      值班志愿者从他们身后经过,随口说:“你们训练还写会议纪要?”

      沈砺川回答:“队名叫校验失败,得尽量证明失败得有过程。”

      志愿者没听懂,笑着走了。许砚知却把这句话记在训练记录最后:失败必须能定位,合作也必须能定位。

      晚上七点零六分,人工核验通过。邮件说明自动规则误报,允许生成比赛账号,并要求后续配合核查旧身份关联。沈砺川读完邮件,先把附件转给许砚知,再打开报名系统。

      “你不先点确认?”许砚知问。

      “等队长。”

      两人并排核对页面。队名“校验失败”显示正常,队长是许砚知,第二队员是沈砺川。许砚知点击最终确认,系统转了两秒,弹出成功提示。

      报名成功后,两人没有马上离开。许砚知把账号恢复码打印成两份,分别装进不同信封;沈砺川负责设置双重验证,却在绑定手机时停下来问:“用谁的号码?”

      “队长账号绑定我的。恢复邮箱用竞赛专用地址,密码由两人各保管一半。”

      “真拆一半?”

      “完整密码写入密封文件,贺承远保管。平时不需要共同登录。”

      沈砺川没有嫌麻烦。他把自己生成的随机段写在纸上折好,许砚知写另一段,两张纸一同封入信封。这个账号属于队伍,却不等于任何一人可以独占。

      梁老师路过,看见他们还在设置,提醒:“普通比赛不用做到这个程度。”

      许砚知说:“我们的身份记录已经出现过异常。”

      梁老师没有再劝,只给了他们一个竞赛平台申诉电话:“出问题先打这里,不要自己进后台。”

      沈砺川把号码存下,备注写成“先打电话”。许砚知看见后,没有要求改成更正式的名称。

      下一行却不是常规提示。

      页面底部出现一条灰色审计备注:注册完成后四分十二秒,管理视图读取本队身份详情。

      梁老师说普通参赛者看不到审计备注。它像是误从后台漏到了前端,只停留了不到一秒便自动消失。沈砺川没有碰鼠标,许砚知已经按下截图快捷键。

      林疏月看着图片:“管理视图是admin_view?”

      陈以宁核对时间:“你们刚注册完,谁会立即查一个大一队伍?”

      许砚知把截图、系统时间和本地网络记录一起封存。沈砺川打开证据仓库的提交页面,却停在最后一步,转头问他:“现在提交?”

      “提交。只写事实,不追来源。”

      沈砺川输入说明:竞赛账号注册后出现管理视图读取提示。

      提交完成后,平台又发来一封自动邮件,标题是“身份核验补充记录”。附件只有一行:查询来源区域,信息楼A区四层。

      A401所在的楼层。
note 作者有话说
第6章 报名表压在讲义上

  • 昵称:
  • 评分: 2分|鲜花一捧 1分|一朵小花 0分|交流灌水 0分|别字捉虫 -1分|一块小砖 -2分|砖头一堆
  • 内容:
  •             注:1.评论时输入br/即可换行分段。
  •                 2.发布负分评论消耗的月石并不会给作者。
  •             查看评论规则>>