【LLM】R1复现项目(SimpleRL、OpenR1、LogitRL、TinyZero)持续更新
note
(1)未来的工作需亟待解决:
- 支持大规模 RL 训练(PPO、GRPO 等)的开源基础框架
- 用于稳定训练的 GRPO 训练超参的自动化调优
- RL 训练数据的配比(难度、领域、任务等)
- 基于 Instruct 模型训练 R1 时,高质量 long CoT 的数据获取
- 合适的惩罚函数设计以保证 CoT 思考链质量不退化
(2)应用在业务落地时,需要考虑:
- 模型在给定的 prompt 下,结合预训练的基本知识能否正确给出正确的推理结果。任何业务中的「潜规则」都需要显式地定义在 prompt 中,并尽可能避免与预训练知识的冲突。
- 混合通用数据、业务数据与数学、代码类领域任务下的 long CoT SFT 数据来给模型先打下一个坚实的思维链范式基础,这有利于提升 RL 训练时的稳定性。
(3)RL 基本设置:Reward 函数定义、Penalty 函数定义 (Optional)、优化方式、训练平台
注:复现工作均在 TIONE 平台上使用 1 台 ~ 4 台 GPUs 进行。上述几个开源复现工作中,只有 OpenRLHF 支持多机多卡训练。其余的仅支持单机多卡训练,且往往存在 GPU 数目的限制。在训练 TinyZero 和 LogitRL 时,就遇到了扩展 GPUs 后训练卡在初始化的问题。大部分项目使用 4 卡、8 卡、32 卡(SimpleRL)复现耗时在 2~3 天左右。
(4)总结:
1)DeepSeek R1 的 format 约束主要以"{think process}{answer}"的形式实现,而开源方案大多采用了 "{think process}{answer}" 的形式。从优化角度而言两者的差异不大。在构建基于正则表达式来判断模型输出是否存在规范格式时,往往采用的是较为严格的 r"^.?\s.*?$" 来约束开头与结尾。针对部分数学类问题,format reward 考虑答案是否出现了 \box{} 框。
2)accuracy reward:各个工作的实现方式基本沿用了过往强化学习算法中 ORM(outcome reward model) 里的代码。此处的难点有两个:
- 需要编写大量的后处理代码,从模型的输出结果中能够成功解析出最终的结果;
- 需要考虑判断相等的条件(数值、字符串等),并针对不同的领域数据设计不同的 reward 方式。
对于前者而言,对于某些要求格式化输出类问题,需要正确匹配出目标 kv 对。对于后者而言,判断 prediction 和 gt 是否相等并返回 reward 的定义也有所讲究。最严格的完全一致匹配只会区分正确 - 错误两种情况,在某些任务上可能会影响训练收敛的速度。
文章目录
- note
- 一、R1复现项目
- 二、具体项目
- 预算上的纯RL:TinyZero
- Open R1: HuggingFace 复现 DeepSeek-R1 全流程
- 从头开始构建 DeepSeek R1
- Open-Thoughts: UC 伯克利复现 DeepSeek-Distill-Qwen-32B
- LIMO:少即是多
- DeepScaleR:完美复现 DeepSeek-R1 强化学习效果
- Reference
一、R1复现项目
| Github | 训练集 | 测试集 | 模型 | RL 框架 | 优点 | 缺点 | 易上手评级 |
|---|---|---|---|---|---|---|---|
| simpleRL-reason | MATH 8K(level 3-5), AIME 2024, MATH 500, AMC Minerva Math, OlympiadBench | AIME 2024, MATH 500, AMC | Qwen2.5-7B | OpenRLHF | 1)实现简单 2)系统工作支持 PRM/ORM/R1 等 3)RL 框架支持多机多卡 | 1)RL 算法暂不支持 GRPO | ⭐️⭐️⭐️ |
| open-r1 | DigitalLearningGmbH/MATH-lighteval, AI-MO/NuminaMath-TIR | AIME 2024, MATH-500, GPQA Diamond | DeepSeek-R1-Distill-Qwen-7B, Qwen2.5-Math-7B, Qwen2.5-1.5B-Instruct | TRL | 1)实现简单 2)全流程支持 R1 系列工作(sft/rl/sft+rl) | 1)多机训练暂不支持 | ⭐️⭐️ |
| unsloth | GSM8K | GSM8K[test] | LLAMA 3.1(8B), Phi4, Qwen2.5-1.5B | TRL | 1)官方声称最接近 R1 的复现方式 2)接口简单 | 1)多卡需付费 | ⭐️ |
| logit-RL | KK 老实人与骗子 lv3&5 | KK 老实人与骗子 | Qwen2.5-7B-Instruct | veRL | 1)RL 框架支持多种算法 2)复现率较高 | 1)多机训练暂不支持 | ⭐️⭐️⭐️ |
| tinyzero | Countdown | Countdown | Qwen2.5-3B | veRL | 1)RL 框架支持多种算法 2)复现率较高 | 1)多机训练暂不支持 | ⭐️⭐️⭐️ |
| oatzero | 8K MATH, MATH 500 | MATH 500 | Qwen2.5-Math-7B/1.5B, Qwen2.5-7B/3B, Microsoft-Rho-Math-7B, DeepSeek-Math-7B-Base | OAT | 1)统一集成了 tinyzero 等代码 | 1)多机训练暂不支持 | ⭐️⭐️ |
| demystify | MATH, WebInstruct, MATH-500, TheoremQA, MLU-Pro-1k | MATH 500 | llama3.1-8B, Qwen2.5-Math-7B | OpenRLHF | 1)实现简单 2)论文本身较扎实(训练 & 验证充分) | 1)实验 setting 与 R1 稍有区别 | ⭐️⭐️ |

