首页/新闻资讯/正文详情

P1042 [NOIP 2003 普及组] 乒乓球

发布时间:2026/11/14 8:23:17 来源:云帆数科 栏目:资讯中心
P1042 [NOIP 2003 普及组] 乒乓球
记录153#includebits/stdc.h using namespace std; // 定义一个函数来模拟特定分制的比赛过程 // s: 完整的比赛记录字符串, target: 目标分数(11或21) void solve(string s,int target){ int w0,l0; // 记录当前局华华和对手的得分 for(char c:s){ if(cW)w; else if(cL)l; // 判断当前局是否结束一方达到目标分 且 分差2 if((wtarget||ltarget)abs(w-l)2){ coutw:l\n; w0; // 重置分数开始新的一局 l0; } } // 比赛记录结束后如果当前局还有比分哪怕没结束也要输出 coutw:l\n; } int main(){ ios::sync_with_stdio(false); cin.tie(0); string s,total; // 循环读取多行输入直到遇到结束符 E while(cins){ // 查找当前行是否有 E int poss.find(E); if(pos!string::npos){ // 如果找到了 E只截取 E 之前的部分拼接到总记录中 totals.substr(0,pos); break; // 遇到 E 后忽略之后的所有内容直接跳出循环 }else{ // 没有 E直接把这一行拼接到总记录中 totals; } } // 先输出 11 分制的结果 solve(total,11); // 两部分之间由一个空行分隔 cout\n; // 再输出 21 分制的结果 solve(total,21); return 0; }题目传送门https://www.luogu.com.cn/problem/P1042前言我是一名专注信奥赛CSP-J/S、NOIP的教练。如果你觉得这篇题解对你有帮助欢迎点击关注我的CSDN账号我会持续更新高质量算法解析。我深知算法思维的构建远比单纯通过题目更重要本系列题解不局限于AC代码的堆砌而是致力于拆解题目背后的逻辑链条与核心知识点备赛路上若遇瓶颈欢迎随时评论或私信我将甄选典型疑难问题通过视频讲解或撰写专项文章的形式为你提供深度答疑。核心解题思路这道题是一道非常经典的字符串处理与模拟问题。问题转化与输入处理题目要求处理多行字符串直到遇到字符 E 为止并且忽略 E 之后的所有内容。由于输入可能跨越多行我们需要将所有有效字符拼接成一个完整的字符串total。算法设计统一模拟函数题目要求分别输出 11 分制和 21 分制的比赛结果。两者的规则完全一致只是获胜的分数线不同。因此我们可以编写一个通用的solve函数通过传入目标分数target来复用逻辑。在模拟过程中我们需要维护当前局的比分w和l。每当遇到 W 或 L 时更新比分并检查是否满足结束条件一方分数达到 target 且分差大于等于 2。如果满足输出当前比分并重置分数如果不满足继续累加。最后无论最后一局是否结束都需要输出当前的比分。代码分块详细解释1. 核心逻辑通用比赛模拟函数// 定义一个函数来模拟特定分制的比赛过程 // s: 完整的比赛记录字符串, target: 目标分数(11或21) void solve(string s, int target){ int w0, l0; // 记录当前局华华和对手的得分 for(char c : s){ if(c W) w; else if(c L) l; // 判断当前局是否结束一方达到目标分 且 分差2 if((w target || l target) abs(w - l) 2){ cout w : l \n; w 0; // 重置分数开始新的一局 l 0; } } // 比赛记录结束后如果当前局还有比分哪怕没结束也要输出 cout w : l \n; }详细分析这是本题的灵魂所在。比分更新遍历字符串中的每个字符如果是 W 则华华得分如果是 L 则对手得分。结束条件判定if((w target || l target) abs(w - l) 2)是乒乓球比赛规则的核心体现。必须同时满足两个条件1. 有人先打到了目标分11分或21分2. 两人的分差至少为 2 分防止出现 11:10 这种未拉开差距的情况。重置与输出一旦满足结束条件立刻输出当前比分并将w和l清零表示下一局比赛开始。处理未结束的最后一局循环结束后w和l中可能还残留着最后一局未打完的比分例如 1:1 或 2:1。根据题目要求必须将这局未完成的比分也输出。2. 主函数多行输入拼接与 E 字符处理int main(){ ios::sync_with_stdio(false); cin.tie(0); string s, total ; // 循环读取多行输入直到遇到结束符 E while(cin s){ // 查找当前行是否有 E int pos s.find(E); if(pos ! string::npos){ // 如果找到了 E只截取 E 之前的部分拼接到总记录中 total s.substr(0, pos); break; // 遇到 E 后忽略之后的所有内容直接跳出循环 } else { // 没有 E直接把这一行拼接到总记录中 total s; } }详细分析这部分处理了题目中比较棘手的输入格式。多行拼接使用while(cin s)循环读取每一行并将它们拼接到total字符串中。E 字符截断使用s.find(E)检查当前行是否包含结束符。如果找到了利用s.substr(0, pos)截取 E 之前的有效部分拼接到total然后立刻break跳出循环完美实现了“忽略 E 之后的所有内容”的要求。3. 调用模拟函数与格式控制// 先输出 11 分制的结果 solve(total, 11); // 两部分之间由一个空行分隔 cout \n; // 再输出 21 分制的结果 solve(total, 21); return 0; }详细分析主函数的最后部分非常简洁。先调用solve(total, 11)输出 11 分制下的所有局比分然后输出一个换行符作为两部分结果的分隔最后调用solve(total, 21)输出 21 分制的结果。核心逻辑总结表代码模块核心变量/操作精炼作用解决的痛点多行拼接while(cin s)与total s将跨行的比赛记录合并为一个完整字符串解决了输入数据被换行符打断的问题便于统一处理E 字符截断s.find(E)与substr定位结束符并截取有效数据严格遵守题目“忽略 E 之后所有内容”的特殊要求比分更新if(cW) w遍历字符串并实时累加双方得分将字符序列转化为具体的比赛分数结束判定(wtarget || ltarget) abs(w-l)2检查是否满足获胜条件完美还原了乒乓球“至少领先2分才能获胜”的复杂规则局数重置w0; l0一局结束后清零当前比分确保下一局比赛从 0:0 开始互不干扰末局输出cout w : l在循环结束后输出残留比分解决了最后一局比赛可能未打完但仍需输出比分的边界问题

