竞赛
考级
有什么想写的就写吧(必回复)
昨天去考GESP了(一级) 我的friend@༺ཌༀ神_C++爱吃皮皮虾ༀད༻也去考了一级 这一级还是比较简单的,只要会for循环,while循环,if分支语句还有基础知识就行了。 8:30就被叫起来了(准确来说是被拖起来的) 抄起早饭和小说(精神食粮)就走了 在车上一边吃早饭一边看小说,在车上看书差点就被紫菜了 看小说看晕了之后就开始极限抱佛脚(之前做模拟题的时候不做编程题,只考了32分) 9:05也是到达考点了 有人是上海信息技术学校考点的吗(评论区说)我是四号楼第四考场313的 我是第一个进去的,紧张死了 10:05开始编程题了 我了个豆,第一题只得了12.5分 我了个豆,第二题编译错误了 完damn了 OS:完了,编程题要死了,前面也是赌神附身 幸好,两道题都满分过了 第一题有两个坑,一个是double,一个是printf 第二题挺简单的,只要会数组和分支就行了 在停车场看见了两个犹太人 然后在他们面前说了一段这个 https://www.bilibili.com/video/BV1bG4y1w7HN/?spm_id_from=333.337.search-card.all.click 大家在评论区发编程题题解 各位观众给个三连吧 顶一顶这个帖子 做到的都是我义父
【函数】实现swap函数 题目描述 输入两个整数,交换两个整数的值,并输出。要求使用函数实现。 提示 数据范围: 两个整数在 int 的表示范围内 样例说明: 交换两数,把(4,6) 的顺序对调,变成(6,4) 输入格式 输入两个整数,以一个空格隔开。 输出格式 输出交换后的两个整数,两数间以一个空格隔开。 样例组输入#1 4 6 样例组输出#1 6 4
> 祝大家新年快乐! 众所周知,在做游戏时,需要用到许多例如: * 清屏 * 改变颜色 * 关机? * 消息提示框 甚至创建窗口应用。 但是,许多人不会,那么我就为大家讲解一下。 > 部分内容来自网络 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1.清屏 清除所有输出。 使用system 函数。 需包含cstdlib.h 头文件。 该函数原型:int system(const char *command); ,用于运行cod命令。 参数:const char *command 是传入的系统命令字符串,Windows下传cmd命令、Linux/macOS下传shell命令;传NULL时,用于检查系统是否有可用的命令处理器。 返回值:int 类型,返回值结果依赖操作系统,执行成功通常返回命令的退出状态码,执行失败(如无命令处理器)返回非0值。(其实没什么用) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 那么,众所周知,在cmd中,cls 指令用于清屏。 所以,清屏指令为:system(“cls”); 2.设置字体颜色(全屏) 设置背景颜色,字体颜色 仍然使用system 函数。 在cmd中,设置颜色指令: color [前景色代码][背景色代码] 代码表: 0=黑、1=蓝、2=绿、3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 事例: 设置背景红色,字体黄色 3.设置标题 在弹出的控制台中,最上方的标题一般默认为C:\…或D:\… 这类,即exe文件地址。 但是,这样看上去非常丑,且无法表达主题。 使用system 设置标题。 cmd代码: 事例: 运行后,标题设置为“这是一个标题吗” 4.等待 使用Sleep 函数,需包含Windows.h 头文件。 函数原型:DWORD Sleep(DWORD dwMilliseconds); 说明:参数dwMilliseconds为休眠毫秒数,返回值固定为 0,无失败返回值。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 注意,1000毫秒=1 秒,因此休眠1秒写作:Sleep(1000) . ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 破100阅读,5赞出窗口应用
请随意写8个数字,比如:[12345678]然后如下操作:∣1256∣⋅∣3478∣−∣1357∣⋅∣2648∣+∣1548∣⋅∣2367∣=16−64+48=0不信你再搞几个数(虚数、实数都可以),按照刚才的方法去算,结果一定是0 请随意写8个数字,比如: \begin{bmatrix}1&2&3&4\\5&6&7&8\end{bmatrix}\\ 然后如下操作:\\ \begin{vmatrix}1&2\\5&6\end{vmatrix}\cdot\begin{vmatrix}3&4\\7&8\end{vmatrix}-\begin{vmatrix}1&3\\5&7\end{vmatrix}\cdot\begin{vmatrix}2&6\\4&8\end{vmatrix}+\begin{vmatrix}1&5\\4&8\end{vmatrix}\cdot\begin{vmatrix}2&3\\6&7\end{vmatrix}\\ =16-64+48\\ =0\\ 不信你再搞几个数(虚数、实数都可以),按照刚才的方法去算,结果一定是0 请随意写8个数字,比如:[15 26 37 48 ]然后如下操作: 15 26 ⋅ 37 48 − 15 37 ⋅ 24 68 + 14 58 ⋅ 26 37 =16−64+48=0不信你再搞几个数(虚数、实数都可以),按照刚才的方法去算,结果一定是0 谁能证明的话我倒立洗头
我和“滚蛋吧c++”的小伙伴都在ACGO等你,快用这个专属链接加入我们吧!https://www.acgo.cn/application/1870763133040070656
rt。 @我的世界老玩家(互关,专攻难题)
更新一下帖子:我一个90多人的团队被踢了一大半。制裁团贩子@XBY!!!XBY现在改了名,叫做我不爱作业ID:1735448!!! 制裁全ACGO团贩子!!!
大家好,最近,我将推出一系列C++课程,欢迎参与! 有什么建议或有什么反馈,请务必告诉作者 作者邮箱:wanhr666@qq.com ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 可熟悉一下头文件:C++常用库函数 提取码:7878 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 目录 第一章——《C++语言》 第二章——《基础语法》 第三章——《循环语法》
来,大家看看我的今日份迷惑行为大赏: ● 早上起晚了,像打仗一样冲出门,结果发现...今天是周末/居家办公。 ● 中午点外卖,纠结了半小时,最后吃了泡面。 ● 晚上信誓旦旦说要早睡,结果手机一拿,凌晨两点了! ● 遇到老板/老师画大饼,内心已经翻了无数个白眼,脸上还要保持微笑。 我的日常,就是由这些“本可以避免的尴尬”和“无法避免的社死”组成的。 有没有和我一样的“戏精”朋友?评论区集合,让我知道我不是一个人!
涉事人员 证据: 后来,TN HACKER(彻底黑化) 声张正义,踢了此人,感谢! @AC君
哈哈哈,我用C语言,计算机没发现
C++语言:兼具高效与灵活的通用编程语言 C++是一种静态类型、编译型的通用编程语言,由丹麦计算机科学家本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)于20世纪80年代在贝尔实验室首次设计并实现。它以C语言为基础,保留了C语言的高效、简洁和贴近硬件的特性,同时引入了面向对象编程(OOP)、泛型编程、模板元编程等现代编程范式,成为一门兼具过程式、面向对象和泛型编程能力的多范式语言。如今,C++广泛应用于系统开发、游戏引擎、嵌入式设备、高性能计算、人工智能框架等领域,是计算机科学领域中不可或缺的核心语言之一。 一、C++的起源与发展历程 C++的诞生源于对C语言的扩展需求。20世纪70年代,C语言凭借其高效性和可移植性成为系统编程的主流语言,但随着软件规模的扩大,C语言的过程式编程范式在代码复用、模块化设计和维护性方面逐渐显现出局限性。1979年,斯特劳斯特卢普开始在C语言中引入Simula语言的面向对象特性,最初将这个新语言命名为“C with Classes”(带类的C)。1983年,该语言正式更名为C++,其中“++”取自C语言的自增运算符,寓意着对C语言的超越和扩展。 1985年,第一本C++教材《The C++ Programming Language》的出版标志着C++的正式成型。1998年,国际标准化组织(ISO)发布了第一个C++标准(C++98),奠定了C++的语言基础。此后,C++经历了多次重要的标准更新:2003年的C++03主要对C++98进行了错误修正和细节完善;2011年的C++11是一次里程碑式的更新,引入了Lambda表达式、智能指针、移动语义、范围for循环等大量新特性,极大提升了语言的现代性和易用性;后续的C++14、C++17、C++20和C++23则持续迭代,分别在泛型编程、模块化、协程、概念(Concepts)、范围(Ranges)等方面进行了增强,使C++始终保持对现代编程需求的适配。 二、C++的核心特性 1. 兼容C语言,兼具高效性 C++完全兼容C语言的语法和语义,绝大多数C语言代码可以直接在C++编译器中编译运行。这一特性使得C++能够继承C语言的核心优势:贴近硬件底层,允许程序员直接操作内存(如指针、数组),拥有极高的执行效率和内存控制能力。与解释型语言(如Python、JavaScript)不同,C++代码经编译器编译为机器码后直接运行,无需虚拟机或解释器的介入,因此在性能敏感的场景(如操作系统内核、实时系统)中表现卓越。 2. 面向对象编程(OOP) 面向对象编程是C++的核心特性之一,它将数据和操作数据的方法封装为“类(Class)”,通过对象的实例化实现代码的模块化和复用。C++支持OOP的三大核心特性: * 封装:通过访问控制符(public、private、protected)隐藏类的内部实现细节,只对外暴露必要的接口,提高代码的安全性和可维护性。 * 继承:允许一个类(派生类)继承另一个类(基类)的属性和方法,实现代码的复用和层次化设计,例如可以从“Shape”基类派生出“Circle”“Rectangle”等子类。 * 多态:分为静态多态(编译时多态,通过函数重载和模板实现)和动态多态(运行时多态,通过虚函数和继承实现)。动态多态使得基类指针或引用可以指向派生类对象,并调用派生类的重写方法,是实现“开闭原则”的关键。 3. 泛型编程与模板 泛型编程是C++的另一大特色,其核心思想是编写与数据类型无关的通用代码,以提高代码的复用性。C++通过模板(Template) 实现泛型编程,分为函数模板和类模板: * 函数模板允许定义一个通用的函数,支持不同类型的参数,例如实现一个通用的排序函数,可用于int、float、字符串等多种类型的数组。 * 类模板则允许定义通用的类,例如C++标准库中的vector<T>、map<K, V>等容器,都是通过类模板实现的,能够适配不同的数据类型。 模板还支持模板元编程(TMP),即在编译期执行计算和逻辑判断,这一特性使得C++能够在编译期优化代码,进一步提升运行效率。 4. 丰富的标准库 C++标准库(STL,Standard Template Library)是其重要组成部分,提供了大量的通用数据结构和算法,极大地简化了开发工作。标准库主要分为以下几个部分: * 容器(Containers):提供了常用的数据结构,如动态数组(vector)、链表(list)、栈(stack)、队列(queue)、映射(map)等,这些容器均通过模板实现,支持任意数据类型。 * 算法(Algorithms):包含了排序(sort)、查找(find)、遍历(for_each)、交换(swap)等通用算法,可直接作用于容器,实现高效的数据处理。 * 迭代器(Iterators):作为容器和算法之间的桥梁,提供了统一的访问容器元素的接口,使得算法可以独立于具体的容器类型。 * 函数对象(Functors)、智能指针(Smart Pointers)(如unique_ptr、shared_ptr)等工具类,进一步增强了语言的易用性和安全性。 5. 内存管理与性能控制 C++允许程序员直接管理内存,通过new和delete运算符手动分配和释放内存,这一特性赋予了程序员极高的灵活性,但也带来了内存泄漏、野指针等风险。为了缓解这一问题,C++11引入了智能指针,通过RAII(Resource Acquisition Is Initialization,资源获取即初始化)机制自动管理内存,在对象生命周期结束时自动释放内存,有效减少了内存错误。 此外,C++支持手动控制内存布局、内联函数(inline)、编译器优化等特性,使得程序员能够针对性能关键的代码进行精细优化,满足高性能应用的需求。 三、C++的应用领域 C++的高效性、灵活性和多范式特性使其在多个领域占据主导地位: 1. 系统软件开发:操作系统内核(如Windows、Linux的部分模块)、设备驱动程序、编译器、解释器等底层软件,均大量使用C++开发,因为它能够直接与硬件交互,且执行效率极高。 2. 游戏开发:主流的游戏引擎(如Unreal Engine、Unity的底层核心)均采用C++开发,游戏对实时性和性能的高要求使得C++成为首选语言。 3. 嵌入式系统:在汽车电子、工业控制、智能家居等嵌入式设备中,C++凭借其高效性和对资源的低消耗,被广泛用于开发底层控制程序。 4. 高性能计算与人工智能:在科学计算、大数据处理、人工智能框架(如TensorFlow、PyTorch的底层核心)等领域,C++的高性能特性使其成为实现核心算法的首选。 5. 金融科技:高频交易系统对响应速度要求极高,C++的低延迟特性使其成为金融科技领域的主流语言。 四、C++的优势与挑战 优势 1. 高性能:编译为机器码运行,直接操作硬件,执行效率接近机器语言,是高性能应用的首选。 2. 多范式编程:支持过程式、面向对象、泛型、函数式等多种编程范式,可根据需求选择合适的编程风格。 3. 高度灵活:允许直接管理内存、控制硬件,适配从底层系统到上层应用的各种开发场景。 4. 丰富的生态:拥有庞大的开发者社区和丰富的第三方库,以及成熟的标准库,降低了开发成本。 挑战 1. 学习曲线陡峭:C++特性繁多,语法复杂(如指针、模板、内存管理),初学者需要花费较多时间掌握。 2. 内存安全风险:手动内存管理容易导致内存泄漏、野指针、缓冲区溢出等错误,增加了调试难度。 3. 编译复杂度高:模板的使用可能导致编译时间延长,且错误提示较为晦涩,增加了调试成本。 五、C++的未来发展 随着C++标准的持续更新,其语言特性不断完善,朝着更现代、更易用、更安全的方向发展。C++20引入的模块化(Modules)特性解决了传统头文件的冗余编译问题,大幅提升了编译效率;概念(Concepts)则增强了模板的类型检查,使泛型编程更安全;协程(Coroutines)为异步编程提供了原生支持,适用于高并发场景。C++23进一步优化了这些特性,并增加了更多便捷的语法和工具,如增强的范围库、字符串处理等。 同时,C++在新兴领域的应用也在不断拓展,例如在量子计算、边缘计算、自动驾驶等领域,其高性能和底层控制能力依然具有不可替代的优势。 总结 C++作为一门历经四十余年发展的编程语言,始终保持着强大的生命力。它既继承了C语言的高效和简洁,又融合了现代编程的先进理念,成为连接底层硬件与上层应用的重要桥梁。尽管学习和使用C++存在一定的挑战,但其在高性能、高灵活性方面的优势,使其在系统开发、游戏、嵌入式、高性能计算等领域依然是无可替代的选择。随着标准的不断更新和生态的持续完善,C++将继续在计算机科学领域发挥重要作用,为开发者提供强大的工具和无限的可能性。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 配套尝试文件:飞机小游戏 提取码:7878
因为一些神秘原因,需要写一下 T6 思路,后来考虑到既然都赛后复盘整理思路了(我平时打模拟赛从来不复盘的,显然这是一个坏习惯),不如水一篇题解。 容易发现这题其实是有原的:https://codeforces.com/problemset/problem/1239/B。 我两万年前打 Duel 的时候竟然还刷到过(),不过不幸的是当时对着题解看了好久没看懂。 先考虑什么是正规括号序列,比较容易想到的做法是栈,线性跑一遍即可,我记得这好像专门有一道题是干这个的,但是目前没找到/kel。但是这种方法在本题中显然是不可取的,不可能每次都要用栈跑一遍。考虑以 ( 为 111,) 为 −1-1−1 所构建的前缀和数组 aaa,满足以下条件: 1. 对于每一个 1≤i≤n1\le i\le n1≤i≤n,都有 ai≥0a_i\ge 0ai ≥0。 2. an=0a_n=0an =0。 其实很好证明,原理和栈实现是一样的。 很显然对于 sn≠0s_n \ne0sn =0,必然无解,直接输出 0 1 1。 然后有一个比较常见的解决环上问题的方法就是破环为链,考虑将原数组复制两份。 然后考虑在一个序列中,怎么找到其合法切口数。其实就是由前缀和数组中最小的那个元素的决定的,读者可以自己思考一下为什么一定要在最小的那个元素位置上切开,才可以保证切割后的序列合法(主要还是满足上述条件第一条)。接下来易得合法切口数就是最小元素的出现次数。 然后是最难的部分也就是如何考虑交换这个东西。 我们要做的就是使得交换后的序列中出现尽可能多的最小值,我不知道这样子讲得详不详细,如果存在疑问可以指出。 通过注意力可以发现 后面的目前更不了,笔者被浮木线下单杀了,可以先暂时自行思考交换后对前缀和数组会有哪些影响。
本次题目的总体难度如下,各位选手可以借此评估一下自身的技术水平 题目编号 题目标题 难度 T1 小午的四舍五入 入门 T2 小午的排名预期 入门 T3 午枫的玩具火车 普及- T4 午枫的身高统计 普及- T5 小午的学习技能 普及- T6 小午的迷宫 普及- T1 小午的四舍五入 题目大意 给定一个小数,输出四舍五入后的结果。 解题思路 可以先将输入的浮点数乘以 101010 ,判断个位数是否大于等于 555 ,如果是的话,将整个数加上 101010 模拟进位,最后再将当前的数除以 101010 并取整即可。或使用 round(x) 函数,即可得到四舍五入的结果。 参考代码 方法一 方法二 T2 小午的排名预期 题目大意 已知前三天 nnn 个人的考试分数,每天的考试总分为 300300300 分,问第四天考完每个人的排名是否可以进入前 kkk 名。 解题思路 将所有人前三天的分数求和并排序,然后第四天对于每个人按照本人拿满分,其他人为 000 的情况去考虑,检查是否能到达前 kkk 名。 参考代码 T3 午枫的玩具火车 题目大意 起初,数字 1∼n1\sim n1∼n 之间相互独立,给出 qqq 次查询,每次查询为以下三种的一种: * 将两个没有连接起来的数字按顺序前后连接起来; * 将两个已经连接起来的数字分开; * 输出某一个数字所有链上从头到尾所有的数字以及个数。 解题思路 由于要涉及到按顺序连接和断开的操作,不难想到我们可以通过使用数组模拟链表的方式进行这一系列操作。 lil_ili :表示 iii 这个数字左边的数字是多少,如果没有则为 000 。 rir_iri :表示 iii 这个数字右边的数字是多少,如果没有则为 000 。 于是,对于第一种操作 1 x y ,我们可以用以下代码完成: 注意这里是有顺序的,所以 xxx 和 yyy 的顺序不能反。 对于第二种操作 2 x y ,我们可以用以下代码完成: 对于第三种操作,我们可以直接先暴力找到 xxx 所在链的最左侧点,然后再依次向后遍历,存储所有的数,最后输出其个数以及所有数字即可。 参考代码 T4 午枫的身高统计 题目大意 nnn 个人,每个人身高已知,有 qqq 次询问,找出身高大于等于 xjx_jxj 的人数。 解题思路 对于每次查询,如果都遍历所有人的身高的话,时间复杂度为 O(nq)O(nq)O(nq) ,无法通过。 容易发现对所有人的身高进行排序,那么大于等于 xjx_jxj 的身高就会出现在一段后缀当中,因此容易想到使用二分查找能够快速找出分解点。 时间复杂度 O(nlog(n)+qlog(n))O(nlog(n)+qlog(n))O(nlog(n)+qlog(n)) 。 参考代码 T5 小午的学习技能 题目大意 有 nnn 个技能,学习每个技能需要花费 tit_iti 时间,在学习每个技能之前,需要已学习若干个前置技能,需要求出学习第 nnn 个技能的最小花费。 解题思路 可以使用队列存储需要学习的技能,最初存入第 nnn 个技能,每次取出当前需要学习的技能,然后将其还未学习的前置技能放入队列中,重复此操作即可。 另外,本题需要使用 vector 存储数据。 参考代码 T6 小午的迷宫 题目大意 有一个 n×mn\times mn×m 的迷宫,有 . 和 # 两种图形, # 表示障碍物,. 表示可以走的路。起点为 (1,1)(1,1)(1,1) 每次只能向下或向右走,问当无法移动时,最多可以经过多少个格子。 解题思路 使用 bfsbfsbfs 进行二方向遍历,并用距离数组 ddd 记录从起点到每个点的所经过的格子数。最终取 ddd 数组的最大值即可。 参考代码
c++ a+b太难了肝了半天 #include<bits/stdc++.h> #define N 210 using namespace std; int as[N],bs[N],lena,lenb; string a,b; int main(){ cin>>a>>b; lena=a.size(); lenb=b.size(); for(int i=0;i<lena;i++)as[i]=a[lena-i-1]-'0'; for(int i=0;i<lenb;i++)bs[i]=b[lenb-i-1]-'0'; int length=max(lena,lenb); for(int i=0;i<length;i++)as[i]+=bs[i]; for(int i=0;i<length;i++){ if(as[i]>9){ as[i+1]; as[i]-=10; if(i==length-1)length; } } while(length&&as[length]==0)length--; for(int i=length;i>=0;i--)cout<<as[i]; cout<<endl; }
https://www.acgo.cn/application/1999671395517304832
这次: 为什么大号又被禁言了? 彩蛋: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 废除: 求个洛谷号,我不当AIER了:
我真的无语了,我考GESP2级,第二道编程题题提交的时候显示答案错误,点进去显示2,4,10,三个测试点错误,然后再次检查发现一个等号没写,补上后结果掉到12.5分了,前几天真题发布了,结果代码一模一样的显示测试点全过,CCF诗人吗
共23326条