传智杯
文章平均质量分 60
传智杯比赛
594h2
努力成为合格的程序员
展开
-
传智杯 第六届-复赛-第二场-C
小红有一个长度为 n 的字符串 s,仅包含小写字母,小红可以选出 k 个字符,组成一个新的字符串 t,对于 t 的每一个字符 ti,如果 ti在 t中出现的次数为 y,则小红会获得 y的分数,现在小红想知道,她最多能获得多少分。所以我们在输入的时候就记录下每个字符出现的次数,然后将这些次数按照从大到小的顺序进行排序,这样就可以依次得到出现次数最大的字符。小红选出 "acc",第一个字符获得 1 分,第二个字符获得 2 分,第三个字符获得 2 分,一共获得 5 分。输出一个整数,表示小红最多能获得的分数。原创 2024-11-06 16:03:19 · 413 阅读 · 0 评论 -
传智杯 第六届-复赛-第二场-B
小红拿到了一个字符串,她可以操作最多1次:修改任意一个字符。小红希望操作结束后,长度为3的回文连续子串的数量尽可能多。由于字符串的长度很小,可以直接依次更改每个字符,分别更改为上上个字符和下下个字符,然后分别判断每次更改后可以组成多少个回文子串。一个整数,代表操作结束后,长度为3的回文连续子串的数量的最大值。①更改后需要对更改的字符复原,才能进行下一次更改。一个仅包含小写字母的字符串。原创 2024-11-06 14:16:47 · 240 阅读 · 0 评论 -
传智杯 第六届-复赛-第二场-A
小红每天都会称体重,连续称n天。从第二天开始,如果有一天体重不小于a,且前一天的体重小于a,那么小红这天就会不开心。小红想知道,她一共会有多少天不开心?第一行输入两个正整数n,a;第二行输入nnn个正整数xix_ixi,代表每天的体重。(2≤n≤100,1≤a≤100,1≤xi≤100)每次在输入的时候就判断是否上一次的体重小于目标体重,并且这一次的体重大于等于目标体重,如果是则天数加一,否则不进行任何操作。一个整数,代表不开心的天数。只有第三天会不开心。原创 2024-11-05 19:10:16 · 242 阅读 · 0 评论 -
传智杯 第六届-复赛-D
小红定义两个字符串同构,当且仅当对于i∈[1,n],b[i]−a[i]i∈[1,n],b[i]-a[i]i∈[1,n],b[i]−a[i]是定值。③计算同构的情况:同构情况就是某种位置上的字符不同就对应1种情况,计算同构情况就是计算在该位置上可以取多少个元素,即25-(最大元素-最小元素)①计算total的时候,可能会出现超出字符长度的情况,所以需要提前对其进行取模的操作,而不是最后才进行取模的操作。输入一个仅由英文小写字母组成的字符串,代表字符串a。一个整数,代表合法的字符串b的数量。原创 2024-11-01 12:55:02 · 319 阅读 · 0 评论 -
传智杯 第六届-复赛-C
②将各个整数所有小于最小正整数的因子所对应的数组进行++:先创建一个数组用于存储该下标i可以是多少个正整数的因子,其中该数组的个数应该为最小整数+1个;小红有一个数组,她每次可以选择数组的一个元素 xxx ,将这个元素分成两个元素 aaa 和 bbb ,使得 a+b=xa+b=xa+b=x。当整数的个数过大的时候,也将会导致计算b的次数过大,所以最终就会导致运算超时。③找到最大共同的因子:即数组b中的数组下标j对应的值为n,这个最大的公共因子就是j。输出一个整数表示答案。原创 2024-10-31 16:46:31 · 579 阅读 · 0 评论 -
传智杯 第六届-复赛-B
第一行输入一个正整数n,代表商品的总数量。第二行输入n个正整数ai,代表每个商品的型号。保证至少有一个赝品。保证真品的出现次数不少于2次。(3≤n≤10^5,1≤ai≤10^9)有一批型号相同的商品中混入了若干个型号不同的赝品,请你找出这些赝品并将它们按型号从小到大输出。保证每个赝品的型号只出现了一次。第一行输出一个正整数k,代表赝品的数量。第二行输出kkk个正整数ai,代表每个赝品的型号。②找到正品的编号(利用双层循环查找存在两个编号相同的即为正品)③找到所有的赝品编号。原创 2024-10-31 14:43:45 · 295 阅读 · 0 评论 -
传智杯 第六届-复赛-A
先判断字符串能否被劈开,如果不行就输出“-1”,如果可以就将字符串按照顺序进行输出,并在特定位置在输出一次空格即可。小红拿到了一个字符串,她准备把这个字符串劈成两部分,使得第一部分的长度恰好是第二部分的两倍。如果无解,请输出-1;否则输出两个字符串,用空格隔开,代表劈完了的字符串。一个仅由小写字母组成的字符串,长度不超过10^5。原创 2024-10-30 18:25:25 · 239 阅读 · 0 评论 -
传智杯 第六届-第二场-F
先将输入的数据进行排序,从i=0开始搜索,找到第一个能满足sum<=k的最大的次数的左边坐标j,然后i++后开始检索下一个能满足要求的最左边的j,这样就分别找到了能满足要求的以各个最小的数据为开头的区间,并可以得到各个区间中的最大的次数。小红拿到了一个长度为 n 的数组。她每次操作可以让某个数加 1 或者某个数减 1。她希望操作结束后,该数组出现次数最多的元素次数尽可能多。①在判断之前需要先进行总体的判断,判断是否所有的数据都可以满足要求。不超过 k 次操作之后,数组中可能出现最多次数元素的次数。原创 2024-10-29 22:32:40 · 406 阅读 · 0 评论 -
传智杯 第六届—第二场—E
这道题很简单,不用思考复杂了,最开始以为是需要将两个向量随机按照比例进行组合,从而来构成一个新向量,再判断构成的新向量是否与目标向量平行。但是题目中的相加仅仅就只是相加并且比例为1:1,又由于n的个数<1000,所以使用枚举法,两个for循环就可以解决。给定n个向量的起点和终点x1,y1,x2,y2,再给出一个目标向量,求能否由n个向量中的两个相加构造出一个与目标向量平行的向量。第一行给定一个整数n,接下来n行每行四个整数x1,y1,x2,y2,表示第i个向量的起点和终点。1号向量与3号向量相加。原创 2024-10-22 18:30:21 · 303 阅读 · 0 评论 -
传智杯 第六届—第二场—D
设置一个二维数组,每个一维数组代表在第i个正整数出现过后,会有的和的所有情况,相较于上次(即上个正整数),这次和的情况为上次的两倍,分别是在之前的情况下再分别加x和不加x的两种情况,并将这所有的情况都存储在该正整数所对应的数组中,再下次的情况又*2。所以最终的情况将是2^n,当n很大的时候,这个值将非常的大,所以会导致运行超时。将上一个一维数组的值+这次的正整数的值所得到的新值写到取余过后的正确位置,并将其与上次的值进行比较,取更大的值,并保存在数组中,直到最后一次计算结束,就可以得到取余为0的最大值。原创 2024-10-21 22:09:25 · 561 阅读 · 0 评论 -
传智杯 第六届—第二场—C
本题的解题思路很直接,直接从第一个字符开始遍历,将其与最后一个字符进行从后往前比较,如果相同则将j++,k--,即比较下一组的字符,如果不相同则j退回到原位,k回到最开始比较的上一个位置重新进行比较,比较过程类似于字符串匹配算法中的暴力匹配算法,只不过暴力匹配算法是两个字符串进行比较,而本题是字符串首尾进行比较。当j>=k的时候,就代表有一个回文子串的存在,将这个子串长度和最小的子串长度进行比较,保留最小的长度即可。例如"abcca"的子串有"ab"、"bcca"等,但"aca"则不是它的子串。原创 2024-10-21 16:55:07 · 361 阅读 · 0 评论 -
传智杯 第六届—第二场—B
设置一个空数组,用于记录最终语句的内容,然后依次遍历字符串的所有字符,当被测的这个字符和后面两个字符构成“nya”,那么则代表这三个字符为“喵”,不能将其最终的数组中,否则则代表该字符不属于喵的成分,那么可以将其数组中,然后再检测下一个字符,最终就可以得到所有的语句。小红染上了一种病,她说的每个字的结尾都会带上喵(nya)。①在退出循环的时候需要使用break,而不是continue,因为检测到“nya”了过后则代表小红说的话已经结束了,若使用continue会导致答案错误。请你还原小红说的话喵~原创 2024-10-17 15:21:42 · 353 阅读 · 0 评论 -
传智杯 第六届—第二场—A
将一个字符串str的内容颠倒过来,并输出。如:输入“I am a student”,输出“tneduts a ma I”。保证字符串长度不超过100。利用getline()函数将字符串(包含空格进行输入),然后将其写入数组中并获得其字符的个数,然后从i=number进行逆序输出。输入一个仅包含空格和英文字母的字符串str,长度不超过10000。原创 2024-10-17 14:49:42 · 316 阅读 · 0 评论 -
传智杯 第六届—F
其从第一个正整数开始遍历,找到这次遍历中第一个未被使用的因子,然后开始遍历第二个正整数,依次查找,最终在找到最后一个正整数的第一个因子过后就会返回一个sum值,然后进行回溯,就会找到最后一个正整数的第二个因子......这样最终就可以得到所以情况下的sum值,并进行比较,就可以得到最小的sum值;但是,kotori有强迫症,她不允许两个不同的正整数取出相同的素因子。③输入:在每次输入正整数的同时,找到该正整数的所有因子,并将其写入数组v[d][i]中,表示存储的是第d个正整数的第i个因子是该因子。原创 2024-10-15 15:26:53 · 598 阅读 · 0 评论 -
传智杯 第六届—E
本题是求字符串中所以的abb序列,我们采用的方法是先将字符串中的所有字符的个数记录下来,分别存储在char_number数组的对应位置,例如字符a的个数存储在char_number[0]的位置。然后依次遍历整个字符串,找到该字符后面所有字符的个数(char_number),当某个字符与该字符不同且其个数>2,那么就会产生以该字符为首的abb序列,其个数为。,然后再将该字符所对应的char_number数-1,代表后面该字符的个数-1,最终循环结束过后,就可以得到所以的序列个数。"abb" 型的子序列个数。原创 2024-10-12 14:36:43 · 696 阅读 · 0 评论 -
传智杯 第六届—D
根据题意,我们可以理解为在染色过程中,无论如何染色,最终结果都是固定的,所以我们假设小红和小紫的染色方法是按照顺序一排一排的进行染色,那么在染色过程中主要会分为四种情况,分别是行列为奇数和偶数的两两组合。若行和列都是奇数,那么总网格数就是奇数,则表明在X个回合后,在X+1的回合,小红会先染色完成,小紫就会没有空间进行染色,从而输掉比赛;而在其他情况下,总网格数均为偶数,则小红会先没有空间进行染色,从而输掉比赛,所以我们只需要判断行列的奇偶情况就可以得到谁会获胜。她们约定,不能有两个相邻的格子有相同的颜色。原创 2024-10-11 14:31:11 · 463 阅读 · 0 评论 -
传智杯 第六届—C
在本题中,需要将b字符串包含的字符在a中都进行删除,所以可以设立两个字符数组,用于存储字符信息,然后利用两个for循环将b中所有的字符在a中查找出来,并进行标记,本次是将查找到的字符替换为‘\\’即\,然后将替换过后的a字符数组中的非\字符提取出来到数组c中,这样就得到了想要的结果。输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如:第一个字符串是"They are students.",第二个字符串是”aeiou"。①本题是将所有b字符串包含的字符在a中都进行删除,不是进行字符串的匹配。原创 2024-10-10 11:27:16 · 953 阅读 · 0 评论 -
传智杯 第六届—B
擂台赛要开始了,现在有 n 名战士,其中第 i 名战士的战斗力为 ai。现在准备从这些战士中挑两名战士进入擂台赛进行对战,由于观众们更喜欢看势均力敌的比赛,所以我们也要挑选两个战斗力尽可能相近的战士进行参赛。本题是想要找出战斗力最小的差,所以需要先将每个战士的战斗力记录下来,我们将每个战士i的战斗力存储在数组下标为i的数组中,并通过两个比较(两次for循环显示超时,所以采用先排序后比较的方法)来得到最小的战斗力差,并存储在min_combat中。原创 2024-10-09 12:35:03 · 596 阅读 · 0 评论 -
传智杯 第六届—A
本题是需要将两个字符串s1和s2拼接在一起并进行输出。由于字符串可以由数组来进行表示,那么我们可以将字符串s1和s2中的内容存入到一个数组中,最后将这个数组进行输出就可以得到两个字符串拼接后的结果。键盘输入两个字符串,将这两个字符串进行拼接后输出。输出两个字符串拼接后的结果。原创 2024-10-08 12:49:27 · 456 阅读 · 0 评论