- 博客(348)
- 收藏
- 关注
原创 【基础】数字的组合c++
比如:有3个数1 1 1,要组合出2,那么有3个方案,分别是选第1、2个数,选第1、3个数,选第2、3个数。给定N个正整数A1,A2,…,AN,从中选出若干个数,使它们的和为M,求有多少种选择方案。包含一个整数,表示可选方案数(本题的计算结果一定在int范围内)。注意:选择不同位置的,但值相同的数,认为是不同的方案。第二行包含N个整数,表示A1,A2,…第一行包含两个整数N和M。
2025-02-16 20:39:48
174
原创 【基础】集合 Subset Sums USACO c++
对于从 1∼n 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。{3} 和 {1,2} 是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数){1,6,7} 和 {2,3,4,5}{2,5,7} 和 {1,3,4,6}{3,4,7} 和 {1,2,5,6}{1,2,4,7} 和 {3,5,6}给出n,你的程序应该输出划分方案总数。输入文件只有一行,且只有一个整数 n。对于100% 的数据,1≤n≤39。USACO 背包 递推。
2025-02-16 20:27:48
190
原创 【基础】装箱问题c++
有一个箱子容量为V(正整数,0≤V≤200000 ),同时有n个物品( 0<n≤30 ),每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。接下来 n 行,分别表示这 n个物品的各自体积;1 个整数,表示箱子剩余空间。1个整数,表示有 n个物品;1 个整数,表示箱子容量;
2025-02-16 20:24:11
244
原创 【基础】小明买书c++
新的学习开始了,小明来到书店采购辅导书。小明有M元,书店有N种不同的书,第i种书卖Ai元,假设小明每种书最多最能买1本,请问小明有多少种不同的买书方案?第一行有两个整数N和M。输出一个整数,代表买书的方案数(请注意:本题的计算结果可能会超过int)第二行有N个整数ai(1<=ai<=1000)。
2025-02-05 19:34:24
240
原创 【提高】防御迷阵c++
而第1行的m个房间有m扇向外打开的门,是迷阵的入口。除了第1行和第n的房间外,每个房间都安装了激光杀伤装置,将会对进入房间的人造成一定的伤害。(第1行和第n行的a值全部为0)。现在士兵打算以最小伤害代价通过迷阵,显然,他们可以选择任意多的人从任意的门进入,但必须到达第n行的房间。一个士兵受到的伤害值为他在经过的路径上所有房间的伤害值中的最大值。现在,士兵们掌握了迷阵的情况,他们需要提前知道怎么安排士兵的行进路线可以使得伤害值最小。接下来n行,每行m个数,第i行第j列的数表示a[i,j]。
2025-01-23 14:36:00
290
原创 【基础】最小的空旷指数c++
请注意,公路的起点和终点保证已设有路标,公路的长度为整数,并且原有路标和新设路标都必须距起点整数个单位距离。A市和B市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离。公路原来只在起点和终点处有两个路标,现在允许新增一个路标,应该把新路标设在距起点50或51个单位距离处,这样能达到最小的空旷指数51。第1行包括三个数L、N、K,分别表示公路的长度,原有路标的数量,以及最多可增设的路标数量。
2025-01-23 14:32:00
178
原创 【基础】愤怒的奶牛 USACO c++
他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒。为了防止牛之间的互相打斗,Farmer John想把这些牛安置在指定的隔间,所有牛中相邻两头的最近距离越大越好。Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,…,xN (0<=xi<=1,000,000,000)。第2~N+1行:每行一个整数,表示每个隔间的坐标。输出只有一行,即相邻两头牛最大的最近距离。第1行:两个用空格隔开的数字N和C。
2025-01-23 14:28:12
328
原创 【提高】跳石头c++
接下来 N 行,每行一个整数,第 i 行的整数 Di( 0 < Di < L), 表示第 i 块岩石与起点的距离。输入输出样例1说明:将与起点距离为 2 和 14 的两个岩石移走后,最短的跳跃距离为 4 (从与起点距离 17 的岩石跳到距离 21 的岩石,或者从距离 21 的岩石跳到终点)。第一行包含三个整数 L,N,M ,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。对于 100% 的数据, 0≤M≤N≤50,000,1≤L≤1,000,000,000。
2025-01-23 14:25:43
360
原创 【基础】伐木工c++
例如,如果一行树的高度分别为20,15,10和17,米尔科把锯片升到15米的高度,切割后树木剩下的高度将是15,15,10和15,而米尔科将从第1棵树得到5米,从第4棵树得到2米,共得到7米木材。米尔科的伐木机工作过程如下:米尔科设置一个高度参数H(米),伐木机升起一个巨大的锯片到高度H,并锯掉所有的树比H高的部分(当然,树木不高于H米的部分保持不变)。第1行:2个整数N和M,N表示树木的数量(1<=N<=106),M表示需要的木材总长度(1<=M<=2 * 109)1个整数,表示砍树的最高高度。
2025-01-23 14:23:45
201
原创 二分查找c++总集 (二分查找、二分查找左侧边界、二分查找右侧边界、二分查找满足条件的数、起止位置、同时出现的数、最满意的方案)
比如有6个数,分别是:1 2 2 2 6 6,那么如果要求3个数:5 8 2,在数组中找到第1个大于或等于他们的位置,答案是:5 -1 2。比如有6个数,分别是:1 2 2 2 3 3,那么如果要求3个数:3 2 5,在数组中第一次出现的位置,答案是:5 2 -1。请在一个有序不递减的数组中(数组中的值有相等的值),采用二分查找,找到第1个大于或等于元素x的位置,如果不存在,请输出-1。请在一个有序不递减的数组中(数组中的值有相等的值),采用二分查找,找到最后1次出现值x的位置,如果不存在x请输出-1。
2025-01-14 16:12:12
781
原创 【基础】最满意的方案c++
根据n位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分嘛),这个最小值为不满意度。现有m(m≤100000)所学校,每所学校预计分数线是ai(ai≤106)。有 n(n≤100000)位学生,估分分别为 bi(bi≤106)。m表示学校数,n表示学生数。第二行共有m个数,表示m个学校的预计录取分数。第三行有n个数,表示n个学生的估分成绩。高考结束了,同学们要开始了紧张的填写志愿的过程,大家希望找一个自己最满意的大学填报方案,请你编程帮忙实现。
2025-01-14 15:56:37
185
原创 【基础】同时出现的数c++
Medusa同学拿到了2组数字,老师请你编程帮他找出,第2组数中的哪些数,在第1组数中出现了,从小到大输出所有满足条件的数。对于100%的数据1≤n,m≤100000,每个数<=2x109。对于60%的数据1≤n,m≤1000,每个数<=2x109。按照要求输出满足条件的数,数与数之间用空格隔开。第一行两个整数n和m,分别代表2组数的数量。第2组数有:9 6 8 3 3 2 10。第1组数有:8 7 9 8 2 6 3。那么应该输出:2 3 3 6 8 9。
2025-01-14 15:53:44
150
原创 【基础】同时出现的数c++
Medusa同学拿到了2组数字,老师请你编程帮他找出,第2组数中的哪些数,在第1组数中出现了,从小到大输出所有满足条件的数。对于100%的数据1≤n,m≤100000,每个数
2025-01-14 15:50:51
98
原创 【入门】起止位置c++
王老师想要查询,年龄为x的同学,在队伍中首次出现的位置和最后一次出现的位置;如果队伍中不存在年龄为x的同学,请输出-1。请注意:本题中王老师查询年龄x出现的起止位置,并不是查询了1次,而是查询了q次。共q行,每行包含两个整数,表示所求年龄在队伍中的起始位置和终止位置。年龄为8的同学首次和最后一次出现的位置分别是:-1 -1;年龄为2的同学首次和最后一次出现的位置分别是:2 4;年龄为1的同学首次和最后一次出现的位置分别是:1 1;年龄为3的同学首次和最后一次出现的位置分别是:5 6;
2025-01-14 15:49:25
219
原创 【入门】二分查找满足条件的数c++
比如有6个数,分别是:1 2 2 2 6 6,那么如果要求3个数:5 8 2,在数组中找到第1个大于或等于他们的位置,答案是:5 -1 2。请在一个有序不递减的数组中(数组中的值有相等的值),采用二分查找,找到第1个大于或等于元素x的位置,如果不存在,请输出-1。第二行,n个整数,用空格隔开,代表数组的n个元素(1<=数组元素的值<=108)请注意:本题要求出q个x,每个x在数组找到第1个大于或等于x的元素的位置。第四行,q个整数,用空格隔开,代表查询的数(1<=要找的数<=10 8 )
2025-01-14 15:45:35
141
原创 【入门】二分查找右侧边界c++
比如有6个数,分别是:1 2 2 2 3 3,那么如果要求3个数:3 2 5,在数组中最后一次出现的位置,答案是:6 4 -1。请在一个有序不递减的数组中(数组中的值有相等的值),采用二分查找,找到最后1次出现值x的位置,如果不存在x请输出-1。第二行,n个整数,用空格隔开,代表数组的n个元素(1<=数组元素的值<=108)第四行,q个整数,用空格隔开,代表要找的数(1<=要找的数<=10 8 )第三行,一个整数q,代表有要求出q个数最后一次出现的位置(q<=105)按题意输出位置或者-1。
2025-01-14 15:41:37
127
原创 【入门】二分查找左侧边界c++
比如有6个数,分别是:1 2 2 2 3 3,那么如果要求3个数:3 2 5,在数组中第一次出现的位置,答案是:5 2 -1。请在一个有序不递减的数组中(数组中有相等的值),采用二分查找,找到值x 第1次出现 的位置,如果不存在x请输出-1。输出1行,含q个整数,按题意输出要找的每个数在数组中首次出现的位置,如果不存在这样的数,请输出-1。第二行,n个整数,用空格隔开,代表数组的n个元素(1<=数组元素的值<=108)第四行,q个整数,用空格隔开,代表要找的数(1<=要找的数<=108)
2025-01-14 15:38:30
257
原创 【入门】二分查找c++
请在一个有序递增数组中(不存在相同元素),采用二分查找,找出值x的位置,如果x在数组中不存在,请输出-1!第二行,n个数,代表数组的n个递增元素(1<=数组元素值<=108)第一行,一个整数n,代表数组元素个数(n <= 106)第三行,一个整数x,代表要查找的数(0<=x<=108)请尝试采用递归和非递归两种方式来实现二分查找。x在数组中的位置,或者-1。
2025-01-14 15:35:06
332
原创 【基础】多重背包(1)c++
接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。第i种物品最多有si件,每件体积是vi,价值是wi。有N种物品和一个容量是V的背包。输出一个整数,代表最大价值。
2024-12-27 20:25:31
186
原创 【基础】修路c++
输入包含若干组测试数据,每组测试数据的第一行给出两个用空格隔开的正整数,分别是城镇数目n和道路数目m(输入n=0表示测试数据结束);随后的m行对应m条道路,每行给出一对用空格隔开的正整数,分别是该条道路直接相连的两个城镇的编号。简单起见,城镇从1到n编号。某市调查城镇交通状况,得到现有城镇道路统计表。表中列出了每条道路直接连通的城镇。市政府 “村村通工程” 的目标是使全市任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要相互之间可达即可)。对于 100% 的数据,保证 1≤n<1000。
2024-12-20 18:44:44
185
原创 【提高】最长上升子序列LIS(2)c++
给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。1≤N≤100000,−109≤数列中的数≤109。第二行包含N个整数,表示完整序列。输出一个整数,表示最大长度。
2024-12-13 18:41:32
240
原创 【提高】混合背包c++
接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。si>0 表示第 i 种物品可以使用 si 次;第三类物品最多只能用 si 次(多重背包);si=−1 表示第 i 种物品只能用1次;si=0 表示第 i 种物品可以用无限次;第一类物品只能用1次(01背包);每种体积是 vi,价值是 wi。输出一个整数,表示最大价值。
2024-12-12 21:24:42
267
原创 【提高】多重背包(2)c++题解
接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。第i种物品最多有si件,每件体积是vi,价值是wi。有N种物品和一个容量是V的背包。输出一个整数,表示最大价值。
2024-12-12 21:18:23
214
原创 【基础】采灵芝c++
输入第一行有两个整数T(1 <= T <= 100000)和M(1 <= M <= 2000),用一个空格隔开,T代表总共能够用来采灵芝的时间,M代表岛上灵芝的种类数。接下来的M行每行包括两个在1到10000之间(包括1和10000)的整数,分别表示采摘某种灵芝的时间和这种灵芝的价值。假设岛上有m种不同种类的灵芝,每种灵芝都有无限多个,已知每种灵芝采摘需要的时间,以及这种灵芝的价值;输出一行,这一行只包含一个整数,表示在规定的时间内,可以采到的灵芝的最大总价值。
2024-12-12 21:15:45
198
原创 【基础】奶牛沙盘队 USACO c++
Farmer Han 开始玩飞盘之后,YDS也打算让奶牛们享受飞盘的乐趣.他要组建一只奶牛飞盘队.他的 N ( 1 ≤N≤ 2000 )只奶牛,每只奶牛有一个飞盘水准指数 Ri ( 1 ≤Ri≤ 100000 ).YDS要选出1只或多于1只奶牛来参加他的飞盘队.由于YDS的幸运数字是 F ( 1 ≤F≤ 1000 ),他希望所有奶牛的飞盘水准指数之和是幸运数字的倍数.。帮 YD S算算一共有多少种组队方式.组队方式数模10^8 ^取余的结果.。第1行输入N和F,之后N行输入Ri。
2024-12-12 21:03:55
197
原创 【提高】机器分配c++
总公司拥有高效设备 M 台,准备分给下属的 N 个分公司。各分公司若获得这些设备,可以为国家提供一定的盈利。问:如何分配这 M 台设备才能使国家得到的盈利最大?分配原则:每个公司有权获得任意数目的设备,但总台数不超过设备数 M。接下来N行,每行两个数,用空格隔开,第一个数代表了第i个公司的序号,第二个数代表该公司分得机器的数量。接下来是一个 N*M 的矩阵,表明了第 i 个公司分配j 台机器的盈利。第一行有两个数,第一个数是分公司数 N ,第二个数是设备台数 M。第一行为一个整数,代表最大盈利的值。
2024-12-12 21:02:07
317
原创 【基础】挖地雷的算法c++
在一个地图上有n个地窖(n<=200),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,且保证都是小序号地窖指向大序号地窖,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。设计一个挖地雷的方案,使他能挖到最多的地雷。如下图所示:圆圈内的1 2 3 4 5 6,代表6个地窖的编号,地窖编号旁边的数字代表这个地窖地雷的数量!第一行输出挖地雷的地窖编号的顺序:k1-k2-…第二行输出一个整数,代表最多能挖到的地雷的数量。第一行:地窖的个数;
2024-12-12 20:49:56
304
原创 【提高】房屋积水c++
乌龟的屋顶由顺次排在同一水平线上的 n 个宽度为 1、高度为整数 (分别给出) 的瓦片组成。例如给定n = 5,瓦片的高度分别为 4, 2, 3, 5, 1,屋顶可以画在下图所示的网格中,灰色格子为瓦片。为了知道屋顶是否会在暴雨后塌掉,他把屋顶的形 状给了你,希望你帮他计算暴雨后屋顶的积水总量。两个整数 n, R1,表示屋顶的宽度和生成数列的首项。从左向右数第 i ( 1<=i<=n )个瓦片的高度 ai = Ri mod 10。所以图中波浪线格子在暴雨后会积水,屋顶的积水方格总数为 3。
2024-12-12 20:38:30
331
原创 【提高】传球游戏c++
上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。游戏规则是这样的: n 个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师在此吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目。聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了 m 次以后,又回到小蛮手里。
2024-12-12 20:36:28
420
原创 【提高】简单背包问题c++
有一个背包能装的重量maxw(正整数,0≤maxw≤20000),同时有n件物品(0≤n≤100),每件物品有一个重量wi(正整数)和一个价值pi(正整数)。要求从这n件物品中任取若干件装入背包内,使背包的物品价值最大。第1行:背包最大载重maxw,物品总数n。第2行到第n+1行:每个物品的重量和价值。一个数字即背包内物品最大价值。
2024-12-12 20:33:31
196
原创 【基础】最大部分和(连续部分和)c++
2 13 12 9 14 -10 2 (7个整数)其最大的部分和为 48 (即 13+12+9+14)有n个整数(1≤n≤100),排成一排,例如。第二行n个整数(-100≤xi≤100)一个整数(即最大的连续的部分和)
2024-12-10 18:48:30
230
原创 【入门】跳格子2 c++
地面上有一排长度为n的格子1-n,每个格子上都有一个数xi,开始时你在位置0,每次你可以向前跳1-2格,然后取走格子上的数,直到跳到位置n+1。取走的数的和就是你的得分,现在你想知道你可能的最小得分是多少。一行四个整数n,A,B,C(n≤100000,0≤A,B,C≤10000),其中n表示格子的数量。一行一个整数ans表示可能的最小得分。
2024-12-10 18:46:32
244
原创 【入门】跳格子c++
地面上有一排长度为n的格子1-n,每个格子上都有一个数xi,开始时你在位置0,每次你可以向前跳1-2格,然后取走格子上的数,直到跳到位置n+1。取走的数的和就是你的得分,现在你想知道你可能的最大得分是多少。一行四个整数n,A,B,C(n≤100000,0≤A,B,C≤10000),其中n表示格子的数量。一行一个整数ans表示可能的最大得分。
2024-12-10 18:44:39
310
原创 【入门】前缀最大值c++
对于每个位置的前缀最大值解释如下:对于第1个数666,只有一个数,一定最大;比如,有数列:666 304 692 188 596,前缀最大值为:666 666 692 692 692,和为3408。数列为{666,304,692,188,596},前缀最大值为{666,666,692,692,692},和为3408。即:给出长度为n的数列a[i],求出对于所有1<=i<=n,max(a[1],a[2],…其中a[1]=x,a[i]=(379*a[i-1]+131)%997。求一个数列的所有前缀最大值之和。
2024-12-09 19:13:19
255
原创 【基础】奇怪的电梯c++
大楼的每一层楼都可以停电梯,而且第 i 层楼 (1≤i≤N) 上有一个数字 Ki(0≤Ki≤N)。电梯只有四个按钮:开,关,上,下。当然,如果不能满足要求,相应的按钮就会失灵。例如: 3,3,1,2,5 代表了 Ki(K1=3,K2=3,…) ,从 1 楼开始。在 1 楼,按“上”可以到 4 楼,按“下”是不起作用的,因为没有 −2 楼。第一行为 3 个用空格隔开的正整数,表示 N,A,B(1≤N≤200, 1≤A,B≤N)。一行,即最少按键次数,若无法到达,则输出 -1。
2024-12-09 18:39:27
263
C++数据结构算法题集
2024-11-24
教育领域贪心算法的学生讲义-C++编程实例解析与应用
2024-10-20
C++分治算法在学生讲义的应用解析
2024-10-20
C++编程教学:基于字符数组操作的文本反转与特定词组输出技术讲解
2024-10-19
C++ vector 向量基础及应用教程
2024-10-19
C++课程:输入流运算符及实践应用-计算器项目
2024-10-18
C++编程教育:绘制图形与九九乘法表的实现
2024-10-18
【基础】摘花生问题(2)
2024-11-27
【基础】小 X 与位运算(bignum)
2024-11-24
【基础】二进制转十六进制
2024-11-23
【入门】十六进制转十进制c++
2024-11-21
【入门】正整数n转换为16进制
2024-11-21
【基础】找最长单词c++怎么写
2024-11-19
【基础】字符串连接怎么做
2024-11-19
【入门】大小写转换-2 c++
2024-11-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人