acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 资讯
  • 竞赛
  • 讨论
  • 团队
  • 商城
登录
注册
图标
全部板块
图标
学习讨论
图标
站务中心
图标
灌水池塘
最新回复
最新发布
精华帖
  • 【帮助】ACGO 社区指南精华置顶

    🎯 ACGO 社区指南 欢迎来到 ACGO 社区!本文档将帮助你快速了解社区规则、赛事体系与常用资源,助你成为更优秀的算法选手。 > ⚠️ 重要提示 > 所有用户应遵守社区规则,共同维护公平、健康的学习环境。违规行为将按章处理。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 📌 社区核心守则 类别 核心规则 重要链接 账号安全 妥善保管密码,不在公共设备保持登录 社区发言 禁止人身攻击、垃圾广告、恶意灌水 发帖规范 赛事诚信 禁止作弊、代刷、公开赛题答案 违规处罚细则 纠纷处理 建议使用「拉黑」功能,不公开引战 团队安全运营 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 🏆 赛事 📖 赛事规则 * 巅峰排行榜规则介绍 * 排位分机制揭秘 * 公开赛申请指南 ⚖️ 违规处理机制 处罚标准: * 🚫 累计违规 > 3次:禁言30天 + 扣除竞赛分 * ⚠️ 累计违规 = 3次:禁言30天 * 📝 累计违规 < 3次:不予公示 重要说明: * 仅对挑战赛与排位赛前100名进行统一作弊核查 * 欢乐赛暂不纳入常规作弊核查范围 * 禁止在社区内公开发布天梯赛题目答案 * 对处罚有异议可通过[官方申诉渠道]申请复核 🙋 审核志愿者申: * 私信@AC君 ,需具备 CSP-J 复赛一等奖及以上资质。 相关规则: ACGO官方赛事公平审核规则 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 💻 题库系统 🔧 使用指南 * 题目纠错:点击标题下方“题目纠错”按钮提交反馈,满10个有效纠错即可获得「BUG超度大师」勋章 * 题目申请:目前不支持个人题目申请进入官方题库 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 💬 讨论区指南 📝 内容创作规范 格式指南 * Markdown 语法教程 * LaTeX 数学公式语法 内容质量 * 提问的智慧 * 题解编写技巧 * 知识点精华贴 AI 工具使用 * AC助手使用指南 > 💡 创作建议:鼓励分享解题思路与算法分析,而非单纯发布答案代码。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 👥 团队功能 🔄 团队管理 * 人员管理:团队安全运营公告与重要提醒 * 人数升级:通过私信联系 @AC君 申请 * 团队推荐:如何让你的团队登上推荐首页 * 商务合作:查看 ACGO团队TO B合作文档 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 🛠️ 实用功能 🏅 勋章系统 * 勋章认证入口 * 部分勋章为趣味性质,可通过多次尝试获得 * 每累计10个有效题目纠错可获得「BUG超度大师」勋章 💻 编程环境 * Python IDE: Python 3.6 * C++ IDE: GCC 9.3.0 🐞 问题反馈 BUG反馈请提供以下信息: 1. 问题页面链接 2. 详细操作步骤 3. 浏览器版本信息 4. 错误截图或提示 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ❓ 常见问题 Q:账号被盗怎么办? A:立即修改密码,检查是否有在公共设备未退出的情况。 Q:有人模仿我的名字怎么办? A:如对方进行欺诈或骚扰,请保存证据并通过举报功能反馈。 Q:「码上开聊」栏目如何参与? A:门槛为 CSP-J 复赛及以上奖项。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 📚 资源中心 * 站务汇总 * 团队安全运营 * 知识点精华贴 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 最后更新:2025年11月27日 如有变更,以社区最新公告为准。

    userId_undefined
    AC君
    倔强青铜管理员
    7590阅读
    682回复
    520点赞
  • ACGO校赛平台使用指南精华

    ACGO平台为校园竞赛提供专业的OJ(Online Judge)系统支持,助力校园编程竞赛的顺利举办。平台不仅提供稳定的技术保障,还支持多样化的赛制与灵活的题目配置,满足各类竞赛需求。此外,首页公开校赛可以由ACGO提供竞赛奖品的赞助支持,为参赛者增添额外激励。 核心功能概述 赛事管理功能 ACGO平台提供一系列专业的赛事管理工具,包括但不限于: * 封榜功能:实时隐藏排名,增加比赛悬念。 * 重新判题(Rejudge):支持对已提交代码进行重新评测。 * 批量导入报名信息:简化报名流程,提升管理效率。 * 赛后代码查重:有效检测代码重复率,维护比赛公平性。 * 导出比赛代码:便于赛后分析与存档。 高性能与可扩展性 ACGO平台采用弹性伸缩的服务器架构,具备强大的并发处理能力,可支持超过万级用户同时在线提交代码,确保比赛期间系统稳定运行。 多赛制支持 平台全面兼容ACM、OI、IOI三种主流编程竞赛赛制,能够满足不同赛事的需求,为学校提供多样化的竞赛形式选择。 题目配置灵活 赛事组织者既可从ACGO平台的丰富题库中筛选题目,也可根据需求自定义题目,灵活适配比赛主题与难度要求。 申请与使用流程 学校如需使用ACGO平台举办编程竞赛,可添加AC君QQ(QQ号:122446),或直接私信@AC君申请开办校赛 注意事项: * 建议提前提交申请,以确保赛事筹备时间充足 * 平台服务时间为每周一至周五的09:30至18:30 ACGO平台致力于为学校提供高效、稳定的竞赛支持,助力编程人才的培养与选拔。欢迎各学校积极申请,共同打造高质量的编程竞赛环境!

    userId_undefined
    AC君
    倔强青铜管理员
    28051阅读
    146回复
    279点赞
  • 规范使用 Markdown 排版精华

    关于使用 MARKDOWN 和 LATEX 对文章进行排版时的一些建议 > ACGO 上线距今将近两年了,可以看到越来越多的用户开始在 ACGO 社区内发布优质题解和原创文章,社区的内容也愈来愈丰富。但讨论区和题解区仍有提升的空间,本文旨在对文章内容排版方式进行倡导,提升普通用户的阅读体验,希望大家可以尽量按照本文所规定的方式来对文章进行格式化。 前置知识: 1. 熟悉并掌握 Markdown 文本格式的基本语法。 2. 熟悉并了解 LaTeX\LaTeXLATE X 数学公式的基本语法。 3. 了解并认识一些常见的数学表示的写法和读法。 如果对 Markdown 和 LaTeX\LaTeXLATE X 语法有任何问题,请参考文章 ACGO 社区资源汇总 中的「格式手册」部分。 本文参考:洛谷 - 如何用 Markdown 和 LaTeX 写一篇排版整齐的题解?。 第一部分:基本格式要求 1.1 必要注意事项 以下是对文档的基本要求,下列要求适用于任何格式的文本文档: 1. 在每句话的末尾应当添加合适的标点符号; 2. 在使用标点符号时,请务必区分全角符号和半角符号。若语句为汉语,应当使用全角标点符号,否则应当使用半角标点符号; 3. 中文与西文字符或公式之间请以一个半角空格隔开,但标点符号与西文字符或公式间不要加空格; 4. 无论在何时,禁止使用拼音缩写作为标识符。 5. LaTeX\LaTeXLATE X 前后也需要空格,但公式不需要与标点符号空格。 以下是常见的错误示范: 1. 因此,我们只需要输出两个数的乘积即可(违反 1.1.1) 2. To be or not to be, that is a question。(违反 1.1.2) 3. 这就是一个典型的错误Hack数据,当N=105N=10^5N=105 时,该代码会TLE。(违反 1.1.3) 4. 这道题非常的简单,TJ 如下。(违反 1.1.4) 经过修正和格式化的示例如下: 1. 因此,我们只需要输出两个数的乘积即可。 2. To be or not to be, that is a question. 3. 这就是一个典型的错误 Hack 数据,当 N=105N=10^5N=105 时,该代码会TLE。 4. 这道题非常的简单,题解如下。 1.2 常导性建议 1. 文章不应该出现大量的错别字。每位用户在撰写完文章后都有义务重读一遍文章保证文章的可读性。由于 AI 的兴起,使用 AI 人工智能助手来帮助用户审阅文章也是一个不错的选择。 2. 对于题解/文章中的结论,请在必要时给出证明过程。 3. 对于一些难的知识点,必要时可以给出一些外链来帮助读者阅读。 以下是一些错误的示范: 1. 首先,我们可以申明一个变量来记录答案。(违反 1.1.2) 2. 通过“瞪眼法”可得,答案应该为 A×B/gcd⁡(A,B)A \times B / \gcd(A, B)A×B/gcd(A,B)。(违反 1.2.2) 正确的示范如下: 1. 首先,我们可以声明一个变量来记录答案。 2. 根据“XXXX”定理可得,答案应该是两个数的公约数,因为…… 第二部分:关于 MARKDOWN 格式的一些建议 2.1 使用 MARKDOWN 排版的注意事项 通过 Markdown 语法,我们可以很轻松的控制标题大小和文章的排版,但在排版中,应当注意以下事项: 1. 标题是引导文章结构的,不是用来强调的;因此请不要用标题把字弄的很大,达到强调的目的; 2. 适当使用文本加粗,但请不要使用大量使用。过量的文本加粗反而会适得其反,让读者难以分辨文章的重点; 3. 在对文字进行加粗时,请不要对标点符号进行加粗。若被加粗的句子是一个完整的句子,则忽略此条目。 以下是常见的错误示范(为更好展示 Markdown 语法,这里使用行内代码的方式来展现): 1. # 这是一道非常水的题!!!(违反 2.1.1) 2. **Lorem ipsum dolor sit amet, consectetur 此处省略两百字 officia deserunt mollit anim id est laborum.**(违反 2.1.2) 3. 因此对于所有的 $N$,我们应当提前**判断 $N$ 的奇偶性。**(违反 2.1.3) 经过修正和格式化的示例如下: 1. 这是一道非常水的题! 2. Lorem ipsum dolor sit amet, consectetur 此处省略两百字 officia deserunt mollit anim id est laborum. 3. 因此对于所有的 $N$,我们应当提前**判断 $N$ 的奇偶性**。 2.2 使用 MARKDOWN 的一些好习惯 在使用有序列表或无序列表的时候,如果有需要,可以适当对添加列表标题并对标题名称进行加粗。如下格式: 可以将其改成: PS:请不要把冒号符号加粗,这会影响渲染。 第三部分:代码块与代码可读性的建议 在提供 AC 代码的时候,请务必使用 Markdown 中的代码块公式语法将代码包裹起来。 3.1 请标记代码语言 与此同时,在使用代码框时,请标上代码的语言,以正确地渲染代码。 未标记语言可能导致渲染错误: ``` #include <iostream> using namespace std; ``` 正确的渲染效果应当如下: 3.2 代码变量和注释的规范 为保证代码的可读性,请不要使用拼音缩写或无意义的缩写作为变量的名称。如使用,请务必在旁边对变量的作用作出合适的注解。 以下是一个错误的示范: 正确的示范: 第四部分:关于 LATEX 的使用建议 以下是本文的重点,也是高发病区。 4.1 什么东西应当被放在公式中? 并不是一切东西都该放在公式中的,滥用公式可能会导致排版混乱。公式也不应该喧宾夺主。 下面是一个错误的样例: 关于 SPFASPFASPFA,它死了。我们应当使用 DijkstraDijkstraDijkstra 算法。 正确的写法如下两个参考: 1. 关于 SPFA,它死了。我们应当使用 Dijkstra 算法。 2. 关于 SPFA\mathtt{SPFA}SPFA,它死了。我们应当使用 Dijkstra\mathtt{Dijkstra}Dijkstra 算法。 所以什么东西不该放在公式中呢? 1. 中文不应该出现在 LaTeX\LaTeXLATE X 公式中; 2. 算法名、人名等非公式内容一般不出现在公式中。若要使用,请选择合适的字体,不要造成排版混乱即可。一般可以选用 \mathtt{Text} 作为首选。 3. 行内的程序代码(包括程序函数名称,变量类型,完整语句等)应该用行内代码框表示,而不放在公式中。 4.2 正确使用字体 请务必使用 Roman 字体表示函数和运算。LaTeX\LaTeXLATE X 已经预先内置了非常多常用的函数和运算,我们可以直接使用。 下面是一个错误的例子: lcm(x,y)=x×ygcd(x,y)lcm(x,y)=\frac{x \times y}{gcd(x,y)} lcm(x,y)=gcd(x,y)x×y 正确的写法应该是这样的: lcm⁡(x,y)=x×ygcd⁡(x,y)\operatorname{lcm}(x,y)=\frac{x \times y}{\gcd(x,y)} lcm(x,y)=gcd(x,y)x×y 简单而言: 1. 对于 LaTeXLaTeXLaTeX 已经内置的函数,可以通过使用反斜杠(\)来将函数格式化。例如 gcd,请写成 \gcd。 2. 对于 LaTeXLaTeXLaTeX 没有的函数,请将函数名称用 \operatorname{} 包裹。 4.3 公式不是写代码的地方 LaTeX\LaTeXLATE X 是一个表示严谨公式的地方。因此,请不要在非代码区域使用任何程序设计语言的表示方式。 下面是一些错误的示范: a=x%px++a==ba<=ba<<15e7a=x\%p \\ x++ \\ a==b \\ a <= b \\ a<<1 \\ 5e7 a=x%px++a==ba<=ba<<15e7 正确的表示方法如下: a=x mod px←x+1a=ba≤ba×25×107a=x \bmod p \\ x \gets x+1 \\ a=b \\ a \leq b \\ a \times 2 \\ 5 \times 10^7 \\ a=xmodpx←x+1a=ba≤ba×25×107 此外,对于数列或数组而言,请不要使用这样的方式来表示: dp[i]=dp[i−1]+max(dp[i−2],dp[i−3]+dp[i−4])dp[i] = dp[i-1] + max(dp[i-2], dp[i-3] + dp[i-4]) dp[i]=dp[i−1]+max(dp[i−2],dp[i−3]+dp[i−4]) 更严谨的表示方法如下: dpi=dpi−1+max⁡(dpi−2,dpi−3+dpi−4)dp(i)=dp(i−1)+max⁡(dp(i−2),dp(i−3)+dp(i−4))dp_i = dp_{i-1} + \max(dp_{i-2}, dp_{i-3} + dp_{i-4}) \\ dp(i) = dp(i-1) + \max(dp(i-2), dp(i-3) + dp(i-4)) dpi =dpi−1 +max(dpi−2 ,dpi−3 +dpi−4 )dp(i)=dp(i−1)+max(dp(i−2),dp(i−3)+dp(i−4)) 4.4 其他排版建议 1. 特殊符号:不要使用输入法的插入特殊符号功能来插入特殊符号,LaTeX\LaTeXLATE X 提供了许多常见的特殊符号,包括但不限于希腊字母和数学特定的一些符号。 2. 行内公式:对于像 ∑ ∏\sum\ \prod∑ ∏ 等巨运算符,放在行内可能会略显紧凑(例如:∑1nai\sum_1^n a_i∑1n ai )。在合适的情况下,请尽量不要在行内使用这些巨型运算符。 3. 分数的使用:在某些情况下,使用 \frac 来表示分数显得太小(例如:12\frac{1}{2}21 ),如条件允许,尽量使用 \dfrac 来表示分数来维持文本的可读性(例如:12\dfrac{1}{2}21 )。

    userId_undefined
    Macw07
    出道萌新尊贵铂金USACO出题人AC狗饲养员
    3706阅读
    199回复
    107点赞
  • Acgo 竞赛积分系统精华

    概述 新版 Acgo\tt{Acgo}Acgo 竞赛分系统参考了 AtCoder\tt{AtCoder}AtCoder 平台的 AtCoder Rating System ver.1.00\tt{AtCoder\ Rating\ System\ ver. 1.00}AtCoder Rating System ver.1.00[1]。 该积分系统基于 Logistic Distribution\tt{Logistic\ Distribution}Logistic Distribution(或 Sigmoid Function\tt{Sigmoid\ Function}Sigmoid Function),类似于 Elo\tt{Elo}Elo 评分系统,但进行了许多修改。 新版竞赛分系统上线后,用户参加 Acgo\tt{Acgo}Acgo 的所有比赛将会有 Rated\tt{Rated}Rated 和 Unrated\tt{Unrated}Unrated(即「评分」与「不评分」)两种状态。 正常情况下参加比赛的选手状态为 Rated\tt{Rated}Rated,状态被评为 Unrated\tt{Unrated}Unrated 包含但不仅限于以下情况: 1. 参加本场比赛前竞赛分超过本场比赛的 Rated\tt{Rated}Rated 分数线限制(RATEDBOUNDRATEDBOUNDRATEDBOUND); 2. 比赛中作弊,被取消比赛成绩; 3. 本场比赛因不可抗力因素导致无法正常进行的将参与本场比赛的所有用户设置为 Unrated\tt{Unrated}Unrated。 对于 Rated\tt{Rated}Rated 的选手,在每场比赛中,会获得一个「表现分」。这个值代表了你在比赛中的表现如何。 粗略地说,你的每场比赛后的竞赛分为「表现分」的加权平均值(最近的比赛权重更高)减去 f(x)f(x)f(x)(xxx 为 Rated\tt{Rated}Rated 比赛的参与次数),其中 f(1)=1200f(1) = 1200f(1)=1200,且 fff 随参加的 Rated\tt{Rated}Rated 比赛的次数增加而逐渐减小并趋于零。 这意味着如果你持续获得 XXX 的表现分,你的竞赛分将从 X−1200X−1200X−1200 开始,并逐渐趋近于 XXX。 请不要担心在第一场比赛中获得很低的竞赛分,如果你参加更多比赛,分数很可能会迅速上升。当参加 101010 场比赛后,你的竞赛分将会非常接近于你的真实实力。 计算表现分 在系统内部有两种类型的「表现分」:PerfPerfPerf 和 RPerfRPerfRPerf(修正后的 PerfPerfPerf) 。 首先,对于每个参赛选手,我们计算出他们的 APerfAPerfAPerf(平均表现分)。 令 Perf1,Perf2,⋯ ,PerfkPerf_1, Perf_2, \cdots, Perf_kPerf1 ,Perf2 ,⋯,Perfk 为一位参赛选手的历史 PerfPerfPerf。其中 Perf1Perf_1Perf1 是最近参加的一场比赛,PerfkPerf_kPerfk 是最早参加的一场比赛,这位选手的 APerfAPerfAPerf 被定义为: APerf=∑i=1kPerfi×0.9i∑i=1k0.9i\begin{equation} APerf = \frac{\sum_{i=1}^{k}Perf_i \times 0.9^i}{\sum_{i=1}^{k}0.9^i} \end{equation} APerf=∑i=1k 0.9i∑i=1k Perfi ×0.9i 所有第一次参与 Acgo\tt{Acgo}Acgo 的 Rated\tt{Rated}Rated 比赛的选手的 APerfAPerfAPerf 将会被设置为 CenterCenterCenter。 CenterCenterCenter 和每一场 Rated\tt{Rated}Rated 比赛的 RATEDBOUNDRATEDBOUNDRATEDBOUND(即 Rated\tt{Rated}Rated 上限)有关。 Center=RATEDBOUND×0.4Center = RATEDBOUND \times 0.4Center=RATEDBOUND×0.4。 令 nnn 为一场比赛中所有的 Rated\tt{Rated}Rated 的参赛选手的数量,令 APerfiAPerf_iAPerfi 为第 iii 个选手的 APerfAPerfAPerf。那么比赛的 Rated\tt{Rated}Rated 榜单中,排行第 rrr 名选手的 PerfPerfPerf 被定义为满足以下公式的唯一的 XXX: ∑11+6.0(X−APerfi)/400.0=r−0.5\begin{equation} \sum\frac{1}{1 + 6.0^{(X - APerf_i) / 400.0}} = r - 0.5 \end{equation} ∑1+6.0(X−APerfi )/400.01 =r−0.5 这个 XXX 可以使用二分来计算得出。 请注意,以上的排名是所有并列名次的平均值。例如,如果有四个人并列第 333 名至第 666 名,那么这些人的排名为 4.54.54.5。 除此之外,为了避免在第一场比赛中的「表现分」方差过小,Acgo\tt{Acgo}Acgo 使用新竞赛分系统的第一场比赛(这里指 排位赛#4)的表现值会被放大处理,具体如下: Perf=(Perf−Center)×1.5+Center\begin{equation} Perf = (Perf - Center) \times 1.5 + Center \end{equation} Perf=(Perf−Center)×1.5+Center 最终,对于每个用户其 RPerfRPerfRPerf 使用以下方式计算: RPerf=min⁡{Perf,RATEDBOUND+100}\begin{equation} RPerf = \min{\{Perf, RATEDBOUND + 100\}} \end{equation} RPerf=min{Perf,RATEDBOUND+100} 其中 RATEDBOUNDRATEDBOUNDRATEDBOUND 对于不同的比赛是不一样的,每场比赛的 RATEDBOUNDRATEDBOUNDRATEDBOUND 会在竞赛说明中给出。 计算竞赛分 定义 FFF 为: F(n)=∑i=1n0.81i∑i=1n0.9i\begin{equation} F(n) = \frac{\sqrt{\sum_{i=1}^{n} 0.81^i}}{\sum_{i=1}^n 0.9^i} \end{equation} F(n)=∑i=1n 0.9i∑i=1n 0.81i 定义 fff 为: f(n)=F(n)−F(∞)F(1)−F(∞)×1200\begin{equation} f(n) = \frac{F(n) - F(\infin)}{F(1) - F(\infin)} \times 1200 \end{equation} f(n)=F(1)−F(∞)F(n)−F(∞) ×1200 定义 ggg 为: g(X)=2.0X800\begin{equation} g(X) = 2.0^{\frac{X}{800}} \end{equation} g(X)=2.0800X 该函数可以给更好的表现赋予更多的权重。因此,极好表现与较好表现之间的差异会非常大,而重大失误与一般失误之间的差异则不会那么大。 这样可以使得当参赛者在比赛中打出了超出水平的发挥时,会增加更多的竞赛分;当参赛者在比赛中打出了远低于自己水平的表现分时,不会减少太多的竞赛分; 令 RPerf1,RPerf2,⋯ ,RPerfkRPerf_1, RPerf_2, \cdots, RPerf_kRPerf1 ,RPerf2 ,⋯,RPerfk 为一位参赛选手的历史 RPerfRPerfRPerf,其中 RPerf1RPerf_1RPerf1 为当场比赛的 RPerfRPerfRPerf。那么本场比赛结束后,其竞赛分为: Rating=g−1(∑1kg(RPerfi)×0.9i∑1k0.9i)\begin{equation} Rating = g^{-1}(\frac{\sum_1^k g(RPerf_i) \times 0.9^i}{\sum_1^k 0.9^i}) \end{equation} Rating=g−1(∑1k 0.9i∑1k g(RPerfi )×0.9i ) 然后考虑公式 (6)(6)(6) 的 fff 函数对竞赛分的影响,定义以下函数[2]: mapRating(r)={400exp⁡(400−r400)r≤400rr>400\begin{equation} mapRating(r) = \begin{cases} \frac{400}{\exp{(\frac{400 - r}{400})}} &{r \le 400}\\ r & {r \gt 400}\\ \end{cases} \end{equation} mapRating(r)={exp(400400−r )400 r r≤400r>400 最终 RatingRatingRating 计算出来为: TrueRating=mapRaing(Rating−f(n))\begin{equation} TrueRating = mapRaing(Rating - f(n)) \end{equation} TrueRating=mapRaing(Rating−f(n)) 其中 nnn 为已经参加的 Rated\tt{Rated}Rated 的比赛场次(包括本场)。 本文档的版本记录 * 10/29/2024 Ver. 1.00: 第一版。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1. AtCoder Rating System ver.1.00\tt{AtCoder\ Rating\ System\ ver. 1.00}AtCoder Rating System ver.1.00 ↩︎ 2. AtCoderのレート計算式\tt{AtCoderのレート計算式}AtCoderのレート計算式 ↩︎

    userId_undefined
    アイドル
    7591阅读
    213回复
    180点赞
  • 关于限制使用人工智能工具的新规定精华

    > This article cites the latest regulations of Codeforces 关于限制使用人工智能工具的新规定 看起来神经网络正在创造技术奇迹。不久前,它们在我们的比赛中甚至连最简单的任务都难以完成,但现在它们正在达到无法忽视的新高度。 我们有理由相信这一进步将继续下去,并且可以期待神经网络在编程竞赛领域中取得进一步的发展。 因此,我们明确限制使用基于 AI 的系统(例如 GPT、Gemini、Gemma、Llama、Claude 等模型)来解决编程问题。 不过,我们也认识到 AI 可以作为学习和编程辅助的有用工具,因此我们希望为其使用设立明确的界限。 本规则的适用范围: 此规则严格适用于比赛期间的参赛者。如果一轮比赛是非排位评级的的,并在比赛公告或规则中明确指出,该规则也将适用。在比赛之外,AI 工具可以自由用于练习、学习或非竞赛性质的问题解决。 允许的 AI 使用方式: * 翻译题目:你可以使用基于 AI 的系统来翻译题目,但必须确保系统不对题目进行解释或总结。仅允许直接翻译。 * 代码补全工具(例如 Copilot):可以使用基于 AI 的代码补全系统,但仅限于语法和小的代码建议。不得用于生成解决问题的核心逻辑或算法。 禁止的 AI 使用方式: * 你不得将题目、题目摘要、任何部分或子问题输入 AI 系统,来获取现成的代码或解决方案的自然语言描述。 * 禁止使用 AI 来根据系统反馈诊断或解决错误(例如,在收到“测试 1 运行时错误”等判定后,不得请求 AI 系统帮助修复问题)。任何替代你自身推理的 AI 辅助问题理解、逻辑创建或决策的使用方式都是严格禁止的。 正确使用 AI 的指导: * 允许使用 AI 生成简单的模板代码(如输入/输出函数)。 * 严禁依赖 AI 生成算法逻辑或关键解决方案。 * 如果你不确定某种 AI 使用方式是否违反规则,请咨询比赛 出题人/ AC君。 作弊检测: 这一规则使我们可以像 AI 时代之前一样继续识别作弊行为。我们也会通过检测某一位用户的历史提交记录的代码风格变化并比对比赛时的代码来做出进一步裁决。更进一步地,如果两位参赛者的代码相同,并且在比赛前这些代码没有公开在互联网上,这将被视为作弊的证据。这一方法确保 AI 工具不会被不当使用以规避个人努力,维护公平竞争的完整性。 我们将密切关注 AI 技术的发展,并在平衡公平竞争与 AI 辅助学习的优势时,适时调整规则。

    userId_undefined
    Macw07
    出道萌新尊贵铂金USACO出题人AC狗饲养员
    1405阅读
    73回复
    62点赞
  • 官方题解 | 挑战赛#13精华

    本次题目的总体题目难度如下,各位选手可以借此评估一下自身的技术水平 题目编号 题目名称 题目难度 T1 CityWalk 入门 T2 集合操作 普及- T3 乌尔达哈城市分布图 普及- T4 恰好 普及/提高- T5 符文锁 普及/提高- T6 集合操作2 普及/提高- 题解 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ CITYWALK 题目大意 给予一个H×WH \times WH×W的二维矩阵,给予两个顶点(x1,y1)(x_1,y_1)(x1 ,y1 )与(x2,y2)(x_2,y_2)(x2 ,y2 ),要求求出两个顶点的曼哈顿距离。 题解思路 本题本质为求曼哈顿距离的问题,在输入矩阵的时候记录两个顶点的坐标,然后计算两个坐标的曼哈顿距离即可。 曼哈顿距离计算公式 = ∣x1−x2∣+∣y1−y2∣|x_1 - x_2| + |y_1 - y_2|∣x1 −x2 ∣+∣y1 −y2 ∣ 参考代码 集合操作 题目大意 我们需要实现一个集合,支持以下操作: 1. 插入元素:将元素 x 加入集合。 2. 删除元素:从集合中删除 c 个 x,如果 x 的数量不足 c,则删除所有 x。 3. 查询差值:输出集合中最大值与最小值的差。 题解思路 本道题采用multiset解决更为方便。 - oiwiki中对于multiset介绍 1. 选择合适的数据结构: 我们可以选择一种特殊的数据结构multiset来储存元素,该数据结构的各项函数与set的操作几乎一致,并且支持保存重复元素与自动排列,可以最高效的获取最大值与最小值。 2. 操作实现: * 插入操作:直接将元素插入 multiset。 * 删除操作:使用 multiset 的 erase 方法删除指定数量的元素。 * 查询操作:通过 multiset 的 begin() 和 rbegin() 获取最小值和最大值,计算差值。 时间复杂度: 1. 插入操作: O(logO(logO(log $ n)$ 2. 删除操作: O(logO(logO(log $ n + c)$ 3. 查询操作: O(1)O(1)O(1) 参考代码 乌尔达哈分布图 题目大意 给出nnn个结点, mmm条边的无向图,每条边连接两个结点,结点编号从111到nnn。 求解每个结点的出度数量与其出边相连的结点的编号,从小到大输出。 题解思路 本道题考查图论储存当中的静态链表-邻接表的应用。 首先,我们可以用邻接表来存储图的结构。对于每个结点uuu,我们可以用一个数组aua_uau 来存储它的出边的结点编号。 然后,我们可以遍历每个结点uuu,对它的出边进行排序,然后输出它的出度数量与其出边相连的结点的编号。 时间复杂度为O(nlog⁡m)O(n\log m)O(nlogm),空间复杂度为O(n+m)O(n+m)O(n+m)。 参考代码 恰好 题目大意 给出一个NNN,求解有多少个公差为1的等差数列,使得它们的和为NNN。 题解思路 数列 [A,A+1,…,B−1,B][A, A + 1, \dots, B - 1, B][A,A+1,…,B−1,B] 的和为 (A+B)(B−A+1)2\dfrac{(A + B)(B - A + 1)}{2}2(A+B)(B−A+1) (可理解为将 [A,A+1,…,B−1,B][A, A + 1, \dots, B - 1, B][A,A+1,…,B−1,B] 与 (A+B)(B−A+1)2\dfrac{(A + B)(B - A + 1)}{2}2(A+B)(B−A+1) 相加)。(每个元素加上 [B,B−1,…,A+1,A][B, B-1, \dots, A + 1, A][B,B−1,…,A+1,A] 即可理解)。 因此,这个问题等价于求解 (A+B)(B−A+1)=2N(A≤B). (A + B)(B - A + 1) = 2N \quad (A ≤ B). (A+B)(B−A+1)=2N(A≤B). 这里, A+B,B−A+1A + B, B - A + 1A+B,B−A+1 都是 2N2N2N 的除数,因为它们都是整数。 现在,列举分解成两个正整数的方法,如 2N=x×y2N=x \times y2N=x×y ,并求解 {A+B=xB−A+1=y \begin{cases} A + B = x\\ B - A + 1 = y\\ \end{cases} {A+B=xB−A+1=y 从而求出整数解的个数。 它的解是 A=(x−y+1)/2, B=(x+y−1)/2A = (x - y + 1)/2,\ B = (x + y - 1)/2A=(x−y+1)/2, B=(x+y−1)/2 如果 xxx 和 yyy 的奇偶性不同,它的解就是 A=(x−y+1)/2, B=(x+y−1)/2A = (x - y + 1)/2,\ B = (x + y - 1)/2A=(x−y+1)/2, B=(x+y−1)/2 ;否则,就没有这样的整数解。 因此,答案就是将 2N2N2N 分解成两个不同奇偶性整数的方法数。 由于 2N2N2N 的除数可以用 O(N)O(\sqrt N)O(N ) 的时间复杂度枚举出来,所以这个问题总共可以用 O(N)O(\sqrt N)O(N ) 的时间解决。 另外,由于 2N2N2N 的质因数至少有一个 222 ,所以 xxx 和 yyy 中的任何一个(但不是两个)的被除数都是 222 。 因此,答案是( MMM 的被除数) ×2{}\times 2×2 ,其中 M=M =M= ( NNN 重复除以 2 直到它不能被 222 分割)。 参考代码 符文锁 题目大意 告知你最多存在 NNN 个编号为1,2,…,N1,2,\dots,N1,2,…,N 的数字,你需要使用这些数字打开宝箱。 宝箱需要使用至少MMM个正确的数字打开(无关先后顺序),每个数字的状态可以是真或假。 告诉你已经进行过MMM次的开箱的结果与使用的数字,要求你计算一下到底有几种打开宝箱的可能的数字组合方案,并且不与开箱结果冲突。 题解思路 符文的范围为 N≤15N \le 15N≤15 且测试次数 M≤100M \le 100M≤100 。因此我们可以得出正确的符文最多有 2N2^N2N 种组合。 我们可以对所有的 2N2^N2N 组合进行 MMM 次测试,并计算正确组合的数量。 这里需要进行 2N×M≤3.3×1062^N \times M \le 3.3 \times 10^62N×M≤3.3×106 次测试。即使对一个测试执行 NNN 次操作,总操作数的边界也是 5×1075 \times 10^75×107 。 为了对 2N2^N2N 个组合进行暴力破解,位枚举。 比如使用 循环遍历 i=0,1,…,2N−1i=0,1,\dots,2^N-1i=0,1,…,2N−1 。如果 2k2^k2k 中 iii 的位置是 000 ,我们就假设 (k+1)(k+1)(k+1)项 符文是一个假符文;如果是 111 ,我们就假设它是一个真符文。这样,我们就可以穷举所有的组合。 参考代码 集合操作2 题目大意 给定一个长度为 A=A1,A2,...,ANA = {A_1,A_2,...,A_N}A=A1 ,A2 ,...,AN 的序列 ,需要处理 qqq 次操作,操作类型分为以下三种: 赋值操作:1 x,将序列 AAA 中的所有元素赋值为 xxx。 添加操作:2 x y,将 xxx 加到 AyA_yAy 上。 查询操作:3 y,输出AyA_yAy 的值。 需要按照操作的顺序依次执行,并输出所有查询操作的结果。 题解思路 该项问题属于区间修改问题,解决问题的方法很多,这里可以采用时间戳解决该项问题,代码量最小,或者你也可以建立对应的树状数组或者线段树长度为 NNN 的序列进行范围更新和点检索,则解决问题的总时间约为 O(N+Qlog⁡N)O(N+Q\log N)O(N+QlogN) 参考代码 * 线段树参考代码

    userId_undefined
    Yuilice
    157阅读
    14回复
    1点赞
用户协议隐私政策
邮箱地址:service@acgo.cn
联系我们:400-0596-872 ( 工作时间:9:00~22:00 )

QQ群

qq群二维码
官方QQ群:71967666
国徽
浙公网安备33011002018299号浙ICP备16018668号-27Copyright © 2021-2026 ACGO All Rights Reserved.