二、具体项目
预算上的纯RL:TinyZero
Sky-T1专注于模型蒸馏,也有在“纯RL”领域的一些工作-TinyZero,一个3B参数模型,复制了DeepSeek-R1-Zero的方法(训练成本不到30美元)。
即使只有3B参数,TinyZero也表现出一些新兴的自我验证能力,这支持了“推理可以通过纯RL在小模型中出现”的观点。
RL 训练时设置严格的格式约束,通常以 system prompt 的形式出现在训练数据中。
system prompt(snippet):
Show your work in <think> </think> tags. And return the final answer in <answer> </answer> tags, for example <answer> (1 + 2) / 3 </answer>.
reward 函数定义(snippet):
answer_pattern = r'<answer>(.*?)</answer>'
match = re.finditer(answer_pattern, solution_str)
matches = list(match)
if matches:final_answer = matches[-1].group(1).strip()
else:final_answer = None
return final_answer
考虑到答案校验存在不同的类型(字符串通常使用 exact_match,浮点数允许给定精度下的误差),不同开源项目也使用了适应于训练集的答案校验函数。
accuracy reward 定义(snippet):
# Evaluate equation
try:result = evaluate_equation(equation)if result is None:if do_print:print(f"Could not evaluate equation")return format_scoreif abs(result - target) < 1e-5: # Account for floating point precisionif do_print:print(f"Correct equation: {equation} = {result}")return scoreelse:if do_print:print(f"Wrong result: equation = {result}, target = {target}")return format_score
......
总结:
(1)DeepSeek R1 的 format 约束主要以"{think process}{answer}"的形式实现,而开源方案大多采用了 "{think process}{answer}" 的形式。从优化角度而言两者的差异不大。在构建基于正则表达式来判断模型输出是否存在规范格式时,往往采用的是较为严格的 r"^.?\s.*?$" 来约束开头与结尾。针对部分数学类问题,format reward 考虑答案是否出现了 \box{} 框。
(2)accuracy reward:各个工作的实现方式基本沿用了过往强化学习算法中 ORM 里的代码。此处的难点有两个:
- 1)需要编写大量的后处理代码,从模型的输出结果中能够成功解析出最终的结果;
- 2)需要考虑判断相等的条件(数值、字符串等),并针对不同的领域数据设计不同的 reward 方式。
对于前者而言,对于某些要求格式化输出类问题,需要正确匹配出目标 kv 对。对于后者而言,判断 prediction 和 gt 是否相等并返回 reward 的定义也有所讲究。最严格的完全一致匹配只会区分正确 - 错误两种情况,在某些任务上可能会影响训练收敛的速度。
Open R1: HuggingFace 复现 DeepSeek-R1 全流程
HuggingFace 表示,将以 DeepSeek-R1 的技术报告为指导,分 3 个步骤完成这个项目:
• step 1:从 DeepSeek-R1 中蒸馏高质量数据,复现 R1-Distill 模型。
• step 2:复现通过纯强化学习训练 R1-Zero 的过程,包括如何生成推理数据集
• step 3:复现训练 R1 的完整 pipeline,包括两阶段 SFT、两阶段 RL。

