使用 DeepSeek 模型求解今年 CSP-J/S 题目
  • 板块学术版
  • 楼主StudyingFatherDreamer
  • 当前回复51
  • 已保存回复51
  • 发布时间2024/11/22 12:32
  • 上次更新2024/11/22 16:38:49
查看原帖
使用 DeepSeek 模型求解今年 CSP-J/S 题目
22030
StudyingFatherDreamer楼主2024/11/22 12:32

近日使用 DeepSeek 最新推出的预览版推理模型,尝试求解了今年的 CSP-J/S 复赛题目。经过测试,模型在 J 组和 S 组上分别取得了 315 分和 160 分的好成绩。

本轮测试在流程等方面并不完全严谨,仅作为参考。

测试流程

对于每道题目,一开始只提供题目描述,输入格式和输出格式,让模型生成代码。

接下来使用生成的代码运行题目给出的小输入输出样例(以能直接输入模型为限),如果所有小样例都过了就提交代码,并终止生成流程(模拟 OI 赛制)。

如果样例测试结果未通过,则按照如下规则告知样例测试的结果:

  • 如果代码存在编译错误,则告知模型编译错误具体的发生位置和编译器输出的错误信息。
  • 如果代码在某个样例上输出了错误答案,则告知模型该样例的输入,模型给出的代码的输出和期望输出。如果该样例附有样例解释,则在样例数据后一并提供给模型。
  • 如果代码在某个样例上出现了运行时错误,则告知模型发生运行时错误的位置。
  • 如果代码出现了超时,超空间的问题,则告知模型超时,超空间的结果,提醒其进行优化。

原则上,除了如上运行结果反馈外,不向模型提供额外的提示信息。

重复以上循环,直到代码生成了能通过所有小样例的代码,或是对话长度达到上限。

测试结果

J 组测试结果:

题目名pokerexplorestickschain
得分100100100100100100^{\ast}1515

S 组测试结果

题目名dueldetectcolorarena
得分100100606000^{\ast\ast}00^{\ast\ast}

附注:

  • ^{\ast}:生成代码过程中,提供了超范围的额外提示信息。
  • ^{\ast\ast}:未能生成通过小样例的代码。

这里值得一提的是 J 组的 sticks 题目。模型一开始给出的代码非常接近正解,只需在某个循环中加入 break 语句就能通过本题。但是模型虽然在思考链中想到了问题的根源,却始终没有能在代码中纠正这一问题,甚至出现了在原来的做法和另外一个做法间反复横跳的情况。最后我只好在用户输入中近乎明确地提示这一问题,模型才给出了正确的代码。

这样的提示超出了前面所述的“不提供运行结果之外的提示信息”的范围,使得本题的分数存在一定水分,有些遗憾。

后期如果时间允许的话,我将尝试整理模型的思考过程,给出相对完整的解析。

代码公开

考虑到不少同学因为未加入代码公开计划等原因,无法看到上面的提交记录的代码,下面以云剪贴板的形式给出本次测试过程中 AI 生成的代码,供参考。

2024/11/22 12:32
加载中...