相关推荐

Java手动实现JSON序列化框架的核心原理与实践
Java手动实现JSON序列化框架的核心原理与实践

1. 为什么需要手动实现JSON序列化框架 在Java生态中,JSON序列化框架早已不是新鲜事物。FastJSON、Jackson、Gson等成熟方案各具特色,但手动实现一个精简版的JSON序列化器仍然是每个Java开发者值得尝试的练习。这就像厨师虽然可以用现成的调味料&#xff… · 2026/11/14 8:23:32

Claude Code与Codex CLI:AI编程工作流的范式迁移指南
Claude Code与Codex CLI:AI编程工作流的范式迁移指南

1. 项目概述:这不是两个工具的对比,而是一场开发工作流的代际迁移 “Claude Code & OpenAI Codex 完全使用指南”这个标题里藏着一个被多数人忽略的关键事实:它表面是讲两个代码助手,实则在描述两种截然不同的AI编程范式——一… · 2026/8/25 22:41:27

还在为外语游戏和视频发愁?Translumo让屏幕翻译变得如此简单
还在为外语游戏和视频发愁?Translumo让屏幕翻译变得如此简单

还在为外语游戏和视频发愁?Translumo让屏幕翻译变得如此简单 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你… · 2026/9/23 3:51:27

郑州久途电工证过期了不知道怎么复审?电子证书查询攻略来了
郑州久途电工证过期了不知道怎么复审?电子证书查询攻略来了

郑州久途电工证过期了不知道怎么复审?电子证书查询攻略来了 证书过期了不知道怎么复审延期?这是很多特种作业持证人遇到的现实问题,尤其是像郑州久途电工证这类高需求证书,一旦过期不仅影响日常工作,还可能面临罚款或被暂停从业资格。现在,随着应急管理… · 2026/11/14 12:00:11