从头开始构建 DeepSeek R1
Deepseek讲解,一个讲解如何从头开始构建 DeepSeek R1的项目
https://github.com/FareedKhan-dev/train-deepseek-r1
开发者Fareed Khan’s 用手绘流程图以及代码的方式,逐步讲解如何按照 deepseek 技术报告构建一个可以在本地运行的小型基础模型。非常详细。
该项目选择了一个较小的基础模型 Qwen/Qwen2.5–0.5B-Instruct 作为起点。
- 通过 GRPO 算法进行强化学习,设计了多种奖励函数,如准确度奖励、格式奖励、推理步骤奖励、余弦缩放奖励和重复惩罚奖励,以鼓励模型进行正确和清晰的推理过程。
- 在此基础上进行了监督微调(SFT),使用了 Bespoke-Stratos-17k 数据集,通过少样本提示、直接提示和后处理精炼等方法,进一步提升了模型的推理能力和输出质量。
- 最后,通过拒绝采样筛选出高质量的推理数据,进行了第二阶段的 SFT 训练,以及针对实用性和无害性进行了奖励优化,最终完成了 DeepSeek R1 模型的构建。
Open-Thoughts: UC 伯克利复现 DeepSeek-Distill-Qwen-32B
斯坦福、UC伯克利等多机构联手发布了开源模型:OpenThinker-32B,性能直逼 DeepSeek-Distill-Qwen-32B。
仅使用了 114k(OpenThoughts-114k) 数据(DeepSeek-Distill-Qwen-32B 的1/8),就与同尺寸 DeepSeek-Distill-Qwen-32B 打成平手。团队发现,通过采用经 DeepSeek-R1 验证过的大规模优质数据集,就能够成功训练出达到 SOTA 水平的推理模型。具体实现方法包括扩大数据量、严格验证推理过程以及扩大模型规模。
LIMO:少即是多
上交大的最新研究成果却给出了一个另外答案:仅需 817 条精心策划的样本,便能让模型在数学竞赛级别的难题上超越众多现有的顶尖模型。这一发现不仅颠覆了传统认知,更揭示了一个我们可能一直忽视的事实:大模型的数学潜能或许始终存在,关键在于如何有效激发它。
LIMO(Less Is More for Reasoning)仅用 817 条精心设计的训练样本,通过简单的 SFT,就全面超越了那些使用几十万数据训练的主流模型,如 o1-preview 和 QwQ。
在 AIME24 评测中,LIMO 的准确率从传统方法(以 Numina-Math 为例)的 6.5% 飙升至 57.1%。而在 10 个不同的基准测试上,它实现了 40.5% 的绝对性能提升,超越了那些使用 100 倍数据训练的模型。这一突破证明了高质量、小规模的数据集,远比低效的海量数据训练更能激发大模型的推理潜能。
DeepScaleR:完美复现 DeepSeek-R1 强化学习效果
UC 伯克利团队宣布,他们仅以4500美元的成本,通过简单的强化学习(RL),就成功复现并训练出了 DeepScaleR-1.5B-Preview 模型,直接超越了 o1-preview。
UC伯克利的研究团队以 Deepseek-R1-Distilled-Qwen-1.5B 为基础,通过强化学习(RL),在 40,000 个高质量数学问题上进行训练,使用了 3800 A100 小时(4500美元),训练出了 DeepScaleR-1.5B-Preview 模型。在多个竞赛级数学基准测试中优于 OpenAI 的 o1-preview。
Reference
[1] DeepSeek R1范式复现笔记. 腾讯工程
[2] DeepSeek R1 最新复现项目汇总
[3] simpleRL-reason:GitHub - hkust - nlp/simpleRL - reason: This is a replicate of DeepSeek - R1 - Zero and DeepSeek - R1 training on small models with limited data
[4] open-r1:GitHub - huggingface/open - r1: Fully open reproduction of DeepSeek - R1
[5] [logit - RL](https://github.com/Unakar/Logic - RL):GitHub - Unakar/Logic - RL: Reproduce R1 Zero on Logic Puzzle
[6] [tinyzero](https://github.com/Jiayi - Pan/TinyZero):GitHub - Jiayi - Pan/TinyZero: Clean, minimal, accessible reproduction of DeepSeek R1 - Zero
[7] [demystify long CoT](https://github.com/eddycmu/demystify - long - cot):GitHub - eddycmu/demystify - long - cot
[8] deepscaleR:Notion – The all - in - one workspace for your notes, tasks, wikis, and databases.
[1] Bespoke-Stratos-17k:https://huggingface.co/datasets/bespokelabs/Bespoke-Stratos-17k
[2]Bespoke-Stratos-32B:https://huggingface.co/bespokelabs/Bespoke-Stratos-32B
[3]Bespoke-Stratos-7B:https://huggingface.co/bespokelabs/Bespoke-Stratos-7B
[4]BAAI/TACO:https://huggingface.co/datasets/BAAI/TACO
[5]codeparrot/apps:https://huggingface.co/datasets/codeparrot/apps
[6]deepmind/code_contests:https://huggingface.co/datasets/deepmind/code_contests
[7]MatrixStudio/Codeforces-Python-Submissions:https://huggingface.co/datasets/MatrixStudio/Codeforces-Python-Submissions
[8]AI-MO/NuminaMath-CoT:https://huggingface.co/datasets/AI-MO/NuminaMath-CoT
[9]camel-ai/chemistry:https://huggingface.co/datasets/camel-ai/chemistry
[10]camel-ai/biology:https://huggingface.co/datasets/camel-ai/biology
[11]camel-ai/physics:https://huggingface.co/datasets/camel-ai/physics
[12]INK-USC/riddle_sense:https://huggingface.co/datasets/INK-USC/riddle_sense
相关文章:
【LLM】R1复现项目(SimpleRL、OpenR1、LogitRL、TinyZero)持续更新
note (1)未来的工作需亟待解决: 支持大规模 RL 训练(PPO、GRPO 等)的开源基础框架用于稳定训练的 GRPO 训练超参的自动化调优RL 训练数据的配比(难度、领域、任务等)基于 Instruct 模型训练 R…...
买股票的最佳时机 - 2
买卖股票的最佳时机 III 题目描述: 提示: 1 < prices.length < 1050 < prices[i] < 105 分析过程: 写动态规划,我们需要考虑一下问题: 定义状态状态转移方程初始条件 遍历顺序 4种状态: …...
Python基于flask的智慧交通可视化,大数据智慧交通数据可视化系统
博主介绍:✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
【Unity】鱼群效果模拟
鱼群效果模拟 文章目录 鱼群效果模拟Boid算法实现方式version1_CPUversion2_GPUversion3_Multilaterationversion4_Bitonic_Sorting (GPU友好)version5_Skinning (TODO) 细节项优化项参考链接 Boid算法 Boid算法是一种模拟群体行…...
Unity使用IL2CPP打包时,我们应该注意什么?如何避免(可以举例说明)
这一篇部分内容在Unity之中如何处理C#底层代码那篇博客之中有提及,接下来对这部分进行补充说明。(请先阅读--Unity之中如何处理C#底层代码) 目录 1 注意点 2 如何避免 1 注意点 IL2CPP 在编译过程中会将 IL(中间语言…...
Wireshark使用介绍
文章目录 Wireshark介绍Wireshark使用工作模式介绍1. 混杂模式(Promiscuous Mode)2. 普通模式(Normal Mode)3. 监视模式(Monitor Mode) 界面分区捕获过滤器语法基本语法逻辑运算符高级语法使用示例捕获过滤…...
云图库平台(五)——后端图片模块开发
目录 一、需求分析二、库表设计三、图片的处理如何实现图片的上传和下载创建图片的业务流程如何对图片进行解析 四、创建并使用对象存储五、后端操作对象存储初始化客户端通用能力类文档上传文件下载 一、需求分析 管理员功能: 图片的上传和创建:仅管理…...
postman调用ollama的api
按照如下设置,不需要设置key 保持长会话的方法 # 首次请求 curl http://localhost:11434/api/generate -d {"model": "deepseek-r1:32b","prompt": "请永久记住:110,1-12,之后所有数学计算必…...
十、OSG学习笔记-多线程(OpenThreads)
上一节内容: 九、OSG学习笔记-NodeVisitor节点遍历器-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145742756?spm1001.2014.3001.5501 本章节代码: OsgStudy/Openthreads CuiQingCheng/OsgStudy - 码云 - 开源中国https://gite…...
Gemma 2 的滑动窗口注意力(Sliding Window Attention)解析:源代码
Gemma 2 的滑动窗口注意力(Sliding Window Attention)解析 在 Transformer 结构 中,自注意力(Self-Attention)是核心机制之一。然而,标准的自注意力计算复杂度为 ( O ( n 2 ) O(n^2) O(n2) ),随…...
机器学习数学通关指南——链式法则
前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 一、定义与公式 链式法则&a…...
Python爬虫实战:从零到一构建数据采集系统
文章目录 前言一、准备工作1.1 环境配置1.2 选择目标网站 二、爬虫实现步骤2.1 获取网页内容2.2 解析HTML2.3 数据保存 三、完整代码示例四、优化与扩展4.1 反爬应对策略4.2 动态页面处理4.3 数据可视化扩展 五、注意事项六、总结互动环节 前言 在大数据时代,数据采…...
DeepSeek 助力 Vue 开发:打造丝滑的单选按钮(Radio Button)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
【行业解决方案篇十八】【DeepSeek航空航天:故障诊断专家系统 】
引言:为什么说这是“航天故障终结者”? 2025年春节刚过,航天宏图突然官宣"DeepSeek已在天权智能体上线",这个搭载在卫星和空间站上的神秘系统,号称能提前48小时预判99.97%的航天器故障。这不禁让人想起年初NASA禁用DeepSeek引发的轩然大波,更让人好奇:这套系…...
谷歌浏览器更新后导致的刷新数据无法显示
这几天突然出现的问题,就是我做了一个网站,一直用Google展示,前两天突然就是刷新会丢失数据,然后再刷新几次吧又有了,之前一直好好的,后端也做了一些配置添加了CrossOrigin注解,然而换了edge浏览…...
nvidia-docker2 和 NVIDIA Container Toolkit 的区别及推荐
NVIDIA Docker 和 NVIDIA Container Toolkit 1. NVIDIA Docker 和 NVIDIA Docker2 nvidia-docker 是 NVIDIA 最早推出的工具,用于在 Docker 容器中启用 GPU 支持。它以独立守护进程的形式作为 Volume Plugin 存在,但与 Docker 生态系统的兼容性较差&am…...
游戏设计模式阅读 - 游戏循环
游戏与普通程序最大的不同点在于: 游戏不像其他大多数软件,游戏即使在没有玩家输入时也继续运行。 如果你站在那里看着屏幕,游戏也不会冻结。动画会持续播放。视觉效果继续闪烁。 如果运气不好的话,怪物会继续暴揍你的角色。 那么…...
(五)趣学设计模式 之 建造者模式!
目录 一、 啥是建造者模式?二、 为什么要用建造者模式?三、 建造者模式怎么实现?四、 建造者模式的应用场景五、 建造者模式的优点和缺点六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方…...
github 怎么创建一个私有repository 并从另外一台电脑拉取下来更新
1.github上新建一个repository 设置为private tips删除在这 点setting 然后往下拖动 会有个这里是用来删项目的 2.另外 一台电脑拉取这个repository的时候 需要配置 一个ssh key 这个key的内容生成参考本地电脑的生成 然后在这配置 2.1 生成 SSH 密钥(如果还没有…...
Spring Boot嵌入式服务器深度解析:从配置到调优的全方位指南
文章目录 引言一、嵌入式服务器核心原理1.1 架构设计特点1.2 主流服务器对比 二、嵌入式服务器配置实战2.1 基础配置模板2.2 HTTPS安全配置 三、高级调优策略3.1 线程池优化(Tomcat示例)3.2 响应压缩配置3.3 访问日志配置 四、服务器切换实战4.1 切换至U…...
DeepSeek-R1本地化部署的硬件要求
DeepSeek-R1本地化部署的硬件要求全解析 引言 DeepSeek-R1作为一款高效的AI推理模型,凭借其卓越的推理性能和灵活的训练机制,成为了春节期间的热议话题。 然而,要在本地成功部署DeepSeek-R1,尤其是其满载的 671B 参数版本&#…...
AGI觉醒假说的科学反驳:从数学根基到现实约束的深度解析
文章目录 引言:AGI觉醒论的核心迷思一、信息论视角:意识产生的熵约束1.1 香农熵的物理极限1.2 量子退相干的时间屏障二、数学根基:形式系统的自指困境2.1 哥德尔不完备定理的现代诠释三、概念解构:AGI觉醒假说的认知陷阱3.1 术语混淆的迷雾3.2 拟人化谬误的认知根源四、意识…...
CSS—盒模型(3分钟结合示例精通盒模型)
个人博客:haichenyi.com。感谢关注 1. 目录 1–目录2–概念3–内容4–内边距5–边框6–外边距7–类型 概念 在HTML中,每一个元素都可以看作一个矩形的盒子。如图 如上图所示,一个一个的矩形都可以堪称一个元素。矩形有大有小,边有…...
蓝桥杯 3.搜索
蓝桥杯 3.搜索 文章目录 蓝桥杯 3.搜索DFS回溯DFS剪枝记忆化搜索编程66-75 DFS回溯 回溯法简介 使用**DFS(深度优先搜索)**实现, DFS是一种遍历或搜索图, 树或者图像等数据结构的算法, 当然这个图, 树未必要存储下来(隐式处理就是回溯法)搜索树一般是排列型搜索树 (总节点个数…...
JQD武学思想
无意识,无我,空,无形, 刚柔相济,时机, 战胜对手,克服内心。不预测结果,自发反击。 简单直接的攻击,去除一切冗余的东西。 李小龙其实反复在解释这些概念,常…...
供应链管理-谈判:分配式谈判、整合式谈判、原则式谈判
一、分配式谈判 序号要点解释1特点双方在一定资源或利益范围内进行分配,一方所得即另一方所失,因此也被称为“零和谈判”。2适用场景资源有限、关系不是关键因素,以及需要快速决策的情况。例如,在竞争对手之间,如拍卖…...
C语言递归——青蛙跳台阶问题和汉诺塔问题
一、青蛙跳台阶问题 •题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上n级台阶总共有多少种跳法。 •问题分析: 青蛙跳台阶问题可以分成n个子问题。假设青蛙要跳上n级台阶,那么它的最后一步有两种选择&…...
relief=tk.RAISED详细介绍 relief是指定控件的边框样式
relieftk.RAISED 是在使用 Python 的 Tkinter 库创建图形用户界面(GUI)时,用于设置控件外观样式的一个参数设置,下面为你详细解释: 整体功能概述 在 Tkinter 里,relief 参数用于指定控件的边框样式&#x…...
基于ffmpeg+openGL ES实现的视频编辑工具-添加转场(九)
在视频编辑的广阔领域中,转场效果无疑是提升视频流畅性与观赏性的关键要素。巧妙运用转场,能够让不同视频片段之间的衔接更为自然,同时赋予视频独特的创意魅力。本文将深入探讨如何借助 ffmpeg 和 openGL ES 技术,在视频编辑工具中实现丰富多样的转场效果。 一、转场技术原…...
2025.2.21 日校内模拟赛总结(AC自动机, 期望,倍增)
文章目录 时间安排题解 时间安排 将近两个半小时才过 T 1 T1 T1,后面花一个半小时过了 T 2 T2 T2,最后半个小时写不出 T 3 T3 T3 暴力没有获得分数。 反思: T 1 T1 T1 这种题要敢于去猜结论打表,由于没有直接猜结论做了很长时…...
