笔试输入ACM模式记录 python语言

前言

由于机考笔试一般都不是力扣那样的只需要关注函数,而是需要自己读取输入输出;所以这里总结了python语言的多行输入方式
参考牛客

使用sys

参考debug博客
在卡码网上运行多行输入 通过的方式只有使用sys

单行和多行输入

  1. x = sys.stdin.readline()
    从而我找到的对应的正确的多行输入代码为
    while True:
        line = sys.stdin.readline()
        if not line:
            break
        # 处理每一行数据
        print(line)

经过优化之后的输入可以为

lis = []
while True:
    line = list(map(int,sys.stdin.readline().strip
1 图论 3 1.1 术语 3 1.2 独立集、覆盖集、支配集之间关系 3 1.3 DFS 4 1.3.1 割顶 6 1.3.2 桥 7 1.3.3 强连通分量 7 1.4 最小点基 7 1.5 拓扑排序 7 1.6 欧拉路 8 1.7 哈密顿路(正确?) 9 1.8 Bellman-ford 9 1.9 差分约束系统(用bellman-ford解) 10 1.10 dag最短路径 10 1.11 二分图匹配 11 1.11.1 匈牙利算法 11 1.11.2 KM算法 12 1.12 网络流 15 1.12.1 最大流 15 1.12.2 上下界的网络的最大流 17 1.12.3 上下界的网络的最小流 17 1.12.4 最小费用最大流 18 1.12.5 上下界的网络的最小费用最小流 21 2 数论 21 2.1 最大公约数gcd 21 2.2 最小公倍数lcm 22 2.3 快速幂取模B^LmodP(O(logb)) 22 2.4 Fermat小定理 22 2.5 Rabin-Miller伪素数测试 22 2.6 Pollard-rho 22 2.7 扩展欧几里德算法extended-gcd 24 2.8 欧拉定理 24 2.9 线性同余方程ax≡b(mod n) 24 2.10 中国剩余定理 25 2.11 Discrete Logging(BL == N (mod P)) 26 2.12 N!最后一个不为0的数字 27 2.13 2^14以内的素数 27 3 数据结构 31 3.1 堆(最小堆) 31 3.1.1 删除最小值元素: 31 3.1.2 插入元素和向上调整: 32 3.1.3 堆的建立 32 3.2 并查集 32 3.3 树状数组 33 3.3.1 LOWBIT 33 3.3.2 修改a[p] 33 3.3.3 前缀和A[1]+…+A[p] 34 3.3.4 一个二维树状数组的程序 34 3.4 线段树 35 3.5 字符串 38 3.5.1 字符串哈希 38 3.5.2 KMP算法 40 4 计算几何 41 4.1 直线交点 41 4.2 判断线段相交 41 4.3 三点外接圆圆心 42 4.4 判断点在多边形内 43 4.5 两圆交面积 43 4.6 最小包围圆 44 4.7 经纬度坐标 46 4.8 凸包 46 5 Problem 48 5.1 RMQ-LCA 48 5.1.1 Range Minimum Query(RMQ) 49 5.1.2 Lowest Common Ancestor (LCA) 53 5.1.3 Reduction from LCA to RMQ 56 5.1.4 From RMQ to LCA 57 5.1.5 An algorithm for the restricted RMQ 60 5.1.6 An AC programme 61 5.2 最长公共子序列LCS 64 5.3 最长上升子序列/最长不下降子序列(LIS) 65 5.3.1 O(n^2) 65 5.3.2 O(nlogn) 66 5.4 Joseph问题 67 5.5 0/1背包问题 68 6 组合数学相关 69 6.1 The Number of the Same BST 69 6.2 排列生成 71 6.3 逆序 72 6.3.1 归并排序求逆序 72 7 数值分析 72 7.1 二分法 72 7.2 迭代法(x=f(x)) 73 7.3 牛顿迭代 74 7.4 数值积分 74 7.5 高斯消元 75 8 其它 77
<think>好的,用户想了解ACM模式的相关信息及其应用场景。首先,我需要回顾一下之前收集到的资料。根据引用[1],ACM模式要求程序员处理完整的输入输出,包括解析输入、处理数据以及格式化输出,而核心代码模式只需关注算法逻辑。这锻炼了全面的代码能力,尤其是在实际比赛中,输入输出的处理很关键。 接下来,应用场景方面,引用[1]提到ACM模式常见于算法竞赛和在线评测平台(如LeetCode的某些题目),而引用[3]则详细列举了在Java中处理ACM模式时常用的API,比如Scanner和集合类的使用。这说明应用场景主要集中在需要全面编程能力的场合,比如竞赛和面试中考察综合能力的时候。 用户可能还关心ACM模式与核心代码模式的区别,以及如何准备。根据引用[1],练习ACM模式需要熟悉输入输出处理,建议去OJ网站练习。此外,引用[3]提供了具体的代码示例,比如使用Scanner读取输入,这可能对用户有帮助。我需要将这些信息整合,用清晰的结构回答,并生成相关问题,比如如何适应ACM模式,或者它的优缺点。 最后,确保回答符合格式要求:使用中文,数学公式正确,引用标识自然添加。同时,要避免使用Markdown,保持口语化的解释,但整体结构要专业。需要检查是否有遗漏的信息,比如是否提到了应用场景的具体例子,以及练习的资源推荐,比如OJ平台。</think>### ACM模式介绍及应用场景 #### 1. ACM模式定义与特点 ACM模式要求程序员**完整处理输入输出**,包括从标准输入读取数据、解析数据格式、处理算法逻辑,最后按格式输出结果。这种模式得名于国际大学生程序设计竞赛(ACM-ICPC),其核心特点是: - **输入输出的自主控制**:需要手动编写代码解析输入(如多组测试数据、复杂分隔符等) - **代码完整性要求高**:需包含`main`函数和完整的程序结构 - **严格的格式规范**:输出结果必须与题目要求的格式完全一致 例如处理多组输入的典型代码结构: ```python import sys for line in sys.stdin: n = int(line.strip()) # 处理逻辑... print(result) ``` #### 2. 与核心代码模式对比 | 维度 | ACM模式 | 核心代码模式 | |--------------|----------------------------------|-------------------------------| | 输入输出 | 需自行处理 | 由测试框架自动处理 | | 代码结构 | 完整程序(包含main函数) | 只需实现指定函数 | | 适用场景 | 算法竞赛/OJ平台 | LeetCode类面试平台 | | 训练重点 | 全流程编码能力 | 算法逻辑实现 | #### 3. 应用场景 1. **算法竞赛**:如ACM-ICPC、CCPC等国际赛事均采用此模式[^1] 2. **在线评测系统**:多数OJ平台(如HDU、POJ)采用ACM模式 3. **企业笔试**:部分公司笔试系统仍沿用ACM模式(如早期华为机考) 4. **教学训练**:高校算法课程常使用OJ平台进行训练 #### 4. 典型应用案例 **场景**:处理多组不定长输入 ```python import sys while True: try: # 读取含空格的整行输入 data = list(map(int, sys.stdin.readline().strip().split())) if not data: break # 处理数据... except: break ``` #### 5. 学习建议 - **输入输出训练**:重点掌握字符串分割、类型转换、异常处理 - **模板积累**:整理常见输入模式(如多测试用例、矩阵输入等) - **平台实践**:推荐在[HDU OJ](http://acm.hdu.edu.cn/)、[POJ](http://poj.org/)等平台练习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值