登录社区云,与社区用户共同成长
邀请您加入社区
问题描述一年一度的"跳石头"比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 NN 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点
NOIP普及组1995年-2018(珍藏)
第一行是一个整数 n,接下来 n 行每行是 2 个整数 ai,bi (ai<bi),表示比赛开始、结束的时间。由于 yyy 是蒟蒻,如果要参加一个比赛必须善始善终,而且不能同时参加 2 个及以上的比赛。现在各大 oj 上有 n 个比赛,每个比赛的开始、结束的时间点是知道的。yyy 认为,参加越多的比赛,noip 就能考的越好(假的)。所以,他想知道他最多能参加几个比赛。一个整数最多参加的比
小凯的疑惑题目描述小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。输入描述输入数据仅一行,包含两个正整数 aa 和 bb,它们之间用一个空格隔开,表示小凯手中金币的面值。其中,1≤a,b≤1091≤
现在已知 n 个苹果到达地上的高度 xi,椅子的高度 a,陶陶手伸直的最大长度 b,陶陶所剩的力气 s,陶陶摘一个苹果需要的力气 yi,求陶陶最多能摘到多少个苹果。陶陶又跑去摘苹果,这次他有一个 a 公分的椅子。对于 100% 的数据,n≤5000, a≤50, b≤200, s≤1000, xi≤280, yi≤100。第 3 行~第 3+n−1 行:每行两个数 苹果高度 xi,摘这个
P1308 [NOIP 2011 普及组] 统计单词数。
【代码】题海拾贝:P1091 [NOIP 2004 提高组] 合唱队形。
【代码】P1094 [NOIP 2007 普及组] 纪念品分组。
龙虎斗题目描述轩轩和凯凯正在玩一款叫《龙虎斗》的游戏,游戏的棋盘是一条线段,线段上有 nn 个兵营(自左至右编号 1 ~ nn),相邻编号的兵营之间相隔 1 厘米,即棋盘为长度为 nn − 1 厘米的线段。ii 号兵营里有 cici 位工兵。下图为 nn = 6 的输入描述轩轩在左侧,代表"龙";凯凯在右侧,代表"虎"。 他们以 mm 号兵营作为分界,靠左的工兵属于龙势力,靠右的工兵属于虎势力
为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。100% 的数据满足:1≤n≤3×104,80≤w≤200,5≤Pi≤w。第一行包括一个整
NOIP提高组 2006年-2018年(珍藏)
剩下的很显然,计算同一个矩形中两点间的“高速公路”的边权并记录,计算不同矩形的两点间的“航线”的边权并记录,跑 floyd 即可,最后枚举起点与终点的状态。但是由于题目只给出了矩形的三个顶点的坐标,第四个顶点应该自己计算。声明:为了提高代码可读性,此代码采用了 AI 重构。个点,考虑用邻接表、floyd 算法解决此题。一种很显然的做法,注意到数据规模。种不同的状态(矩形的四个顶点)。考虑拆点,拆点
文章摘要:本文主要介绍了栈和队列的基本概念及其操作。栈是一种遵循“先进后出”原则的数据结构,操作包括入栈、出栈、显示栈顶元素等。通过示例展示了栈的操作过程,并提出了相关问题。队列则是一种“先进先出”的数据结构,操作包括入队、出队、获取队首元素等。文章通过多个编程题目进一步讲解了队列的实现和应用,如模拟舞会配对、破解密码等。最后,文章列出了课后作业题目,供读者进一步练习和巩固所学知识。
第二堆纸牌数量为7,于10相差3,那么第三堆纸牌(17)给第二堆纸牌(7)三张牌,第二堆纸牌数量变为10,符合标准,第三堆纸牌数量变为14。第一堆纸牌数量为9,于10相差1,那么第二堆纸牌(8)给第一堆纸牌(9)一张牌,第一堆纸牌数量变为10,符合标准,第二堆纸牌数量变为7。第三堆纸牌数量为14,于10相差4,那么第三堆纸牌(14)给第四堆纸牌(6)四张牌,第三,四堆纸牌数量都变为10,符合标准。
现在有 n 堆果子,每堆果子的重量为 ai,你要进行 n−1 次合并。每次合并会把两堆果子合并成一堆果子,合并需要花费的体力为这两堆果子的重量之和,合并后果子的重量也为这两堆果子的重量之和。现在让你求出 n−1 次合并花费的最小总体力。
第四章:递归算法
表示阶乘,定义为 n!用高精度计算出 S=1!对于 100% 的数据,1≤n≤50。一个正整数 S,表示计算结果。
苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到12
玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。用*表示地雷格,用周围的地雷个数表示非地雷格。注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。现在给出n行m列的雷区中的地
但是明显不是最优的,用脑子想了一下,发现 dp[2][j](j>6)=20,这个 20 怎么来的呢,当然是从前一个状态来的(注意这里就可以分为两种情况了):一种是选择第二个物品放入,另一种还是选择前面的物品;接着 i=2 放两个物品,求的就是 dp[2][j] 了,当 j<5 的时候,是不是同样的 dp[2][j](j<5) 等于0;到这里就可以了,依次类推,动态转移方程为:dp[i][j]=ma
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。数轴上的每个整数点,即0,1,2,. . . . . .,L,都种有一棵树。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。第一行有两个整数L(1<=L<=10000)和 M(1<=M<=100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的行,每行包含两个不同的整数,用一个空格隔
【代码】P1008 [NOIP 1998 普及组] 三连击题解。
我太蒻了,膜拜大佬 @。
NOIP2016 提高组 D2T1。
模拟,顾名思义,就是题目中给出一个流程,然后你写出一份代码进行模拟,实现这个流程。它一般是比赛中的签到送分题,但是模拟一定要注意细节,千万要读懂题目中的意思!模拟通常需要一定的代码能力,它码量大,操作多且思路繁琐,需要多多练习。(因为循环清空不彻底,考场代码挂了30分.......)、模拟算法是一个非常经典的算法,是所有人学习的第一个算法。再枚举每一次出拳两人的胜负结果,统计得分,得出答案。十分小
当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。第 3 行有 n−1 个数(0 或 1),表示第一个地窖至第 2 个、第 3 个 …如第 3 行为 11000⋯0,则表示第 1 个地窖至第 2 个地窖有路径,至第 3 个地窖有路径,至第 4 个地窖、第 5 个 …第 n+1 行有 1 个数,表示第 n−1 个地窖
大致思路:考虑数组a[n],在读入n个数字后先遍历得到n个数字中最小的数a[min],那便是[1,n]的次数,加到累加器count里,将每个数都减去a[min]得到新数组,再把旧数组分割为两个新数组(不包括a[min])重复上述操作知道该数组里的元素都变为0。春春每天可以选择一段连续区间 [L,R] ,填充这段区间中的每块区域,让其下陷深度减少 1。一种可行的最佳方案是,依次选择: [1,6]、[
某次科研调查时得到了 n 个自然数,每个数均不超过 1.5×109。已知不相同的数不超过 104 个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。会自动按照键(即自然数)从小到大的顺序排序,我们只需遍历输入的自然数,统计每个数出现的次数,最后按顺序输出结果即可。共 m 行(m 为 n 个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出 2 个整数,
在搜索的过程中,如果搜索树中有很多重复的结点,此时可以通过⼀个 "备忘录",记录第⼀次搜索到的结果。当下⼀次搜索到这个结点时,直接在 "备忘录" ⾥⾯找结果。其中,搜索树中的。在⽤记忆化搜索解决斐波那契问题时,如果关注 "备忘录" 的填写过程,会发现它是从左往右依次填写 的。当 位置前⾯的格⼦填写完毕之后,就可以根据格⼦⾥⾯的值计算出 位置的值。动态规划(Dynamic Programming,简
是 C++ STL(Standard Template Library)中提供的一种非常有用的算法,用于生成给定序列的下一个字典序排列。字典序排列是指按照某种顺序(通常是从小到大)对序列进行排列,就像字典中单词的排列顺序一样。例如,对于序列[1, 2, 3],其字典序排列依次为[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 1, 2]和[3, 2, 1]。函数的作用
的过程中遇到负数,那么加上这条边就会使答案不是最大的,也就意味着算上有环的边的答案不可能是最大的,除非只能跟原来的环有公共边。没错,通过以上的推论,我们会惊奇的发现,有了这个环,会让我们在巡逻的过程中只走过一次这些边 (这些边指环上的边)。,相当于要用不是环上的边抵消环上的边。根据我们的前置知识,dfs 的做法遇到负边权就会 GG,所以这里我们用 dp 的做法,前面因为要求路径,所以用 dfs 的
对于kruskal的讲解
共有 4205 个文件,5622 个文件夹。次数刚好跟 CSP 一致(,这次没有 pascal 选手。我现在很迷惑,T1 到底怎么写?好难,太菜了,不会,qaq。照例,一些统计,使用。三份代码贡献了一半的。救救我,CCF 先生!
中国计算机学会(CCF)
并查集学习笔记。
快速幂
本文对国王游戏题目进行了解题思路详细分析与贪心算法的常用证明方法,并给出了题解的完整c++代码,同时在蓝桥杯和洛谷解题平台提交了代码,验证了代码正确性。
就从可能走到这个位置上的所有点转移过来,取一个最小值,不过如果是从下面飞上来的话答案需要再加一。所以,本蒟蒻就用了一个简简单单轻轻松松就能理解的小 dp。因此,我们只需要分成四种情况讨论即可,每走到一个位置。作为一名蒟蒻,默默地展开了算法标签,发现是 dp。那么小鸟还可能从某个点向下掉,同上。呢(假设地图无边界限制)?所使用的最小屏幕点击数。那我们可以从哪些坐标走到。小鸟从某个点向上飞到了。
如果孩子在数学竞赛(如奥数)中表现优异,尤其是擅长逻辑推理、数论、组合数学等内容,那么学习C++和算法会更容易上手。编程需要耐心和持续的热情。如果孩子喜欢解决问题、愿意花时间调试代码,甚至在课余时间主动研究编程项目,那么信奥赛会是一个适合的发展方向。因此,孩子是否适合信奥赛,不仅要看逻辑思维,还要评估其编程实践潜力。则是机考,要求考生在NOI Linux 2.0系统下完成四道程序设计大题,满分40
排序处理:将石头高度升序排列(a[1]到a[n]方便后续用双指针选择最高和最低的石头双指针策略:l指针初始指向最低石头(a[1]h指针初始指向最高石头(a[n]跳跃逻辑:第一跳特殊处理:从地面(0)跳到最高石头l++;h--;// 移动指针边界处理:当石头数量为奇数时,最后一个石头会自动被处理使用确保所有石头都被访问。
扩展欧几里得算法
数论算法
【代码】CSP CCF 201412-2 Z字形扫描 C++满分题解。
刷题是提升信息学竞赛能力的有效途径,也是其他奥林匹克竞赛学科常用的训练方法。选择高质量的在线刷题平台,针对不同类型的题目进行针对性练习。注重总结解题方法和技巧,建立错题本和知识点总结笔记。分析题目背后的算法思想和数据结构,提高问题分析和解决能力。同时,学习其他竞赛学科的解题策略,优化自己的解题方法。信息学奥林匹克竞赛作为奥林匹克竞赛体系中的重要组成部分,为学生提供了一个展示才华、挑战自我的国际平台
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。
一个 n 行 n 列的螺旋矩阵可由如下方法生成:从矩阵的左上角(第 1 行第 1 列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入 1,2,3,…,n2,便构成了一个螺旋矩阵。
P1000 超级玛丽游戏## 题目背景本题是洛谷的试机题目,可以帮助了解洛谷的使用。建议完成本题目后继续尝试 [P1001](/problem/P1001)、[P1008](/problem/P1008)。另外强烈推荐[新用户必读帖](/discuss/show/241461)。## 题目描述超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。```********####.
ALC温馨提示抄代码是不好的习惯qaq输入两个正整数x0,y0,求出满足下列条件的PQPQ是正整数。要求 P,Q 以x0为最大公约数,以y0为最小公倍数。试求:满足条件的所有可能的PQ的个数。
1.结构体定义:Contest 存储比赛的开始和结束时间。2.排序规则:按 end 升序排序,确保优先选择结束早的比赛。3.贪心选择:- 如果当前比赛的开始时间 ≥ last_end,则选择该比赛。- 更新 last_end 为当前比赛的结束时间。4.输出结果:count 记录最多能参加的比赛数量。
1.排序:确保可以贪心地用最小和最大的价格尝试配对。2.双指针:- i 和 j 分别指向最小和最大价格。- 如果 P[i] + P[j] ≤ w,则这两个可以成组。- 否则,P[j] 必须单独成组。3.计数:每次循环处理至少一个纪念品,count 记录分组数。