东莞特种工最新招聘考前押题攻略:证书过期了不知道怎么复审延期?
东莞特种工最新招聘考前押题攻略:证书过期了不知道怎么复审延期?

东莞特种工最新招聘考前押题攻略:证书过期了不知道怎么复审延期? 证书过期了不知道怎么复审延期?这事儿在东莞特种工圈子太常见了。很多工人拿着本该有效的证书,结果一上项目就被叫停,不是证件过期就是年审没做。更糟的是,不少考生连考前押题都不了解,… · 2026/11/14 12:00:11

怎么考电工证和叉车证模拟考试题库
怎么考电工证和叉车证模拟考试题库

证书过期了不知道怎么复审延期?电工证和叉车证电子证书怎么搞 证书过期了不知道怎么复审延期?现在市场上电工证和叉车证的电子证书查询和复审流程越来越规范,很多人却因为不了解流程而错过操作时间。特别是从事特种作业的你,如果证过期了,不仅影响工作,… · 2026/11/14 12:00:11

高级电工证社保局补贴多久拿证?外省证能转吗?河南人必须知道
高级电工证社保局补贴多久拿证?外省证能转吗?河南人必须知道

高级电工证社保局补贴多久拿证?外省证能转吗?河南人必须知道 之前考的证在外省能不能转过来?这可能是很多河南电工最头疼的问题。现在不少人在外地打工,考的电工证可能不在本地,回来后能不能用?能不能申请社保局补贴? 多久拿证… · 2026/11/14 12:00:11

经开区特种工报名:没有证就别想找工作,这证全国通用
经开区特种工报名:没有证就别想找工作,这证全国通用

经开区特种工报名:没有证就别想找工作,这证全国通用 你是不是正在找工作,却因为没有特种作业证被拒?别急,经开区特种工报名正在火热进行中,这个证不仅在本地通用, 全国通用… · 2026/11/14 12:00:11

电工证怎么考研报名的,考前押题怎么用才能高效上岸?
电工证怎么考研报名的,考前押题怎么用才能高效上岸?

电工证怎么考研报名的,考前押题怎么用才能高效上岸? 工地太忙根本没时间复习考试,你是不是也经常加班到深夜,脑子里全是工程图纸和施工进度?很多人觉得考电工证只是走个流程,但真正想往上走, 考研 几乎是唯一的晋升通道。但问题是,… · 2026/11/14 11:59:11

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/13 22:30:50

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/13 5:40:45

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/12 23:27:43

有初级电工证怎么工作 2026河南最新政策怎么应对
有初级电工证怎么工作 2026河南最新政策怎么应对

有初级电工证怎么工作 2026河南最新政策怎么应对 之前考的证在外省能不能转过来?这个问题我每天被问上百次。2026年河南最新政策对证书跨省转移有了明确说明,特别是南阳市的从业者,需要特别关注。… · 2026/11/14 0:00:31

电工证过期了不知道怎么复审?考电工证自学书+官方报名入口全攻略
电工证过期了不知道怎么复审?考电工证自学书+官方报名入口全攻略

电工证过期了不知道怎么复审?考电工证自学书+官方报名入口全攻略 证书过期了不知道怎么复审延期?很多人遇到这种情况,要么是工作太忙没时间处理,要么是不知道具体流程,导致证书失效,影响工作和项目进展。其实复审并不难,关键是要找准官方报名入口,掌… · 2026/11/14 0:00:31

为什么要低压电工证实操考试考什么
为什么要低压电工证实操考试考什么

为什么低压电工证值不值得考?别再被中介骗了 你是不是也经常看到网上有人在问“低压电工证到底值不值得考”?或者在找报名点时,担心被中间人骗钱?这些问题,我懂,我也经历过。作为一名在应急管理行业摸爬滚打多年的从业者,我深知低压电工证不仅是一个从… · 2026/11/14 0:00:31

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 6:12:21

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 6:11:51

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 22:31:30

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码