- 博客(81)
- 收藏
- 关注
原创 2026年3月三级T2:上升三元组
若有多个三元组满足条件,则首先输出第一项较小的三元组,若第一项相等,则先输出第二项较小的三元组。当0≤ a ≤ b ≤ c时,称a,b,c为上升三元组。给定一个整数 n,请输出所有三数之和等于n的上升三元组。若干行,每行三个自然数,中间用一个空格分开。
2026-06-03 20:06:49
142
原创 2026年3月三级T1:知识竞赛
在一场知识竞赛中,选手答对一题得1分,答错不得分且要倒扣1分,但扣分不能让分数小于0。给定一个由 Y 及 N 构成的字符序列,答对记为 Y,答错记为N。设 n 表示字符序列的长度, 1 ≤ n ≤ 100,000。单个字符序列:保证仅由字母 Y 及 N 组成。选手一开始从0分开始,请输出选手最后的得分。单个整数,表示最终得分。
2026-06-03 20:05:58
206
原创 【2026年3月三级T2】颁奖典礼
n个学生参加颁奖典礼,学号为1到n,学生根据比赛排名上台领奖。已知学号为1的学生是第ai个上去领奖的。请输出学生上台领奖的学号顺序。第二行:n个整数ai,a2,a3...an。n个整数,表示学生上台的顺序。
2026-06-03 20:03:48
354
原创 【2026年3月三级T1】排队名单
火车站的售票大厅中有n个售票窗口(窗口编号为1....),春运大潮来了,今天窗口还没有开放人们就已经陆陆续续涌进来。现在按顺序告诉你涌进来的m个人的目标窗口和排队编号(为1...m),请你输出售票前各窗口的排队情况。n行,每行若干整数,分别第i个窗口前,从前到后排队人的编号,如果该窗口没人排,请输出 nobody.之后m个整数ai,表示第i个进来的人到ai,窗口排队。noip_ 比赛,不显示提示信息。第一行两个正整数n和m。
2026-06-03 20:01:33
255
原创 [模板]完全背包
有1个容量为m的背包,现有n种物品,重量分别为w1,w2…wn,价值分别为v1,v2….vn,若每种物品有无限多件,求能放入的最大总价值。第一行:两个整数m(m<=200)和n(n<=30)。第2~n+1行:每行两个整数wi和vi。一个数据,最大总价值。
2026-02-12 10:18:35
148
原创 [模板]分组背包
第一行为两个数m(0 ≤ m ≤ 1000)和n(1 ≤ n ≤1000),表示背包总重量为m,共有n件物品。接下来n行,每行3个数 ai,bi,ci,表示物品的重量,价值和所属组数。物品大致可分为k(k ≤ 100)组,同一组中的物品最多放1个,试求背包能装下的物品的最大价值是多少。输出一个数,即背包能装下的最大价值。
2026-02-12 10:16:02
337
原创 [模板]0/1背包问题
有一个最多能用m公斤的背包,有n件物品,它们的重量分别是:W1,W2,...,Wn ,它们的价值分别为:C1,C2,...Cn。若每件物品只有一件,问能装入的最大总价值。第一行为两整数 m 和 n(1≤m,n≤1000),以下n行中,每行两个整数 Wi,Ci,分别代表第i件物品的重量和价值。输出一整数,即最大价值。
2026-02-12 10:15:05
303
原创 [模板]简单背包问题
有一个背包,可以放入的最大重量为 S,现有N件物品,重量均为正整数,分别为:W1,W2,W3,…,Wn,现从 N 块物品中挑选若干块,使得放入的背包的重量之和正好为 S。若成功,则输出 YES,否则输出 NO。第一行两个整数即S和 N(S<32767,N<=50)。第二行为N个整数,即N件物品的重量。若满足条件则输出"YES",若不满足则输出"NO"。
2026-02-12 10:13:31
37
原创 排序--快速排序
快速排序(英语:Quicksort),又称分区交换排序(英语:partition-exchange sort),简称「快排」,是一种被广泛运用的排序算法.三路快速排序(英语:3-way Radix Quicksort)是快速排序和基数排序的混合.它的算法思想基于荷兰国旗问题的解法.内省排序(英语:Introsort 或 Introspective sort)3是快速排序和堆排序。
2026-02-09 16:52:49
861
原创 算法基础--枚举
枚举(英语:Enumerate)是基于已有知识来猜测答案的一种问题求解策略.枚举的思想是不断地猜测,从可能的集合中一一尝试,然后再判断题目的条件是否成立.。
2026-02-04 17:28:20
434
原创 c++-运算
自增/自减运算符可放在变量前或变量后面,在变量前称为前缀,在变量后称为后缀,单独使用时前缀后缀无需特别区别,如果需要用到表达式的值则需注意,具体可看下面的例子.详细情况可参考。看起来类似,但实际功能却相差甚远.第一条语句是在对 op 进行赋值,若赋值为非 0 时为真值,表达式的条件始终是满足的,无法达到判断的作用;逗号运算符可将多个表达式分隔开来,被分隔开的表达式按从左至右的顺序依次计算,整个表达式的值是最后的表达式的值.逗号表达式的优先级在所有运算符中的优先级是。为相应的带符号值,否则行为未定义;
2026-02-04 08:27:54
962
原创 c++——数据类型
简单地说2,定义一个变量,需要包含类型说明符(指明变量的类型),以及要定义的变量名.例如,下面这几条语句都是变量定义语句.123int oi;在目前我们所接触到的程序段中,定义在花括号包裹的地方的变量是局部变量,而定义在没有花括号包裹的地方的变量是全局变量.实际有例外,但是现在不必了解.定义时没有初始化值的全局变量会被初始化为 00.而局部变量没有这种特性,需要手动赋初始值,否则可能引起难以发现的 bug.。
2026-02-04 08:25:46
862
原创 和为给定数
第一行是整数n(0 < n ≤ 100,000),表示有n个整数。整数的范围是在0到108之间。第三行是一个整数m(0≤m≤230),表示需要得到的和。若存在和为m的数对,输出两个整数,小的在前,大的在后,中间用单个空格隔开。若有多个数对满足条件,选择数对中较小的数更小的。若找不到符合要求的数对,输出一行No。给出若干个整数,询问其中是否有一对数的和等于给定的数。
2026-02-03 21:59:28
261
原创 区间合并(分治)
bi],其中i=1,2,...,n。任意两个相邻或相交的闭区间可以合并为一个闭区间。3] 可以合并为 [1;4] 可以合并为 [1;之后n行,在第i行上(1 ≤ i ≤ n),为两个整数 ai 和 bi ,整数之间用一个空格分隔,表示区间 [ai;bi](其中 1 ≤ ai ≤ bi ≤ 10000)。输出一行,如果这些区间最终可以合并为一个闭区间,输出这个闭区间的左右边界,用单个空格隔开;我们的任务是判断这些区间是否可以最终合并为一个闭区间,如果可以,将这个闭区间输出,否则输出no。表示输入区间的数量。
2026-02-03 21:55:50
554
原创 【入门】字符串的反码
一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。如果这是一个小写字符,则它和字符'a’的距离与它的反码和字符'z’的距离相同;如果是一个大写字符,则它和字符'A’的距离与它的反码和字符'Z’的距离相同;如果不是上面两种情况,它的反码就是它自身。举几个例子,'a’的反码是'z’;'c’的反码是'x’;'W’的反码是'D’;'1’的反码还是'1’;'的反码还是′的反码还是′'。一个字符串的反码定义为其所有字符的反码。我们的任务就是计算出给定字符串的反码。
2026-02-03 21:54:27
42
原创 统计数字(分治)
某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5∗10^9)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。第一行是整数n,表示自然数的个数(n<200000);第2行到n+1行,每行一个自然数。
2026-02-03 21:53:21
472
原创 第一题 查找
个整数,表示询问这些数字的编号,从。本题输入输出量较大,请使用较快的。个整数,以空格隔开,表示答案。个整数,表示这些待查询的数字。,表示数字个数和询问次数。
2025-10-02 14:01:21
333
原创 P9748 [CSP-J 2023] 小苹果
小 Y 的桌子上放着 n 个苹果从左到右排成一列,编号为从 1 到 n。小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。每天在拿的时候,小苞都是从左侧第 1 个苹果开始、每隔 2 个苹果拿走 1 个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一列。小苞想知道,多少天能拿完所有的苹果,而编号为 n 的苹果是在第几天被拿走的?
2025-09-27 13:50:01
333
原创 全排列问题
输出自然数1~n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。if (v[i] == 0) { //表示整数i未被使用。由1~n组成的所有不重复的数字序列,每行一个序列。
2025-08-02 14:26:18
166
原创 文件操作C++基础教程 文件操作
在操作系统中,每个进程都有三个标准的输入输出流:标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)。文件重定向技术允许用户改变程序输入输出的默认方向,将原本要输出到标准输出设备(通常是屏幕)的数据输出到文件中,或者从文件中读取数据而不是从标准输入设备(通常是键盘)获取输入。“a”:以追加模式打开文本文件,如果文件不存在则创建,写入的数据会追加到文件末尾。“w”:以写入模式打开文本文件,如果文件不存在则创建,如果文件已存在则清空内容。“r”:以只读模式打开文本文件,文件必须存在。
2025-08-02 09:28:59
398
原创 在 C++ 里,字符串的处理十分重要。
C 风格字符串:采用字符数组存储,使用时要留意内存管理和字符串结束符。C++ string 类:使用方便,能自动管理内存,推荐优先使用。掌握字符串操作是 C++ 编程的基础,这些示例可以帮助你处理常见的字符串任务。分享在C++中,字符串的连接和复制操作是如何实现的?介绍一些C++中处理字符串的常用函数如何在C++中使用字符串流进行输入和输出?
2025-06-25 20:05:22
406
原创 文件操作C++基础教程 文件操作
在操作系统中,每个进程都有三个标准的输入输出流:标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)。文件重定向技术允许用户改变程序输入输出的默认方向,将原本要输出到标准输出设备(通常是屏幕)的数据输出到文件中,或者从文件中读取数据而不是从标准输入设备(通常是键盘)获取输入。“a”:以追加模式打开文本文件,如果文件不存在则创建,写入的数据会追加到文件末尾。“w”:以写入模式打开文本文件,如果文件不存在则创建,如果文件已存在则清空内容。“r”:以只读模式打开文本文件,文件必须存在。
2025-06-25 20:00:53
346
原创 函数递归C++基础教程 函数递归
函数递归是指一个函数在其定义中直接或间接地调用自身的编程技巧。递归通常包含两个关键部分:基本情况(Base Case)和递归情况(Recursive Case)。基本情况是递归终止的条件,避免无限递归;当 n 为 0 或 1 时,函数返回 1,递归终止;否则,函数返回 n 乘以 (n – 1) 的阶乘。递归是一种强大的编程技巧,但在使用时需要注意递归深度,避免栈溢出的问题。对于一些复杂的递归问题,也可以考虑使用迭代方法来替代递归,以提高性能。当 n > 1 时,n!当 n = 0 或 n = 1 时,n!
2025-06-25 19:59:32
386
原创 C++基础教程 指针
在C++中,指针是一个非常重要且强大的概念,它存储的是变量的内存地址。内存中的每个字节都有一个唯一地址(如 0x7ffeeb0b9d6c),指针的作用是直接操作这些地址,实现高效的数据访问和管理。//不实际交换变量的值,只交换pa和pb变量的值。//等价于 cout<< *(*(p+1)+2)// 声明一个指向函数的指针,该函数接受两个int参数并返回一个int值。//修改p指向地址的值,相当于修改变量num的值。//输出指针所指向的值。int* p = # // & 取地址符,获取num的地址。
2025-06-25 19:58:23
567
原创 STRINGC++基础教程 string
(3)rbegin() 对应最后一个字符,rend() 对应第一个字符之前。(1)string自动管理内存,但频繁修改可能导致多次重新分配,可使用 reserve() 优化性能。
2025-06-25 19:57:34
529
原创 结构体与联合体C++基础教程 结构体与联合体
在这个示例中,Student 是结构体名,它包含三个成员:id(整数类型,用于存储学生的编号)、name(字符串类型,用于存储学生的姓名)和 age(整数类型,用于存储学生的年龄)。在这个示例中,Data 是联合体名,它包含三个成员:i(整数类型)、f(单精度浮点数类型)和 str(字符数组类型)。结构体(struct)是一种用户自定义的数据类型,它允许将不同类型的数据项组合在一起,形成一个新的数据单元。联合体(Union),也被称为共用体,是一种特殊的数据类型,它允许在相同的内存位置存储不同的数据类型。
2025-06-15 11:10:50
464
原创 自定义函数C++基础教程 自定义函数
在C++中,自定义函数是一种非常重要的编程工具,它可以将一段特定功能的代码封装起来,提高代码的复用性、可读性和可维护性。通过自定义函数,可以将复杂的程序分解为多个小的、功能明确的模块,提高代码的可维护性和复用性。这个示例中,虽然在swap 函数内部交换了 a 和 b 的值,但由于传递的是a和b的值,所以并不会影响到 main 函数中的a和b的值。类似于传递变量的地址。调用函数时,需要提供函数所需的参数(如果有),并可以接收函数的返回值(如果有)。函数名:是函数的标识符,用于在代码中调用该函数。
2025-06-15 11:10:12
565
原创 二维数组与多维数组C++基础教程 二维数组与多维数组
这里只初始化了全部12个元素的六个元素,其余六个matrix[0][2]、matrix[0][3]、matrix[1][1]、matrix[1][2]、matrix[1][3]、matrix[2][3]元素默认初始化成了0。二维数组可以看作是数组的数组,它有两个维度,通常用于表示表格或矩阵。多维数组是二维数组的扩展,可以有三个或更多的维度。在初始化时,可以省略行数,编译器会根据初始化列表的数量自动推断行数。多维数组的初始化、遍历方式与二维数组类似,只是需要更多的嵌套。colSize 是数组的列数。
2025-06-15 11:09:04
377
原创 一维数组C++基础教程 一维数组
当完成第一趟排序时,数组中的最大的元素就会被排到数组的最后。我们用数据来演示一下,比如原来数组中的数据是 4 3 5 2 1,那么第一趟排序时,首先4和3比较,4大于3不满足升序规则,4和3交换位置,数据的数据变为:3 4 5 2 1;答案就是:最后一个元素向后移动一个位置,倒数第二个元素“挪”到原来倒数第一个元素所在的位置,倒数第三个元素“挪”到原来倒数第二个数据所在的位置,以此类推,直到把要插入数据的位置空出来为止。数组是由连续的内存位置组成的,最低的地址对应第一个元素,最高的地址对应最后一个元素。
2025-06-15 10:49:12
675
原创 循环嵌套C++基础教程 循环嵌套
外层循环可以用来遍历每个班级,内层循环用来遍历每个班级中的学生。然而在某些特定的场景中,无法确定循环的具体次数,这个时候就更适合用while语句。注意:for与while两种循环没有好坏之分,看具体的应用场景,而且可以相互的替代和转换。我们可以用循环嵌套来打印出每个月的日期。外层循环遍历月份,内层循环遍历每个月的日期。外层for循环控制变量i从0到2变化,每一次外层循环执行时,内层for循环的控制变量j都会从0到1完整地循环一次。图形的特点:一共n行,每行星号的数量等于行的序号,也就是说第i行有i个星号。
2025-06-15 10:46:50
434
原创 循环和选择语句的综合应用C++基础教程 循环和选择语句的综合应用
一开始的时候,变量i的值被初始化为1,然后判断i<=10是否成立,然后执行循环体中的代码(也就是“{}”包含的所有代码),无论循环体中的代码有多少,在这次循环的过程中,变量i的值保持1;然后变量i增加到2,经过条件判断开始第二次循环,这这次循环中,变量i的值保持2……爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。在 for 循环中,通常会使用一个变量来控制循环的执行,这个变量被称为循环变量。
2025-06-15 10:45:42
362
原创 字符型数据C++基础教程 字符型数据
为了防止消息的内容被敌人发现,消息的的内容只能写在纸上,且只能写数字,不允许使用其他任何工具。负责发送消息的把秘密文件撕成两部分,有单词的部分写上自己的名字。然后把有单词和自己名字的纸片还给老师,把有数字的纸片送给负责接收数据的同学。因为计算机只能看懂数字,所以ASCII是一个非常重要的规则,它让计算机能够读懂我们的文字。在ASCII中,大写字母’A’的编号(我们称之为ASCII码)为65,大写字母’B’的ASCII码为66,其余的以此类推……数字’0’的ASCII是48,’1’是49!
2025-06-15 10:45:09
158
原创 浮点型变量C++基础教程 浮点型变量
从程序的逻辑上看,if语句中的条件是成立的,因此程序应该输出”Yes”。而1.1这个数据默认是双精度浮点型,因此只要把h的定义类型改为double,程序就会输出”Yes”。因此,当用一个浮点型的(常)变量对一个整型变量赋值时,浮点型变量的小数部分会被直接截断(不进行四舍五入操作),只把整数部分赋值给整型变量。但最正确的比较浮点型数据是否相等的方法应该是设定一个阈值(epsilon),只要两个数据的差值小于这个阈值就认为是相同的数据。即便,浮点型数据的小数部分是零,浮点型的(常)变量都不能参与取余运算。
2025-06-15 10:44:11
1671
原创 如何重复做一件事情C++基础教程 如何重复做一件事情
在C++中,通常在这里写一个条件表达式,比如i <10,表示只要计数器变量i小于10,就要继续跑(继续循环)。在C++中,通常设置一个计数器变量,比如int i =0,i用来表示跑完了几圈,i=0说明你还没开始跑。在这个例子中,你可以想象成你每跑完一圈,都会按一下手腕上的计数器,告诉自己已经完成了第几圈。在C++中,我们通常在这里更新计数器变量,比如i++,表示每完成一次循环,计数器变量i就增加1。部分是你在跑每一圈时要做的事情。在编程中,我们通常在这里写需要重复执行的代码,比如打印出当前跑的是第几圈。
2025-06-15 10:42:21
341
原创 更深入的推理C++基础教程 更深入的推理
闰年可以分为两种,一种是普通闰年,就是公历年份是4的倍数,且不是100的倍数的,为普通闰年(如2004年、2020年等);“逻辑非”运算其实是把bool类型的变量当做一个灯的开关:如果灯是开(true)着的,你按一下开关(逻辑非操作)灯就关(false)了;相反,如果等原来是关(false)着的,你按一下开关(逻辑非操作)灯就开(true)了。只有当它两边的值都为 true 的时候,整个表达式的结果才是 true,其余情况的结果都是false。只有它两边的值都为false,整个表达式的结果才为false;
2025-06-15 10:41:13
1478
原创 让计算机学会推理C++基础教程 让计算机学会推理
甲乙两个人在公园相遇,甲说我今年n岁了(n是一个两位的整数,个位和十位不相等),乙说,太巧了,你的年龄倒过来,就是我的年龄,请问两个人谁的年龄更大, 请输出那个更大的年龄?从键盘读入一个三位整数,判断这个三位整数是否是对称数(对称数指的是,这个数正过来和倒过来是同一个数,比如:121、686、808等数都是对称数),如果是对称数,则输出“Y”,否则输出“N”。(2)如果score小于60(即score >= 60的比较结果为假),程序会执行else块中的代码,输出“很遗憾,你没有通过这门课程。
2025-06-15 10:40:13
475
原创 数据的存储——变量2C++基础教程 数据的存储——变量2
我们可以把变量看做装了水的瓶子,那这个问题就转换成如何交换两个瓶子里的水。最后,借来瓶子中的水倒入第二个瓶子中(还有别忘了把瓶子还给你的朋友)。因为我们是十进制的整数n,所以除以10的余数就是个位,商就是去掉个位以后的数值。另外这段代码直接修改了n的值,如果后面还需要用到n的值那么显然是不恰当的。123%10结果是3, 123/10的结果是12,即去掉个位以后的值。系统会用a的值赋为变量c赋值,这个过程中变量a的值是不会改变的。对于int类型变量有个非常特别的性质:当两个整数做除法的时候得到的结果是商。
2025-06-15 10:18:46
333
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